■ 1. LSP(Language Server Protocol)の概要
- LSPは2016年にMicrosoft、Red Hat、Codenvyが共同開発したプロトコル
- VS Code、Neovim、Emacsなど多くのエディタで採用されている成熟した技術
- 「定義へジャンプ」「参照を検索」「コード補完」などのエディタ機能を実現する基盤
- Claude Codeは2025年12月にLSPサポートを追加
■ 2. LSP登場の背景と解決策
- LSP登場前の課題:
- 言語解析ツールをエディタごとに専用プラグインとして開発する必要があった
- 言語10種類×エディタ5種類で理論上50個のプラグインが必要になる非効率な状態だった
- ツール間で品質にばらつきが生じていた
- LSPによる解決:
- エディタ(クライアント)と言語解析ツール(サーバー)の間に標準化された通信プロトコルを導入
- 1つの言語サーバーをLSP対応の全エディタで動作させることが可能になった
- JSON-RPC 2.0を使ったシンプルなメッセージ通信で実現
■ 3. LSPが提供する主な機能
- Diagnostics(診断): エラーや警告を表示(赤い波線、黄色い波線)
- Completion(補完): 入力候補を提示
- Goto Definition: 定義箇所へのジャンプ
- Find References: 参照箇所の検索
- Hover: カーソル位置のドキュメント表示
- Rename: 一括リネーム機能
■ 4. AI AgentにおけるLSPの必要性
- 従来のAIエージェントの課題:
- コードを「テキスト」として処理するため、構造や依存関係を正確に理解できない
- テキスト検索では同名の別関数を誤って参照するリスクがある
- import文を辿れず、対象ファイルの特定が困難
- ファイル全体の読み込みが必要でトークン消費が大きい
- LSPによる改善:
- エディタと同等の「定義へジャンプ」機能をAIが利用可能になる
- コードの意味的な構造を正確に把握できる
- 必要な情報のみをピンポイントで取得しトークン消費を削減できる
■ 5. Claude CodeのLSPサポート
- Python、TypeScript、Rust、Go、Java、C++など11の言語でLSPをサポート
- 言語ごとに適切なLanguage Serverを利用(Python: Pyright、Rust: rust-analyzer等)
- LSPサポートにより、クラス定義の場所やメソッド構成を正確に回答可能になった
- 現時点ではLSPサポートは実験的段階であり、一部言語で動作が不安定な場合がある
■ 6. Claude CodeでのLSP有効化手順
- Step 1: Claude Codeを起動し、/pluginコマンドを実行してプラグイン画面を開く
- Step 2: 検索ボックスに「lsp」と入力し、対応言語のLSPプラグインを選択してインストール
- Python: pyright-lsp
- TypeScript/JavaScript: vtsls-lsp
- Rust: rust-analyzer-lsp
- Go: gopls-lsp
- Java: jdtls-lsp
- C/C++: clangd-lsp
- Step 3: 各言語のLanguage Serverバイナリ(pyright、rust-analyzerなど)のシステムへのインストールが別途必要
- プラグインが自動インストールを試みるが、失敗時は手動インストールが必要
■ 7. LSPがAI Agentにもたらす3つの価値
- 正確な参照解決:
- import文を辿って正しいファイルを特定
- 変数のスコープを理解し、誤った候補を排除
- コンテキスト理解の深化:
- 型情報、関数シグネチャ、ドキュメントを取得
- クラスの継承関係やインターフェース実装を把握
- リファクタリング支援:
- Rename機能で変数名変更時に全参照箇所を自動更新
- 定義と参照の関係を正確に把握した安全な変更提案
■ 8. LSPの動作原理
- 通信方式: 標準入出力(stdin/stdout)またはTCP/IPソケットを使用
- メッセージフォーマット: JSON-RPC 2.0
- 通信構造: ヘッダーで長さを指定し、本文にJSONメッセージを格納するシンプルな形式
- 定義ジャンプのリクエスト例:
- ファイルURIとカーソル位置(行番号・文字位置)をパラメータとして送信
- レスポンスとして対象ファイルのURIと範囲(開始・終了位置)を返す
■ 9. LSPとMCP(Model Context Protocol)の関係
- MCPはAnthropicが2024年11月に発表したLLM向け外部ツール連携の標準プロトコル
- MCPの設計思想はLSPに強く影響を受けており、「LLMにとってのLSP」と表現されることもある
- LSPとMCPの違い:
- LSP: エディタとコード解析ツールの連携、プログラミング言語のコードが対象、2016年登場で成熟
- MCP: LLMと外部ツール・データソースの連携、あらゆるデータ・機能が対象、2024年登場で発展途上
- VS CodeのAgent modeではLSPとMCPの両方を活用する設計になっている
■ 10. AI Agent時代の開発ワークフローの変化
- 従来のワークフロー:
- コードを書く→エラーが出る→ブラウザでドキュメントを検索→Stack Overflowで解決策を探す→修正→テスト実行
- AI Agent時代のワークフロー:
- コードを書く→AI Agentに質問→LSPで正確な型情報とスタックトレースを解析、MCPでドキュメントやログを取得→修正案の提示→承認後に自動適用とテスト実行
- 大規模コードベースでは、ファイル間の複雑な依存関係をAIが瞬時に理解できる点が特に有用