diff --git a/LanguageServer/pom.xml b/LanguageServer/pom.xml
new file mode 100644
index 0000000..e2d813f
--- /dev/null
+++ b/LanguageServer/pom.xml
@@ -0,0 +1,32 @@
+
+
+ 4.0.0
+
+ org.nittalab
+ LanguageServer
+ 0.1
+
+
+ 21
+ 21
+ UTF-8
+
+
+
+
+ org.eclipse.lsp4j
+ org.eclipse.lsp4j
+ 0.24.0
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.13.0-M2
+ test
+
+
+
+
\ No newline at end of file
diff --git a/LanguageServer/src/main/java/org/nittalab/dtram/languageserver/DTRAMLanguageServer.java b/LanguageServer/src/main/java/org/nittalab/dtram/languageserver/DTRAMLanguageServer.java
new file mode 100644
index 0000000..6f68598
--- /dev/null
+++ b/LanguageServer/src/main/java/org/nittalab/dtram/languageserver/DTRAMLanguageServer.java
@@ -0,0 +1,63 @@
+package org.nittalab.dtram.languageserver;
+
+import org.eclipse.lsp4j.*;
+import org.eclipse.lsp4j.services.*;
+
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.logging.Logger;
+
+public class DTRAMLanguageServer implements LanguageServer, LanguageClientAware {
+ private static final Logger logger = Logger.getLogger(DTRAMLanguageServer.class.getName());
+
+ private final WorkspaceService workspaceService;
+ private final TextDocumentService textDocumentService;
+
+ public DTRAMLanguageServer() {
+ this.workspaceService = new DTRAMWorkspaceService();
+ this.textDocumentService = new DTRAMTextDocumentService();
+ }
+
+ @Override
+ public void connect(LanguageClient client) {
+ }
+
+ @Override
+ public CompletableFuture initialize(InitializeParams params) {
+ ClientInfo clientInfo = params.getClientInfo();
+ logger.info("Connected to: " + clientInfo.getName() + " " + clientInfo.getVersion());
+
+ ServerCapabilities capabilities = new ServerCapabilities();
+
+ /* エディタに補完機能が利用できることを伝える **/
+ CompletionOptions completionOptions = new CompletionOptions();
+ completionOptions.setTriggerCharacters(List.of(".", " ")); // 入力補完を開始する文字
+
+ capabilities.setTextDocumentSync(TextDocumentSyncKind.Full); // ファイルの同期方法を指定(毎回ドキュメント全体を送信してもらう)
+ capabilities.setPositionEncoding(PositionEncodingKind.UTF16); // 文字列符号化方式を指定
+ capabilities.setCompletionProvider(completionOptions);
+
+ InitializeResult result = new InitializeResult(capabilities);
+ return CompletableFuture.completedFuture(result);
+ }
+
+ @Override
+ public CompletableFuture