mcpField
L
lsp-mcp

lsp-mcp

ローカル
github.com/theUpsider開発ツール35 日前に更新

lsp-mcp について

lsp-mcpは、対応するプログラミング言語の言語サーバー機能を共通インターフェースでLLMに提供するMCPサーバーです。プロジェクト内の目印ファイルから言語を検出し、手動設定を抑えて言語サーバーを選択します。

主な機能

  1. 01プロジェクト言語の自動検出
  2. 02言語サーバーの自動選択
  3. 03定義・参照・シンボルの検索
  4. 04診断・名前変更・コードアクション
  5. 05フォーマットとコード変更
  6. 06プロジェクト内で複数言語サーバーを実行

活用シーン

  1. 01コードベース内の定義や参照を追跡
  2. 02多言語プロジェクトの診断を確認
  3. 03シンボル名の変更とコードアクションの適用
  4. 04MCPクライアント経由でファイルをフォーマット

MCP 対応

stdio経由で言語サーバー操作をMCPツールとして公開します。MCP Roots対応クライアントはワークスペースを自動初期化でき、その他のクライアントはプロジェクトルートを指定して`lsp_init`を呼び出せます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"theupsider-lsp": {
"command": "npx",
"args": [
"-y",
"@theupsider/lsp-mcp"
]
}
}
}
起動コマンドnpx -y @theupsider/lsp-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@theupsider/lsp-mcp0.1.6

ツール

17

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
rootstringはい
languagesarrayいいえ

詳細

Universal LSP MCP Server

すべての Language Server を支配する、ひとつの MCP サーバー — 言語を自動検出し、設定は不要です。

License: Apache-2.0 npm version Node.js Platform

概要

あらゆる主要なプログラミング言語で、言語モデルから Language Server Protocol(LSP) の機能を利用できる Model Context Protocol(MCP)サーバーです。既存の LSP-MCP サーバーとは異なり、このプロジェクトは13 言語をすぐにサポートし、手動設定は不要です。コードベースを自動検出して適切な言語サーバーを選択し、すべての LSP 操作を、安定した言語非依存のツールインターフェースを通じて提供します。

サポート対象言語

言語言語サーバー自動検出の手がかり
Pythonpyright / pylsppyproject.toml、setup.py
TypeScripttypescript-language-servertsconfig.json
JavaScripttypescript-language-serverpackage.json
C#omnisharp*.csproj、*.sln
Javavscode-java / jdtlspom.xml、build.gradle
Gogoplsgo.mod
Rustrust-analyzerCargo.toml
C / C++clangd*.c、*.cpp、*.h
RubysolargraphGemfile
PHPintelephensecomposer.json
Kotlinkotlin-language-serverbuild.gradle.kts
Swiftsourcekit-lspPackage.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 は次の処理を行います。

  1. ルートをスキャンして言語のマーカーを検出し、該当する言語サーバーを起動します(可能な範囲で実行)。
  2. 明示的に呼び出すと、ツール一覧から表示されなくなります。以降、いずれかの LSP ツールを呼び出すと、初期化時にサーバーが検出されなかった場合、そのファイルの言語に応じたサーバーが遅延起動します。
  3. 先行して起動したすべてのサーバーのヘルスステータスを返します。

任意:特定の言語を事前にウォームアップする(検出を省略し、コールドスタートを高速化します)。

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、debuginfo

セットアップスクリプト

開発環境をセットアップするためのヘルパースクリプトが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

ライセンス

Apache-2.0

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。