LSP-MCP
lsp-mcp
言語インテリジェンスのための最も完全なMCPサーバーです。ナビゲーション、診断、リファクタリング、フォーマットを網羅する22個のツールを備えています。7つの言語でCI検証済みです。LSP 3.17仕様に直接準拠して構築されています。
一般的なMCP-LSPブリッジとは異なり、lsp-mcpは永続的な言語サーバーセッションを維持します。エージェントは、呼び出しのたびにコンテキストを忘れるコールドスタートのスタブではなく、リアルタイムの診断とファイル横断的な認識を備えた完全にインデックス化されたワークスペース上で動作します。
なぜlsp-mcpなのか
lsp-mcp | 一般的な代替手段 | |
言語 (CI検証済み) | 7 | 1–2 |
ツール | 22 | 3–5 |
LSP仕様準拠 | 3.17、仕様に基づき構築 | アドホック |
接続モデル | 永続的 | リクエストごと |
ファイル横断参照 | ✓ | ほとんどない |
リアルタイム診断サブスクリプション | ✓ | ✗ |
テストカバレッジ | ステートメント76%、関数86% | ほとんどテストされていない |
クイックスタート
{
"mcpServers": {
"lsp": {
"type": "stdio",
"command": "npx",
"args": ["blackwell-systems/LSP-MCP", "<language-id>", "<path-to-lsp-binary>", "<lsp-args>"]
}
}
}TypeScript:
{ "args": ["blackwell-systems/LSP-MCP", "typescript", "typescript-language-server", "--stdio"] }Go:
{ "args": ["blackwell-systems/LSP-MCP", "go", "gopls"] }Rust:
{ "args": ["blackwell-systems/LSP-MCP", "rust", "rust-analyzer"] }多言語サポート
以下の各言語は、すべてのCI実行時に統合テストされています。start_lsp、open_document、get_diagnostics、get_info_on_locationはすべて、実際の言語サーバーバイナリに対して検証されています:
言語 | サーバー | インストール |
TypeScript / JavaScript |
|
|
Python |
|
|
Go |
|
|
Rust |
|
|
Java |
| |
C / C++ |
|
|
PHP |
|
|
ツール
すべてのツールは、最初にstart_lspを呼び出す必要があります。
セッション
ツール | 説明 |
| プロジェクトルートを指定して言語サーバーを起動する |
| MCPサーバーを再起動せずにサーバーを再起動する |
| 追跡対象としてファイルを開く(位置クエリの前に必須) |
| ファイルの追跡を停止する |
分析
ツール | 説明 |
| エラーと警告 — プロジェクト全体の場合は |
| 指定位置のホバー情報(型シグネチャ、ドキュメント) |
| 指定位置の補完候補 |
| 呼び出しサイトでの関数シグネチャとアクティブなパラメータ |
| 範囲に対するクイックフィックスとリファクタリング |
| ファイル内の全シンボル(関数、クラス、変数) |
| ワークスペース全体で名前によるシンボル検索 |
ナビゲーション
ツール | 説明 |
| ワークスペース全体でのシンボルの全参照 |
| シンボルが定義されている場所にジャンプ |
| シンボルの型定義にジャンプ |
| インターフェースや抽象メソッドの全実装にジャンプ |
| シンボルの宣言にジャンプ(定義とは異なる — 例: C/C++ヘッダー) |
リファクタリング
ツール | 説明 |
| ワークスペース全体でシンボル名を変更するための |
| コミット前に名前変更が可能か検証する |
| ファイルのフォーマット編集用 |
|
|
| サーバーサイドコマンドを実行(例: コードアクションから) |
ユーティリティ
ツール | 説明 |
| 実行時にログの詳細度を変更する |
推奨されるエージェントワークフロー:
start_lsp(root_dir="/your/project")
open_document(file_path=..., language_id=...)
get_diagnostics() # whole project, no file_path
get_info_on_location(...) / get_references(...)
close_document(...)言語ID: typescript, typescriptreact, javascript, javascriptreact, python, go, rust, java, c, cpp, php
リソース
診断リソースはリアルタイムサブスクリプションをサポートしています。診断が変更されると、サーバーはnotifications/resources/updatedを送信します。
スキーム | 説明 |
| すべての開いているファイル |
| 特定のファイル(サブスクライブ可能) |
| 指定位置のホバー |
| 指定位置の補完 |
LSP 3.17 準拠
lsp-mcpはLSP 3.17仕様に直接基づいて実装されており、実際の言語サーバーに対する統合テストを通じて検証されています。カバレッジには以下が含まれます:
完全なライフサイクル(
initialize→initialized→shutdown)、SIGINT/SIGTERMの正常な処理プログレスプロトコル — ワークスペース準備完了の検出は、参照を送信する前にすべての
$/progressトークンが完了するのを待機しますサーバー開始リクエスト(
workspace/configuration,window/workDoneProgress/create, 動的登録) — すべて正しく応答し、これらの応答を待機するサーバーのワークスペース読み込みをブロック解除します正しいJSON-RPCフレーミング、エラーコード処理、およびホバー、補完、コードアクション、診断にわたるレスポンス形状の正規化
完全なメソッドカバレッジマトリックスと仕様セクションの参照については、docs/lsp-conformance.mdを参照してください。
拡張機能
言語固有の拡張機能は、ツール、プロンプト、リソースハンドラーを追加し、起動時に言語IDによって自動的に読み込まれます。
拡張機能を追加するには、src/extensions/<language-id>.tsを作成し、getToolHandlers、getToolDefinitions、getResourceHandlers、getSubscriptionHandlers、getPromptDefinitions、getPromptHandlersの任意のサブセットを実装します。すべての機能は言語IDによって名前空間化されます。
開発
git clone https://github.com/blackwell-systems/LSP-MCP.git
cd LSP-MCP && npm install && npm run build
npm test # all unit test suites
npm run test:multi-lang # 7-language integration test (requires language servers)カバレッジ: ステートメント約76%、関数約86%。MCPトラフィックを検査するには: claude --mcp-debug。
ライセンス
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/blackwell-systems/LSP-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server