VSC-MCP について
VSC-MCP は、言語サーバープロトコル(LSP)の機能を MCP ツールとして公開し、AI クライアントが標準化されたツール呼び出しでコードを解析・編集できるようにするプロジェクトです。スタンドアロンモードでは TypeScript と JavaScript を対象とし、Docker モードでは OpenVSCode Server を使って VS Code が対応する各種言語を扱えます。
主な機能
- 01LSP によるシンボルの読み取りと編集
- 02参照の検索と診断情報の取得
- 03ファイルの読み取り、書き込み、検索置換
- 04ALLOWED_DIRECTORIES によるアクセス制限
- 05OpenVSCode Server を用いた Docker モード
活用シーン
- 01AI クライアントによる関数やクラスの名前指定での検索と編集
- 02IDE を開かずにコードのエラーを確認
- 03Docker 内での Rust、Go、Python などの LSP サポート
MCP 対応
本プロジェクトは MCP サーバーであり、read_symbol、edit_symbol、get_errors、find_references などのコードツールを Claude Desktop などの MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
VSC-MCP
このプロジェクトでは、Language Server Protocol(LSP)の機能を**MCP(Model Context Protocol)**のツールとして提供します。AI クライアントは、標準化された MCP ツール呼び出しを通じて、プログラムからコードを分析および編集できます。
当初は TypeScript のコーディングのみに焦点を当てたシンプルなプロジェクトでしたが、VS Code がサポートするあらゆる言語に対応する、フル機能の MCP サーバーへと進化しました。
最新の変更点とヘッドレス VC Code への移行に関する詳細は、こちらをご覧ください。
Docker モードと VS Code LSP の統合
VSC-MCP は、次の 2 つのモードで実行できます。
- スタンドアロンモード:ローカルの typescript-language-server を起動し、TypeScript/JavaScript のみに LSP サポートを提供します。
- Docker モード:Gitpod が提供するヘッドレス VS Code の移植版、OpenVSCode Server を Docker 内で実行し、Rust、Go、C#、Python など、VC Code がサポートするあらゆる言語に、より充実した LSP サポートを提供します。
Docker モードを使う理由
- 統一された LSP:言語ごとにローカルの言語サーバーを個別に起動する手間を省けます。
- 豊富な拡張機能エコシステム:VS Code の拡張機能サポートと API を活用し、高度な言語機能を利用できます。
- ライブ編集:http://localhost:3000 を開くと、AI エージェントが MCP とやり取りする際の編集をリアルタイムで確認できます。
- IDE なしで動作:IDE を開かずにコードを記述および分析できます。
仕組み
- OpenVSCode Server は Docker 内で実行され、ポート
3000(IDE UI)と5007(LSP ブリッジ)を公開します。 - 必要な VS Code 拡張機能(例:rust-analyzer、pyright、eslint、VSC-MCP 拡張機能)が事前にインストールされています。
- VSC-MCP 拡張機能は、MCP と VS Code バックエンドの間に WebSocket チャネルを作成します。
- ファイル I/O ツールは直接アクセスを使用し、LSP ツールは VS Code 内部の言語サーバーを使用します。
インストール
前提条件
セットアップ
- リポジトリをクローンし、ディレクトリに
cdします。 - 依存関係をインストール
bun install - OpenVSCode Server をビルドして起動(プロジェクトをコンテナにマウントします)
PROJECT_PATH=/path/to/your/project docker-compose up - AI クライアントに MCP を登録(
settings.jsonの例){ "mcpServers": { "vsc-mcp": { "command": "bun", "args": ["<vsc_mcp_cloned_dir>/src/index.ts"], "env": { "USE_VSCODE_LSP": "true", "LOG_DIR": "<vsc_mcp_cloned_dir>/logs", "ALLOWED_DIRECTORIES": "/path/to/your/project" } } } }
環境変数
| 変数 | 目的 |
|---|---|
USE_VSCODE_LSP | Docker/VS Code LSP モードを有効にするには true に設定します。 MCP はローカルの言語サーバーを起動する代わりに、LSP リクエストを VS Code(ポート 5007)に転送します。 |
ALLOWED_DIRECTORIES | 直接ファイルを操作できるディレクトリを指定されたものに制限します。 |
LOG_DIR | MCP がデバッグ用のログを書き込む場所です。 |
**注:**デフォルトでは、
USE_VSCODE_LSPはfalse(スタンドアロンモード)です。Docker/VS Code LSP の統合を使用するには、trueに設定してください。
推奨される AI クライアント設定
Claude Desktop
現時点で最適なワークフローは、AI クライアントとして Claude Desktop を使用することです。MCP サーバーに対応しており、月額 20$/month のプランが利用できます。また、VSC-MCP ツールを使うことで、コードベースについて「チャット」しながら作業できます。
- MacOS の場合:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows の場合:
%APPDATA%/Claude/claude_desktop_config.json
設定ファイルの mcp_servers セクションに、次の設定を追加してください。
{
"mcpServers": {
"repomix": {
"command": "npx",
"args": [
"-y",
"repomix",
"--mcp"
]
},
"vsc-mcp": {
"command": "bun",
"args": [
"<vsc_mcp_cloned_dir>/src/index.ts"
],
"env": {
"USE_VSCODE_LSP": "true",
"LOG_DIR": "<vsc_mcp_cloned_dir>/logs",
"ALLOWED_DIRECTORIES": "/path/to/your/project"
}
}
}
}
repomix MCP サーバーの依存関係を追加することをおすすめします。理由については、こちらのブログ記事をご覧ください。
<vsc_mcp_cloned_dir> を、vsc-mcp をクローンした実際のディレクトリパスに置き換えてください。
セキュリティ機能
Docker ワークスペースの制限
Docker を起動するときに、ワークスペースディレクトリを指定する必要があります。
PROJECT_PATH=/path/to/your/project docker-compose up
VSC-MCP ツールは、ワークスペースディレクトリ内のファイルにのみアクセスできます。
パスの制限
VSC-MCP ツールには、OS のファイル操作(ディスク上のファイルの読み取りと書き込み)を特定のディレクトリに制限するセキュリティ機能があります。
-
ALLOWED_DIRECTORIES:ファイル操作を許可するディレクトリをカンマ区切りで指定する環境変数です。
例:
ALLOWED_DIRECTORIES=/home/user/projects,/tmp/workspace -
この環境変数が設定されていない場合、操作は現在の作業ディレクトリ内のみに制限されます。
-
すべてのファイル操作(読み取り、書き込み、編集)で、対象パスが許可されたディレクトリ内にあるかどうかが確認されます。
-
許可されたディレクトリ外のファイルにアクセスしようとすると、「Access denied」エラーが発生します。
この機能により、システム上の機密ファイルやディレクトリへの不正なアクセスを防止できます。
利用可能なツール
現在、次のツールを利用できます。
-
edit_symbol:LSP を使用して、指定したファイル内の名前と種類でシンボル(関数、クラス、メソッドなど)を編集します。- 関数、メソッド、クラス、インターフェース、変数、定数、プロパティ、フィールドなど、さまざまなシンボルの種類に対応しています。
- LSP の workspace/symbol および textDocument/documentSymbol リクエストを使用してシンボルを検索します。
- ファイルに直接編集を適用します。
-
read_symbol:LSP を使用して、指定したファイル内の名前と種類でシンボル(関数、クラス、メソッドなど)を読み取ります。- editSymbol と同じシンボルの種類に対応しています。
- LSP を使用してシンボルを特定し、その内容を抽出します。
- シンボルの内容と位置情報を返します。
-
read_file:ファイルの内容を読み取ります。- ファイル拡張子に応じた適切な MIME タイプとともに、ファイルの内容を返します。
- コード、テキスト、設定ファイルなど、さまざまなファイル形式を処理します。
- ファイルが見つからない場合やディレクトリへのアクセスなど、よくある問題について詳細なエラーメッセージを表示します。
-
write_file:指定された内容で新しいファイルを作成するか、既存のファイルを上書きします。- 存在しない場合は親ディレクトリを作成します。
- あらゆるファイル形式に対応しています。
- ファイル操作の情報(作成または上書き、ファイルサイズ)を返します。
-
search_replace_file:ファイル内の内容を検索し、新しい内容に置き換えます。- 検索時に空白の違い(スペース、タブ、改行)を無視します。
- 内容パターンの柔軟な照合に対応しています。
- 置換した回数を返します。
-
get_errors:LSP の textDocument/diagnostic API を使用して、特定のファイルのコードエラーや問題を取得します。- エラーメッセージ、重大度、位置など、詳細な診断情報を提供します。
- VS Code 拡張機能の diagnostics API を使用してコードを検証します。
- コードの問題に関する構造化された情報を返します。
-
find_references:LSP を使用して、指定したファイル内の名前と種類でシンボル(関数、クラスなど)へのすべての参照を検索します。- 関数、メソッド、クラス、インターフェース、変数、定数、プロパティ、フィールドなど、さまざまなシンボルの種類に対応しています。
- LSP の textDocument/reference API を使用して、シンボルへのすべての参照を検索します。
- ファイルパスと位置を含む参照の一覧を返します。
- コードの分析、リファクタリング、コードの使用状況の把握に役立ちます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。