この記事のポイント
Claude Code v2.0.74でLSPツールが追加され、go-to-definitionやfind references、hover情報取得などのコードインテリジェンスが利用可能になった
LSPサポートは公式マーケットプレイスのプラグインとLSPサーバーを組み合わせて使う仕組みで、C/C++・Python・Javaなど主要言語に対応しつつ自作プラグインで拡張できる
LSPにより「定義・参照・呼び出し関係」を直接たどれるため、grep主体の探索と比べてトークン消費と手戻りを減らしやすい
一方で、現時点(2025年12月)では一部バージョンでプラグイン読み込みの不具合が報告されており、バージョン固定やENABLE_LSP_TOOLの設定など運用面の工夫が必要
将来的にはAgent Skills・MCPと組み合わせて、「外部システムへの接続」と「LSPによるコード理解」を統合したエージェント型開発フローが有力なパターンになる

Microsoft MVP・AIパートナー。LinkX Japan株式会社 代表取締役。東京工業大学大学院にて自然言語処理・金融工学を研究。NHK放送技術研究所でAI・ブロックチェーンの研究開発に従事し、国際学会・ジャーナルでの発表多数。経営情報学会 優秀賞受賞。シンガポールでWeb3企業を創業後、現在は企業向けAI導入・DX推進を支援。
Claude Codeは、ターミナルやDesktop、Webから利用できる「エージェント型のAIコーディングツール」です。2025年12月のアップデートで、従来のgrep/globベースの検索に加えて、LSP(Language Server Protocol)によるコードインテリジェンス機能が統合されました。
これにより、go-to-definitionやfind references、hover情報の取得といった「構造ベースのコード操作」をエージェント側から直接呼び出せるようになり、大規模コードベースでの調査・リファクタリングの精度と効率が一段階引き上げられます。
本記事では、Claude Code v2.0.74で追加されたLSPツールの概要から、セットアップ方法、代表的な活用パターン、現時点の制約と今後の展望までを、実務での利用を想定しながら整理して解説します。
目次
Claude CodeのLSP対応とは?今回のアップデートの位置づけ
Claude CodeのLSPアーキテクチャ:どこに組み込まれているか
セットアップ:Claude CodeでLSPを有効にする手順
フェーズ3:Agent Skills・MCPと組み合わせた“エージェント標準フロー”へ
他ツールとの違いと使い分け(VS Code / Copilot / Cursor など)
Claude CodeのLSP対応とは?今回のアップデートの位置づけ
Claude Code v2.0.30以降では内部的にLSPツールが含まれていましたが、v2.0.74でリリースノート上も明示された形でLSP(Language Server Protocol)ツールが利用できるようになりました。
これにより、従来は「glob」や「grep」による文字列検索とファイル読み込みでコードを追っていた部分が、LSPサーバーを通じてシンボルの定義・参照・型情報・シンボル検索などに直接アクセスできるようになっています。
ざっくり言い換えると、次のような変化です。
- 以前:
「パターンにマッチする行をひたすら検索 → 前後の文脈を読みながら“それっぽい定義”を探す」
- これから:
「このシンボルの定義を探して」「この関数を呼んでいる箇所を一覧にして」とエージェントに伝えると、LSP経由でIDEライクな精度で場所を特定してくれる
Claude Code自体はあくまで「エージェント+ツール群」の構成ですが、その中にLSPツールが正式に組み込まれたことで、エージェントがコードベースと対話する“解像度”が1段階上がった、というのが今回のポイントです。
Claude Code × LSPで何が変わるのか
ここでは、Claude CodeにLSPが入ることで、開発フローにどんなインパクトがあるのかを整理します。
1. grepベースから「構造ベースの探索」へ
従来のClaude Codeは、「glob」や「grep」ツールを使って「ファイル名・パス」「テキストパターン」をもとにコードを探しにいくスタイルでした。
これはこれで柔軟ですが、次のような弱点があります。
- 型やクラス名をまたいだリネーム時に、誤検出や見落としが起きやすい
- 同名シンボルが多いと、関係ない定義・参照がヒットしやすい
- 継承・インターフェースの関係など、構造レベルの関係は自分で追う必要がある
LSPツールが使えるようになると、エージェントはLSPサーバーに対して次のような問い合わせができます。
- このカーソル位置のシンボルの定義を教えて
- この関数・クラスを参照している場所を一覧にして
- この型・メソッドのシグネチャ情報(hover)を取得して
結果として、「まず構造ベースであたりを付ける → 必要な箇所だけを読み込む」という流れが取りやすくなり、無駄なファイル読み込みやgrepの回数を減らしやすくなります。
2. トークンと時間の節約
Claude Codeは、大規模コードベースを扱うときにどうしても「どのファイルを何トークン分読むか」というコスト設計が重要になります。
LSPサポートにより、エージェントは「関係のあるシンボルだけ」を狙って解析できるため、次のようなメリットが期待できます。
- 影響範囲調査やリファクタリング時に、読むべきファイルの候補をLSPで絞り込める
- 単純なgrep結果のノイズを読む時間が減り、有効トークンを“本当に読むべきコード”に割きやすい
- 結果として、1セッションあたりのトークン消費と実行時間を節約しやすい
コミュニティの検証ブログでは、「LSPを足してもタスク成功率自体は大きく変わらないケースがあった」という報告もありますが、探索範囲の絞り込みという意味では、特に大規模・多言語リポジトリで効果が出やすい機能と言えます。
3. エージェントの「迷子」を減らす
Claude Codeの強みは、「対話しながらリポジトリ全体を読み、計画を立てて編集する」ことです。
一方で、コードベースが大きくなると、エージェントが次のような状態に陥りがちでした。
- 似た名前のクラスや関数を行き来して文脈を見失う
- 実装ではなくインターフェース側だけを読んで結論を出してしまう
- 派生クラス側の特殊ケースを見落とす
LSPが使えるようになると、エージェントは**「正しい定義」「実際に呼ばれている箇所」**をダイレクトにたどれるため、こうした“迷子状態”を減らしやすくなります。
特に、型安全な言語+大規模モノレポの組み合わせでは、LSPサーバーがもともと持っている情報をそのまま活かせるため、相性が良い領域です。
Claude CodeのLSPアーキテクチャ:どこに組み込まれているか
ここからはClaude Codeにとって、LSPはどのような位置づけのツールになっているのか、もう少し構造寄りの話をします。
LSPツールは「内蔵ツール群のひとつ」
Claude Codeは、内部的には次のような多数のツールを使い分ける形で動作しています。
- ファイルパターン検索用の「Glob」ツール
- 内容検索用の「Grep」ツール
- ノートブック編集用ツール
- MCP(Model Context Protocol)経由の外部ツール
- そして、新たに追加された「LSP」ツール など
LSPツールは、この内蔵ツールのひとつとして追加されました。
エージェントは、ユーザーの依頼内容に応じて
- 「定義をたどる・参照を列挙する」→ LSPツールを使う
- 「広く曖昧なキーワードで検索したい」→ grep / glob ツールを使う
といった形で、ツールを組み合わせながらタスクを進めます。
対応バージョンと有効化の前提
執筆時点(2025年12月23日)では、次のような整理になります。
-
公式にLSPツールが含まれるバージョン
- Claude Code v2.0.74 以降で、リリースノートに明示的にLSPツール追加が記載されている
- Claude Code v2.0.74 以降で、リリースノートに明示的にLSPツール追加が記載されている
-
有効化の前提となる要素
- Claude Code本体のバージョン
- LSPプラグイン(言語別プラグイン)のインストール
- 各言語のLSPサーバー(「pyright-langserver」など)のインストール
- 環境変数「ENABLE_LSP_TOOL」の設定(バージョンによっては必須)
特に、現行バージョンでは環境変数でのLSPツール有効化が求められるケースが多く、「settings.json」だけでは有効にならない、という報告も出ています。
後述の「既知の制約」で詳しく触れますが、実運用ではバージョン固定+環境変数設定をセットで考えた方が安全です。
対応言語とプラグイン構成
Claude CodeのLSPサポートは、次のような構成で動きます。
-
LSPごとの機能定義は、**プラグイン側の「plugin.json」や「.lsp.json」**に記述される
<br -
Claude Code側は、その設定に従って以下の要素を判断
- どの拡張子に対して
- どのLSPサーバーを起動するか
- どの機能(定義ジャンプ、参照検索、ホバー等)を有効にするか
-
対応言語は、TypeScript/JavaScript・Go・Python・PHP・Rust・C/C++ など主要言語を中心に、プラグイン次第で拡張可能
未対応言語についても、「.lsp.json」を含む自作プラグインを用意することで、任意のLSPサーバーをClaude Codeから利用することができます。
セットアップ:Claude CodeでLSPを有効にする手順
ここからは、実際にClaude CodeでLSPを使うための導入手順を整理します。
ターミナル版(CLI)での利用を前提に説明しますが、基本的な考え方はDesktop/Web版でも同様です。
ステップ0:バージョンと環境の前提を確認する
まず、Claude Code本体のバージョンと環境を確認します。
claude --version
LSPツールが公式に含まれるのは v2.0.74 以降ですが、現時点では一部バージョンでプラグイン読み込みの不具合が報告されています。
安定運用を優先する場合は、実際のプロジェクトに適用する前に個人環境でバージョンごとの挙動を確認しておくことをおすすめします。
ステップ1:LSPプラグインをインストールする
次に、Claude Codeのプラグインマーケットプレイスから、利用したい言語のLSPプラグインをインストールします。
ここでは、Claude Codeセッション内で使える「/plugin」コマンドの例を挙げます。
# プラグイン一覧の確認(マーケットプレイス)
/plugin marketplace list
# 例:Python向けのLSPプラグインをインストール
/plugin install pyright@claude-code-lsps
実際のプラグイン名や対応言語・マーケットプレイスIDは、バージョンやマーケットプレイスの更新状況によって変わる可能性があります。
まずは「/plugin marketplace list」や検索機能で「LSP」「language server」といったキーワード検索をかけ、公式LSPプラグイン群を確認しておくと良いでしょう(上のプラグインIDは一例です。実際に表示されるIDに置き換えてください)。
実際に利用する際は、「/plugin help」などで利用可能なサブコマンド名やオプションも合わせて確認しておくと安心です。
ステップ2:LSPサーバー本体をインストールする
プラグインだけではLSPは動作せず、各言語のLSPサーバー本体も必要です。
たとえば、Pythonであればターミナルで次のようにインストールします。
# 例:Python向け LSP サーバー(Pyright・ターミナルで実行)
npm install -g pyright
Goであれば「gopls」、TypeScript/JavaScriptであれば「typescript-language-server」といったように、
各言語ごとの標準的なLSPサーバーをあらかじめ入れておく必要があります。
ステップ3:ENABLE_LSP_TOOLを有効化する
現行のClaude Codeでは、LSPツールを有効化するために環境変数を明示的に指定する必要があるケースがあります。
# macOS / Linux の例(シェルの設定ファイルに追記)
export ENABLE_LSP_TOOL=true
# Windows (PowerShell) の例
$Env:ENABLE_LSP_TOOL = "true"
「settings.json」内の環境変数設定からでは認識されない、という報告もあるため、現状はOSレベルの環境変数として設定しておくのが無難です。
ステップ4:LSPが認識されているか確認する
準備ができたら、Claude Codeを起動し、対象リポジトリでLSPが有効になっているか確認します。
ログやステータスの確認方法はバージョンによって変わりますが、典型的には次のような手順です。
-
起動時のログや「~/.claude/debug/latest」に「LSP server registered for …」のような行が出ているか確認する
-
対象の言語ファイルを開いた状態で、
- 「この関数の定義にジャンプして」と依頼してみる
- 「このシンボルを参照している箇所を一覧にして」と依頼してみる
期待どおりに動かない場合は、次の点を確認してください。
- LSPサーバー本体がインストールされているか
- プラグインの「enabled」設定が有効になっているか
- プラグインとClaude Code本体のバージョン組み合わせに既知のバグがないか
Claude Code LSPの代表的な活用パターン
ここからは、実際にどのような場面でLSPを使うと効果的かを、ユースケース別に整理します。
1. 影響範囲調査とリファクタリング
もっとも分かりやすいのが、既存コードの変更に伴う影響範囲調査です。
- クラスやメソッド名を変更したい
- インターフェースの引数を追加・変更したい
- ライブラリのバージョンアップで呼び出し方が変わった
こうしたケースでは、次のような依頼の仕方が典型です。
- 「この関数の定義と、呼び出している箇所をLSPで洗い出して、影響範囲を一覧にして」
- 「このインターフェースを実装しているクラスを全部挙げて、それぞれどう使われているか要約して」
LSP経由で定義と参照を網羅的に取得してから、Claude Codeのエージェントに変更計画やリネーム手順を立ててもらうことで、手動でgrepするよりも漏れの少ないリファクタリングを行いやすくなります。
2. 大規模モノレポでの「入口探し」
サービスが育ってくると、1リポジトリの中に複数のアプリケーションやマイクロサービスが同居する、いわゆるモノレポ構成になることが増えます。
新しく参加した開発者が、
- 「ログイン周りの処理はどこから読むのが良いか」
- 「注文が確定するまでのフローを追いかけたい」
といった場合、まずどのファイル/どのシンボルから読み始めるかを決めるのが大変です。
このときは、Claude Codeに対して次のように依頼できます。
- 「ユーザー登録からログインまでのユースケースに関わるエンドポイントとサービスクラスを、LSPベースで洗い出して」
- 「注文完了までのフローで中心になるシンボルを整理して、読み始めるべき順番を提案して」
こうした依頼を通じて、LSP経由でコード構造をたどりながら、読み始める“入口”を提案してもらうことができます。
3. 型やドメインモデルの理解支援
もうひとつよくあるのが、「この型がどこで定義され、どう使われているのか」を理解したい場面です。
たとえば、ドメイン駆動設計(DDD)的な構造を取っているプロジェクトでは、
- Value Object
- Entity
- Aggregate Root
などが多段に定義され、そこからイベントやDTOが派生していきます。
このときは、Claude Codeに対して次のように依頼できます。
- 「Orderエンティティと関連するValue Object/イベントをLSPでたどって、関係図をテキストで説明して」
- 「この型がどの層(API/サービス/リポジトリ)で使われているか整理して」
LSPサーバーから得たシンボル情報をもとに、型の関係を俯瞰する説明を生成してもらうことができます。
【組織向け】LSP機能の導入フローと設計の考え方
個人で試すだけであれば、「LSPプラグインを入れて、よく使う言語で動くか確認する」で十分です。
一方で、チームや組織として活用する場合は、もう少し設計が必要になります。
ここでは、段階的な導入フローの一例をまとめておきます。
フェーズ1:個人・小規模チームでの試行
まずは、影響範囲の小さいリポジトリやチームで、次のような用途に絞ってLSPを試します。
- 既存コードの影響範囲調査
- モノレポでの入口探し
- 型やドメインモデルの関係確認
このフェーズの目的は、「どの言語・どの規模のリポジトリで、どれくらい恩恵があるか」を肌感として掴むことです。
- どの言語でLSPが安定して動くか
- LSPなしと比べて、どれくらい探索コストが下がったか
- トークン消費やレスポンス時間は許容範囲か
といった観点で、軽くログや体感をメモしておくと、次のフェーズの判断材料になります。
フェーズ2:プラットフォーム/基盤チームでの標準化
手応えが見えてきたら、次はプラットフォームチームや開発基盤チームが中心となって、標準的なLSP構成を検討します。
- サポートする言語とLSPサーバーの候補(例:TypeScript、Python、Goなど)
- Claude Code自体のバージョンポリシー(どのバージョンを組織として推奨するか)
- プラグインの標準セット(公式LSPプラグイン、自社向け追加プラグインなど)
- Desktop/Web/CLIのどのチャネルでLSPを前提にするか
Agent SkillsやMCPと同様に、**「まずは標準セットを決めて配布する」**という考え方で進めると、現場ごとのばらつきを抑えやすくなります。
フェーズ3:Agent Skills・MCPと組み合わせた“エージェント標準フロー”へ
LSP単体の導入に慣れてきたら、次のステップはAgent Skills・MCPとの組み合わせです。
- MCP:社内CIシステムやIssueトラッカー、ドキュメント基盤への接続
- LSP:コードベースの定義・参照・シンボル情報への接続
- Agent Skills:障害調査・リリース準備・コードレビュー観点など、人間の“作業の流れ”を定義
この三つを組み合わせることで、たとえば次のようなフローをエージェントに任せやすくなります。
- 「このCI失敗について、LSPで影響範囲を洗い出したうえで、MCP経由でIssueを起票して」
- 「このモジュールのリファクタリング案を、LSPで参照を確認しつつ、Agent Skillsのガイドラインに沿って提案して」
LSPはあくまで「コード構造への入り口」なので、それ自体がワークフローを定義するわけではありません。
エージェント活用を本格化させたい場合は、Agent Skillsや既存のガイドラインと組み合わせて「一連の流れ」を設計していくのが現実的なアプローチです。
LSP機能の制約と運用上の注意点(2025年12月時点)
LSPサポートは強力な一方で、執筆時点ではまだ**“荒削りな新機能”**という側面もあります。
ここでは、実務で使う際に押さえておきたい制約や注意点をまとめます。
1. バージョンによる挙動の違い・不具合
2025年12月時点では、次のような報告が出ています。
- v2.0.74 以降でLSPツール自体は同梱されているが、
一部の環境で「LSPサーバーが登録されない」「プラグイン読み込み順のレースコンディションがある」といった不具合が報告されている
- ワークアラウンドとしては、次のような方法があります。
- Claude Code本体を v2.0.67 にダウングレードする
- 「ENABLE_LSP_TOOL=true」を指定して起動する
こうした運用によって、問題を回避している例もあります。
本番環境のコードベースで使う前に、自分の環境+想定する言語で挙動を検証し、安定して動くバージョンに固定することを強くおすすめします。
2. プラグインとLSPサーバーの組み合わせに起因する問題
LSPは、次の二つがセットになって初めて意味を持ちます。
- Claude Code側のLSPプラグイン
- 各言語のLSPサーバー本体
どちらか一方に問題があると、次のような症状が起きやすくなります。
- 「LSPツールは有効化されているのに、特定言語だけLSPが動かない」
- 「特定のファイルを開くとLSP側でエラーになり、以降の操作が不安定になる」
このため、次のような運用が重要になります。
- まずは1〜2言語に絞って導入する
- 問題が起きたときには、次の点をメモしておく
- どのプラグインか
- どのLSPサーバーか
- どのバージョンの組み合わせか
こうした情報を残しておくことで、原因の切り分けがしやすくなります。
3. ログとデバッグ情報の確認
LSP周りでハマった場合、ログを見に行くことになります。
- Claude Codeのデバッグログディレクトリ(例:「~/.claude/debug/latest」)を確認する
- LSPサーバー側のログ出力(起動オプションやログファイル)も合わせて確認する
- 必要に応じて、GitHubのIssueやコミュニティで同様の事例がないか探す
Claude Code側・LSPサーバー側のどちらに問題があるのかを切り分けるだけでも、原因特定のスピードが変わってきます。
他ツールとの違いと使い分け(VS Code / Copilot / Cursor など)
最後に、Claude CodeのLSP対応を、他のツールとどう位置づけるかを整理します。
IDE組み込みのLSPとの違い
VS CodeやJetBrainsなど、モダンなIDEはすでにLSPベースのコードインテリジェンスを備えています。
これらと比較したとき、Claude Codeの特徴は次のように整理できます。
-
IDE:
- 開いているファイルやプロジェクトに対して、人間が操作する前提でLSP機能を提供する
- F12などのショートカットで、定義ジャンプ・参照検索を行う
-
Claude Code:
- LSPをエージェント用のツールとして使い、
「この関数の定義を追って」「関連するクラスを洗い出して」といった自然言語の依頼を起点にコードを探索する - LSPから得た結果を、計画立案やリファクタリング案の生成に組み込む
- LSPをエージェント用のツールとして使い、
つまり、Claude CodeのLSPは「IDEの補完」ではなく、エージェントにとっての“眼”や“手足”を強化するための機能という位置づけになります。
GitHub Copilotや他のAIコーディングツールとの関係
GitHub CopilotやCursorなど、他のAIコーディングツールも、IDEのLSP機能と密接に連携しています。
Claude CodeのLSPサポートがユニークなのは、次のような点です。
- ターミナル/Desktop/WebといったIDE以外のチャネルからも、LSPを活かしたコード探索ができる
- MCPやAgent Skills(Claude Skills)と組み合わせることで、
**「外部システム+コードベース+作業フロー」**をまとめてエージェントに任せやすい
- 大きなコンテキストウィンドウと組み合わせることで、
LSPで絞り込んだコードをまとめて読み込み、長めのリファクタリング・設計案を生成するといった使い方がしやすい
一方で、現時点ではCopilotやCursorに比べてLSP統合の成熟度・ツールエコシステムは発展途上です。
そのため、「LSPまわりはIDE/他ツールで」「エージェントによる長期タスクはClaude Codeで」といった役割分担で併用するのも十分に現実的な選択肢です。
よくある疑問とハマりポイント
最後に、LSP対応版のClaude Codeを試すときに出てきやすい疑問をQ&A形式でまとめます。
Q1. 「LSPが有効になっているかどうか」を簡単に確認する方法は?
もっとも簡単なのは、対象言語のファイルを開いた状態で、次のように依頼してみることです。
- 「この関数の定義をLSPベースでたどって、ファイルパスと行番号を教えて」
- 「このクラスを参照している箇所を一覧にして」
期待どおりに動く場合は、LSPツール+LSPサーバーが正しく動いていると判断できます。
逆に、「該当する定義が見つかりません」といった返答が続く場合は、LSPが有効化されていない/対象言語に対応していない可能性が高いです。
Q2. 「.lsp.json」や自作プラグインは、最初から触るべき?
最初の段階では、公式マーケットプレイスにあるLSPプラグイン+標準的なLSPサーバーの組み合わせから始めるのがおすすめです。
そのうえで、次のようなニーズが出てきたら、「.lsp.json」や自作プラグインに踏み込む、という順番で問題ありません。
- 自社特有のフレームワークを強くサポートしたい
- 公式プラグインが対応していない言語を扱いたい
Q3. いま導入する価値はある? もう少し待つべき?
現時点(2025年12月)では、LSPサポートは明らかに「強いポテンシャルを持つが、まだ変化の激しい領域」です。
- 個人利用や、小さめのリポジトリでの検証
→ 今から積極的に試しておく価値が高い - ミッションクリティカルな本番運用
→ 安定したバージョンが見えてから段階的に導入するのが現実的
というのがバランスの良い判断ラインでしょう。
まとめ:LSPで「読む力」を底上げしつつ、grepツールとうまく共存させる
Claude CodeのLSPサポートは、単にIDE的な機能を足しただけではなく、エージェントがコードを理解するための“視力”を底上げするアップデートと言えます。
- v2.0.74以降でLSPツールが正式に追加され、定義・参照・ホバー情報などのコードインテリジェンスをエージェントから直接利用可能になった
- LSPプラグイン+LSPサーバーの組み合わせにより、主要言語に加えて自作プラグインで任意の言語もサポートできる
- 影響範囲調査やリファクタリング、モノレポでの入口探し、ドメインモデルの理解支援など、「コードを読む作業」全般で効果を発揮しやすい
- 一方で、現時点ではバージョン依存の不具合やプラグイン競合も報告されており、安定バージョンの選定と環境変数設定が運用上のポイントになる
- 将来的には、Agent Skills・MCPと組み合わせて、
「外部システム」「コードベース」「開発フロー」を一体化したエージェント標準フローを構築していく土台になりうる
grepやglobによる素朴な検索も依然として強力ですが、LSPが使えるようになることで、
「どこから読むべきか」「何を変更すべきか」をエージェントと一緒に設計する余地が大きく広がります。
まずは、日常的によく触る1〜2言語のリポジトリでLSPを試してみて、
「どの作業で“読みやすさ”が変わるのか」を実感しながら、自社なりの使いどころを探ってみてください。





