lsp-mcp について
lsp-mcpは、対応するプログラミング言語の言語サーバー機能を共通インターフェースでLLMに提供するMCPサーバーです。プロジェクト内の目印ファイルから言語を検出し、手動設定を抑えて言語サーバーを選択します。
主な機能
- 01プロジェクト言語の自動検出
- 02言語サーバーの自動選択
- 03定義・参照・シンボルの検索
- 04診断・名前変更・コードアクション
- 05フォーマットとコード変更
- 06プロジェクト内で複数言語サーバーを実行
活用シーン
- 01コードベース内の定義や参照を追跡
- 02多言語プロジェクトの診断を確認
- 03シンボル名の変更とコードアクションの適用
- 04MCPクライアント経由でファイルをフォーマット
MCP 対応
stdio経由で言語サーバー操作をMCPツールとして公開します。MCP Roots対応クライアントはワークスペースを自動初期化でき、その他のクライアントはプロジェクトルートを指定して`lsp_init`を呼び出せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
17掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| root | string | はい | |
| languages | array | いいえ |
詳細
Universal LSP MCP Server
すべての Language Server を支配する、ひとつの MCP サーバー — 言語を自動検出し、設定は不要です。
概要
あらゆる主要なプログラミング言語で、言語モデルから Language Server Protocol(LSP) の機能を利用できる Model Context Protocol(MCP)サーバーです。既存の LSP-MCP サーバーとは異なり、このプロジェクトは13 言語をすぐにサポートし、手動設定は不要です。コードベースを自動検出して適切な言語サーバーを選択し、すべての LSP 操作を、安定した言語非依存のツールインターフェースを通じて提供します。
サポート対象言語
| 言語 | 言語サーバー | 自動検出の手がかり |
|---|---|---|
| Python | pyright / pylsp | pyproject.toml、setup.py |
| TypeScript | typescript-language-server | tsconfig.json |
| JavaScript | typescript-language-server | package.json |
| C# | omnisharp | *.csproj、*.sln |
| Java | vscode-java / jdtls | pom.xml、build.gradle |
| Go | gopls | go.mod |
| Rust | rust-analyzer | Cargo.toml |
| C / C++ | clangd | *.c、*.cpp、*.h |
| Ruby | solargraph | Gemfile |
| PHP | intelephense | composer.json |
| Kotlin | kotlin-language-server | build.gradle.kts |
| Swift | sourcekit-lsp | Package.swift |
特長
- 🔍 言語の自動検出 — プロジェクトのルートをスキャンし、言語を示すファイル(
package.json、Cargo.toml、go.modなど)を検出します - 🔄 言語サーバーの自動選択 — フォールバックサーバーを含む固定マッピングを使用し、見つからない LSP は自動でインストールします
- 🤖 手間のかからない初期化 — MCP Roots に対応したクライアントは接続時に自動初期化されます。すべてのサーバーが正常に起動すると、ツール一覧から
lsp_initが表示されなくなります - 💾 セッションをまたいだ永続化 — 初期化済みのワークスペースと、利用可能な言語をサーバー再起動後も記憶します
- 🔁 柔軟な縮退動作 — 以前は動作していたサーバーに障害が発生すると(言語の追加やバイナリの欠落など)、
lsp_initが再表示されます - 🛠 12 個の LSP ツール — 定義、参照、シンボル、診断、名前変更、コードアクション、フォーマットなど
- 📝 読み取りと書き込みの操作 — LSP を介してコードの検査と変更の両方が可能です
- 🌐 多言語対応 — 同じプロジェクト内で複数の言語サーバーを同時に実行できます
- 📋 ハイブリッドレスポンス — 人が読みやすい
textフィールドと、生の LSP データを含むrawフィールドを提供します - 🔌 MCP Stdio プロトコル — MCP 対応のあらゆるクライアントで動作します
- ⚡ 設定不要 — インストールして実行するだけで、言語ごとのセットアップは必要ありません
インストール
重要:
lsp-mcpは、コードを保存しているマシンと同じマシンにインストールしてください。管理対象の言語サーバーはコードベースに直接アクセスする必要があります。リモート接続経由や、ソースファイルが置かれているマシンとは異なるマシンでは動作しません。
# npm
npm install -g @theupsider/lsp-mcp@latest
# bun
bun install -g @theupsider/lsp-mcp@latest
クイックスタート
VS Code / Cursor
ワークスペースの .vscode/mcp.json に追加します(推奨 — SSH リモート、WSL、Dev Containers を含め、サーバーがコードと同じマシンで実行されるようになります)。
{
"servers": {
"lsp-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@theupsider/lsp-mcp@latest"]
}
}
}
ワークスペース設定を使う理由 VS Code は、ワークスペースが存在する場所で
.vscode/mcp.jsonに定義されたサーバーを実行します。ユーザープロファイルに定義されたサーバーは常にローカルで実行されるため、コードがリモートマシン上にある場合、LSP が機能しなくなります。
CLI
# Run the server (reads from stdin, writes to stdout)
lsp-mcp
サーバーはアクティブなプロジェクトがない状態で起動します。MCP Roots プロトコルに対応しているクライアント(VS Code、Copilot など)のほとんどは自動で初期化しますが、手動で上書きする場合は引き続き lsp_init を利用できます。
Roots に対応していないクライアントでは、モデルが最初に行う操作として lsp_init を呼び出す必要があります。
lsp_init({ root: "/path/to/your/project" })
lsp_init は次の処理を行います。
- ルートをスキャンして言語のマーカーを検出し、該当する言語サーバーを起動します(可能な範囲で実行)。
- 明示的に呼び出すと、ツール一覧から表示されなくなります。以降、いずれかの LSP ツールを呼び出すと、初期化時にサーバーが検出されなかった場合、そのファイルの言語に応じたサーバーが遅延起動します。
- 先行して起動したすべてのサーバーのヘルスステータスを返します。
任意:特定の言語を事前にウォームアップする(検出を省略し、コールドスタートを高速化します)。
lsp_init({ root: "/path/to/project", languages: ["python", "typescript"] })
永続化: 初期化されると、ワークスペース設定(検出された言語)が OS 標準の設定ディレクトリ(Linux では ~/.config/lsp-mcp/、macOS では ~/Library/Application Support/lsp-mcp/、Windows では %APPDATA%\lsp-mcp\)に保存されます。次回以降のサーバー起動時には、MCP サーバーが最後に認識したルートを使って自動的に再接続するため、lsp_init を再度呼び出す必要はほとんどありません。
再表示: 以前は正常に動作していた言語サーバーの起動に失敗した場合(例:新しい言語を追加した、またはバイナリを削除した)、lsp_init がツール一覧に再表示され、モデルに再初期化が必要であることを知らせます。
利用可能なツール
読み取り専用ツール
| ツール | 説明 | 主なパラメーター | 表示 |
|---|---|---|---|
lsp_init | プロジェクトのルートに対してサーバーを初期化します | root(必須)、languages(任意の文字列配列) | 条件付き — 明示的な lsp_init 呼び出しが成功すると非表示になります |
lsp_definition | 定義へ移動 | file、line、character | 常に表示 |
lsp_references | すべての参照を検索 | file、line、character | 常に表示 |
lsp_document_symbols | ファイル内のシンボルを一覧表示 | file | 常に表示 |
lsp_workspace_symbols | ワークスペース全体でシンボルを検索 | query(上限:100~500 件) | 常に表示 |
lsp_diagnostics | エラーと警告を取得 | file(範囲:file または workspace) | 常に表示 |
lsp_type_definition | 型定義へ移動 | file、line、character | 常に表示 |
lsp_implementation | 実装を検索 | file、line、character | 常に表示 |
lsp_health | すべての LSP サーバーの状態を確認 | (なし) | 常に表示 |
書き込みツール
| ツール | 説明 | 主なパラメーター |
|---|---|---|
lsp_rename | シンボルの名前を変更します | file、line、character、newName |
lsp_code_action | コードアクションを適用/一覧表示します | file、line、character、apply |
lsp_formatting | ドキュメントをフォーマットします | file |
lsp_range_formatting | コード範囲をフォーマットします | file、range |
設定
| 環境変数 | 説明 | デフォルト |
|---|---|---|
LSP_MCP_LOG_LEVEL | ログレベル:error、info、debug | info |
セットアップスクリプト
開発環境をセットアップするためのヘルパースクリプトが2つ含まれています。
setup-languages-ubuntu24.sh— Ubuntu 24.04 にすべての言語ランタイム、コンパイラー、ツールチェーンをインストールします(Python、Node.js、Java、Go、Rust、Ruby、PHP、Kotlin、Swift など)。setup-lsp.sh— すべての言語サーバーをインストールします(pyright、typescript-language-server、omnisharp、jdtls、gopls、rust-analyzer、clangd、solargraph、intelephense、kotlin-language-server)。
# 1. Install language runtimes
chmod +x setup-languages-ubuntu24.sh
./setup-languages-ubuntu24.sh
# 2. Install language servers
chmod +x setup-lsp.sh
./setup-lsp.sh
# 3. Reload PATH
source ~/.bashrc
トラブルシューティング
言語サーバーが見つからない
言語サーバーを自動インストールできない場合、サーバーは構造化されたエラーをログに記録し、ほかの言語の処理を続行します。不足しているサーバーを手動でインストールしてください。
# Python
pipx install python-lsp-server
# C#
dotnet tool install -g omnisharp-roslyn
# Java
npm install -g vscode-java
# Ruby
gem install solargraph
サーバーが言語を検出しない
プロジェクトのルートに言語を示すファイル(TypeScript の場合は package.json、Rust の場合は Cargo.toml など)があることを確認してください。サーバーは lsp_init に渡されたディレクトリをスキャンして、これらのファイルを探します。
メモリ使用量が多い
各言語サーバーは個別のプロセスとして実行されます。多くの言語を含む大規模プロジェクトでは、ワークスペースを制限するか、LSP_MCP_LOG_LEVEL=info を使用してサーバーの状態を監視することを検討してください。
アーキテクチャ
┌─────────────────────────────────────────────┐
│ MCP Client (AI Model) │
└──────────────────┬──────────────────────────┘
│ MCP Protocol (stdio)
▼
┌─────────────────────────────────────────────┐
│ LSP MCP Server (Node.js) │
│ ┌───────────┐ ┌──────────┐ ┌───────────┐ │
│ │ lsp_init │ │ lsp_... │ │ lsp_... │ │
│ └─────┬─────┘ └────┬─────┘ └─────┬─────┘ │
│ └─────────────┼─────────────┘ │
│ ▼ │
│ Language Router & Adapter │
│ (auto-detects language → selects LSP) │
└──────┬──────────┬──────────┬───────────┬─────┘
│ │ │ │
▼ ▼ ▼ ▼
pyright typescript gopls clangd
pylsp lsp rust- ...
analyzer
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。