
Claude CodeのLSPを公式マーケットプレイスなしで利用する
はじめに
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

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

もし、動かなかった場合 .claude/settings.jsonに次の設定を追加してください。
{
"env": {
"ENABLE_LSP_TOOL": "1"
}
}
まとめ
Claude CodeのLSP連携は、公式マーケットプレイスがなくてもローカルマーケットプレイスを作成することで実現できます。
他の言語を追加したい場合も、marketplace.jsonのplugins配列にエントリを追加し、対応する言語サーバーをインストールするだけで対応できます。
参考文献
- Discover and install prebuilt plugins through marketplaces - Claude Code Docs
- Create and distribute a plugin marketplace - Claude Code Docs
- Plugins reference - Claude Code Docs
- anthropics/claude-plugins-official: Official, Anthropic-managed directory of high quality Claude Code Plugins.
- [BUG] TypeScript LSP plugin non-functional on v2.1.63 — race condition + missing .lsp.json in official plugin #29858







