Claude CodeのLSPを公式マーケットプレイスなしで利用する

Claude CodeのLSPを公式マーケットプレイスなしで利用する

Claude Codeは公式マーケットプレイスからLSPプラグインを導入できるが、利用できない環境もあります。本記事ではローカルにmarketplace.jsonを作成し、strict: falseでLSPサーバー設定を直接記述することで、公式と同等のLSP連携をオフラインで実現する手順を解説しています。
2026.03.21

はじめに

Claude Codeにはプラグインシステムを通じたLSP(Language Server Protocol)連携機能があります。これを有効にすると、Claudeがコード編集後にリアルタイムで診断情報を取得し、型エラーや未定義変数などを即座に検知できるようになります。

公式ドキュメントのWhat Claude gains from code intelligence pluginsの項目では、LSPプラグインによってClaudeは以下の能力を得ると記載されています。

  • 自動診断: Claudeがファイルを編集するたびに、言語サーバーが変更を解析してエラーや警告を自動的に報告します。コンパイラやリンターを実行しなくても、型エラー・未使用インポート・構文エラーなどを検知できます。Claudeがエラーを導入した場合、同じターン内で気づいて修正します。
  • コードナビゲーション: 定義ジャンプ、参照検索、ホバーでの型情報取得、シンボル一覧、実装の検索、コールヒエラルキーの追跡が可能になります。grepベースの検索よりも正確なナビゲーションが得られます。

公式マーケットプレイスのanthropics/claude-plugins-officialでは多数の言語のLSPプラグインが用意されています。

しかし、開発環境の事情によっては公式のマーケットプレイスを利用できない場合もあります。

この記事では、ローカルマーケットプレイスにLSPプラグインを追加して、公式プラグインと同等のLSP連携を実現する方法を解説します。

ローカルマーケットプレイスを作る

マーケットプレイスとプラグインを含む全体の構成は以下の通りです。

.your-claude-marketplace/
├── .claude-plugin/
│   └── marketplace.json
└── plugins/
    └── typescript-lsp/
        └── README.md

ディレクトリ構成は anthropics/claude-plugins-official をそのままコピーするような形にしています。

.your-claude-marketplaceは追加されたマーケットプレイスであることがわかるディレクトリ名であれば、どういった名前でも問題ありません。

今回のローカルマーケットプレイスを作るという条件下ではチームメンバーと作ったマーケットプレイスを共有したいはずなので、gitのリポジトリ内にコミットすることを前提としています。

marketplace.json

{
  "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
  "name": "project-plugins",
  "description": "Offline plugins",
  "owner": {
    "name": "YOUR_NAME_HERE"
  },
  "plugins": [
    {
      "name": "typescript-lsp",
      "description": "TypeScript/JavaScript language server for enhanced code intelligence",
      "version": "1.0.0",
      "author": {
        "name": "YOUR_TEAM_HERE",
        "email": "support@example.com"
      },
      "source": "./plugins/typescript-lsp",
      "category": "development",
      "strict": false,
      "lspServers": {
        "typescript": {
          "command": "typescript-language-server",
          "args": ["--stdio"],
          "extensionToLanguage": {
            ".ts": "typescript",
            ".tsx": "typescriptreact",
            ".js": "javascript",
            ".jsx": "javascriptreact",
            ".mts": "typescript",
            ".cts": "typescript",
            ".mjs": "javascript",
            ".cjs": "javascript"
          }
        }
      }
    }
  ]
}

ポイントは以下の通りです。

  • strict: false: マーケットプレイスエントリがプラグインの全定義になります。プラグイン側にplugin.jsonは不要です
  • source: "./plugins/typescript-lsp": プラグインのソースとしてマーケットプレイスルートを指定します。strict: falseの場合でも、ここに有効なパスが指定されていなければエラーになるため、ここではREADME.mdを配置しています
  • lspServers: LSPサーバーの設定を直接記述します

lspServers の各エントリで必須なのは以下の2つです。

フィールド 説明
command 実行するLSPサーバーのバイナリ(PATHに存在する必要があります)
extensionToLanguage ファイル拡張子と言語IDのマッピング

言語サーバーのインストール

LSPプラグインは言語サーバーへの接続設定を行うだけなので、言語サーバー自体は別途インストールする必要があります。

TypeScriptの場合は以下のコマンドでインストールできます。

npm install -g typescript-language-server typescript

typescript-language-serverがLSPサーバー本体で、typescriptはその依存として必要です。インストール後、PATHが通っていることを確認しておきます。

which typescript-language-server

他の言語の場合も同様に、marketplace.jsonのcommandに指定したバイナリがPATH上に存在する状態にしてください。各言語で必要なバイナリは公式ドキュメントのCode intelligenceの項目に記載されています。

マーケットプレイスの追加とプラグインのインストール

Claude Code内で以下のコマンドを実行し、ローカルマーケットプレイスを登録します。

/plugin marketplace add ./.your-claude-marketplace

マーケットプレイスが登録されたら、プラグインをインストールします。

/plugin install typescript-lsp@project-plugins

インストール後、プラグインを反映します。

/reload-plugins

lsp-server

1 plugin LSP serverと表示されていれば成功です。

動作確認

TypeScriptプロジェクトでClaude Codeを使って作業してみてください。LSPが正しく動作していれば、Claudeがファイル編集後に型エラーや未使用変数などの診断情報を自動的に検知するようになります。

成功例

もし、動かなかった場合 .claude/settings.jsonに次の設定を追加してください。

{
  "env": {
    "ENABLE_LSP_TOOL": "1"
  }
}

まとめ

Claude CodeのLSP連携は、公式マーケットプレイスがなくてもローカルマーケットプレイスを作成することで実現できます。

他の言語を追加したい場合も、marketplace.jsonのplugins配列にエントリを追加し、対応する言語サーバーをインストールするだけで対応できます。

参考文献

この記事をシェアする

FacebookHatena blogX

関連記事