Claude Code の「弱点」
Claude Code はターミナルで動く AI コーディングアシスタントです。ファイルを読んでコードを書いてくれる、非常に便利なツールです。
でも実は、LSP プラグインを使う前の Claude Code には弱点がありました。
たとえば「この関数がプロジェクト内のどこで呼ばれているか調べて」と頼んだとき、Claude Code は内部的にテキスト検索(grep) をしていました。つまり、コードを「テキスト」としてしか見ていなかったのです。
# 従来の Claude Code の調べ方(イメージ)
"processPayment" という文字列が含まれるファイルを全部探す
→ 変数名にもヒット、コメントにもヒット、文字列リテラルにもヒット...
→ 本当に「呼び出し」している箇所だけを特定するのが難しい
→ しかも大きなプロジェクトだと 45秒 以上かかることも!
これが LSP プラグイン によって劇的に変わります。
LSP プラグインが解決すること
LSP(Language Server Protocol)プラグインを使うと、Claude Code はコードを「テキスト」ではなく「プログラム」として理解できるようになります。
# LSP を使った Claude Code の調べ方(イメージ)
「processPayment」の呼び出し箇所を型情報つきで正確に特定
→ 文字列検索ではなく「構文として関数を呼び出している箇所」のみを抽出
→ 結果が返るまで 約 50ms(テキスト検索の約 900倍 速い!)
これは自身の IDE が持っている「コードを理解する力」と同じ仕組みです。
仕組みの全体像
まず「LSP とは何か」を理解しましょう。
LSP はもともと「エディタ用」の仕組みです。
Claude Code はそのエディタの代わりとして LSP サーバーに接続し、エディタと同じ「コード理解力」を手に入れます。
リリース情報と対応言語
Claude Code の LSP サポートは 2025 年 12 月、バージョン 2.0.74 でリリースされました。対応言語は以下の通りです。
Web系
PHP
バックエンド系
Python
Go
Ruby
Java
C# .NET
システム系
Rust
C / C++
Swift
Lua
実践編:セットアップ
Step 1: /plugin コマンドを開く
Claude Code を起動したら、/plugin とタイプして対話型の UI を開きます。
/plugin
まず 「Marketplaces」タブ で、公式マーケットプレイス(claude-plugins-official)が有効になっていることを確認してください。デフォルトで有効なはずです。
Step 2: LSP プラグインをインストール
「Discover」タブ に移動し、検索ボックスに LSP と入力します。言語別のプラグインが一覧表示されます。
-
Spaceキー:プラグインを選択 -
iキー:インストール開始
インストール済みのプラグインは 「Installed」タブ で確認できます。
Step 3: Language Server バイナリをインストール
プラグインは「設定ファイル」です。実際に動くバイナリを別途インストールする必要があります。
# Python (Pyright)
npm install -g pyright
# TypeScript (typescript-language-server)
npm install -g typescript-language-server typescript
# Go (gopls)
go install golang.org/x/tools/gopls@latest
# Rust (rust-analyzer)
rustup component add rust-analyzer
実践編:LSP で何ができるか
LSP が有効になると、Claude Code は以下の操作を「意味的に」実行できるようになります。
利用可能な操作一覧
| 操作 | 内容 |
|---|---|
goToDefinition |
シンボルが定義されている場所を検索 |
findReferences |
シンボルへのすべての参照を検索 |
hover |
シンボルの型情報・ドキュメントを取得 |
documentSymbol |
ファイル内のすべてのシンボルを取得 |
workspaceSymbol |
ワークスペース全体でシンボルを検索 |
goToImplementation |
インターフェースや抽象メソッドの実装を検索 |
prepareCallHierarchy |
呼び出し階層アイテムを取得 |
incomingCalls |
その関数を呼び出しているすべての関数を検索 |
outgoingCalls |
その関数が呼び出しているすべての関数を検索 |
❌ 注意: オートコンプリート(コード補完)は LSP サポートの対象外です。
使用例:参照を検索(findReferences)
自分:「UserService クラスはどこで使われてる?」
LSP あり:「3 箇所で参照されています:
- src/routes/auth.ts: 15行目(インポート)
- src/middleware/session.ts: 42行目(引数として使用)
- tests/user.test.ts: 8行目(テスト)」
使用例:定義へジャンプ(goToDefinition)
あなた:「processPayment 関数の定義はどこ?」
LSP なし:「processPayment を含むファイルを検索します...(数十秒)」
LSP あり:「src/services/payment.ts の 127行目 に定義があります(50ms)」
実際に Claude Code が LSP を使用する際は、ターミナルに LSP(...) という形でツールの利用が表示されます。
余談:Serena MCP も同じ発想
「LSP を使って AI にコードを理解させる」というアイデアは、Claude Code の公式サポートより前から存在していました。その代表例が Serena です。
Serena は MCP を使って LSP の機能を AI に提供するコミュニティ製ツールです。
| Claude Code 公式 | LSPSerena MCP |
|---|---|
| Claude Code が直接 LSP サーバーと通信 | MCP サーバーが LSP をラップして AI に提供 |
| Anthropic 公式 | コミュニティ製(oraios/serena) |
| Claude Code 専用 | Claude Code 以外のエージェントでも使える |
| 2025年12月(v2.0.74) | それ以前から存在 |
LSP あり・なしの比較
| 機能 | LSP なし | LSP あり |
|---|---|---|
| 定義を探す | テキスト検索(遅い・誤検知あり) | 意味的に正確(即時) |
| 参照を探す | grep(コメントにもヒット) | 呼び出し箇所のみ正確に抽出 |
| 型情報の取得 | コードを読んで推測 | Language Server から直接取得 |
| 大規模コードベース | 苦手(遅い・コンテキスト不足) | 得意(900 倍高速) |
まとめ
Claude Code の LSP プラグインは、AI がコードを「テキスト」ではなく「プログラム」として理解するための橋渡しです。
エディタ(VS Code など)が長年活用してきた Language Server の仕組みを、Claude Code がそのまま流用することで、IDE と同等のコード理解力をターミナルの AI が手に入れました。
参考リンク

