VS Code MCP 設定ガイド:GitHub Copilot Chat に MCP サーバーを追加
VS Code MCP の設定ガイド。@mcp ギャラリーからのインストール、.vscode/mcp.json と .mcp.json の書き方、inputs によるシークレット管理、OAuth 認証、エラーの解決方法を解説します。
VS Code に MCP サーバーを追加する方法
VS Code に MCP サーバーを追加するいちばん早い方法は、組み込みのギャラリーです。拡張機能ビューを開いて @mcp で検索し、Install をクリックします。ギャラリーにないサーバーは、コマンドパレットで MCP: Add Server を実行するか、設定ファイルを直接編集します。.vscode/mcp.json(サーバーは servers の下)か、ポータブルな .mcp.json(サーバーは mcpServers の下)です。これでサーバーのツールが GitHub Copilot Chat のエージェントから使えるようになります。
ここでの内容はすべて VS Code の公式ドキュメント(MCP サーバーの追加と管理と MCP 設定リファレンス)と照合しています。試すサーバーを探しているなら、MCP サーバーディレクトリをご覧ください。
クイックリファレンス
| タスク | 方法 |
|---|---|
| ギャラリーからインストール | 拡張機能ビューで @mcp を検索し Install(または右クリックで Install in Workspace) |
| ガイド付きセットアップ | コマンドパレットで MCP: Add Server |
| ワークスペース設定(VS Code 形式) | .vscode/mcp.json、トップレベルは servers |
| ワークスペース設定(ポータブル形式) | ワークスペースルートの .mcp.json、トップレベルは mcpServers |
| ユーザー設定 | MCP: Open User Configuration |
| 起動・停止・ログ表示 | MCP: List Servers でサーバーを選択 |
| ツールを個別にオン・オフ | チャット入力欄の Configure Tools |
| CLI からインストール | code --add-mcp '...json...' |
| 古いツール情報を消去 | MCP: Reset Cached Tools |
ステップ 1:MCP ギャラリーからインストールする
VS Code の拡張機能ビューには MCP サーバーのギャラリーがあります。
- 拡張機能ビューを開き、検索欄に
@mcpと入力します(例:@mcp playwright)。 - Install でユーザープロファイルに追加するか、右クリックして Install in Workspace を選び
.vscode/mcp.jsonに書き込みます。 - 確認が出たら、そのサーバーを信頼することを承認します。VS Code がサーバーを起動し、ツールを検出します。
- Chat ビューを開き、サーバーにできることを頼んでみます。例えば Playwright MCP サーバーなら「code.visualstudio.com を開いてスクリーンショットを撮って」です。
MCP: Add Server → Browse MCP Servers からも同じギャラリーを開けます。
ステップ 2:mcp.json を手動で設定する
ギャラリーにないサーバーや、チームで共有したい構成は、自分で設定ファイルを書きます。VS Code は 4 か所を読み込みます。
| スコープ | ファイル | トップレベルのキー | 向いている用途 |
|---|---|---|---|
| ワークスペース | ルートの .mcp.json | mcpServers | チームや他の Copilot ツールとの共有 |
| ワークスペース | .vscode/mcp.json | servers | VS Code 専用機能:入力変数、開発モード、サンドボックス |
| ユーザー | ~/.copilot/mcp-config.json(または $COPILOT_HOME/mcp-config.json) | mcpServers | Copilot CLI と共有する個人用サーバー |
| ユーザープロファイル | プロファイル内の mcp.json(MCP: Open User Configuration) | servers | プロファイル固有のサーバー |
現在のドキュメントでは、同じファイルを他のツールでも使えることから、ワークスペースルートの .mcp.json がサーバー共有の推奨場所とされています。一方 .vscode/mcp.json は VS Code の追加機能をサポートする形式なので、このガイドの例ではこちらを使います。どちらのファイルもソース管理にコミットできますが、シークレットは含めないでください。
ローカル(stdio)サーバーとリモート(HTTP)サーバー
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp"
},
"memory": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}
}
}
1 つ目はリモートの GitHub MCP サーバー、2 つ目はローカルで Memory MCP サーバーを動かします。ポータブルな .mcp.json では、同じエントリーを servers ではなく mcpServers の下に書きます。
フィールド一覧:
- stdio:
type("stdio")、command、args、cwd、env、envFile、さらにdevとsandboxEnabled。 - HTTP/SSE:
type("http"または"sse")、url、headers、oauth。"http"の場合、VS Code はまず Streamable HTTP を試し、サーバーが対応していなければ SSE にフォールバックします。
command は PATH 上にあるか、フルパスで指定する必要があります。Docker でサーバーを動かす場合はデタッチオプション(-d)を使わないでください。stdio サーバーはフォアグラウンドで動き続ける必要があります。これらのファイルでは IntelliSense が効くので、フィールド名のタイプミスはすぐに分かります。
ステップ 3:入力変数でシークレットを守る
コミットした mcp.json に API キーを直書きするのは典型的な失敗です。.vscode/mcp.json では inputs を宣言できます。サーバーの初回起動時に VS Code が値の入力を求め、その後は安全に保存します。
{
"inputs": [
{
"type": "promptString",
"id": "perplexity-key",
"description": "Perplexity API Key",
"password": true
}
],
"servers": {
"perplexity": {
"type": "stdio",
"command": "npx",
"args": ["-y", "server-perplexity-ask"],
"env": {
"PERPLEXITY_API_KEY": "${input:perplexity-key}"
}
}
}
}
入力の種類は promptString(自由入力。password: true で入力を隠す)、pickString(options のリストから選択)、command(VS Code コマンドの結果を使う)の 3 つです。入力変数はヘッダーにも使えます(例:"Authorization": "Bearer ${input:api-token}")。
ほかの方法として、"envFile": "${workspaceFolder}/.env" で stdio サーバーに dotenv ファイルを読み込ませたり、パスに ${workspaceFolder} などの定義済み変数を使ったりできます。形式による制限に注意してください。inputs、envFile、開発モードが使えるのは .vscode/mcp.json とプロファイルの mcp.json だけで、ポータブルな .mcp.json では使えません。また、${input:...} の値を必要とするサーバーは、ポータブル形式のファイルを直接読む Copilot ハーネスのセッションには転送されません。
ステップ 4:リモートサーバーの認証
ホスト型サーバーの多くは OAuth を使います。サーバーが認証を要求すると、VS Code は初回接続時にブラウザーウィンドウを開き、フローを自動で処理します。プロバイダーが事前登録済みのクライアントを求める場合は、oauth オブジェクトを追加します。
{
"servers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"clientId": "example-client-id"
}
}
}
}
API キー方式のサーバーでは、入力変数を使ってキーを headers で送ります。企業では "enterpriseManaged": true(プレビュー)を設定し、SSO の ID プロバイダー経由でサインインすることもできます。MCP の OAuth の仕組みについては MCP 認証ガイドをご覧ください。
ステップ 5:Copilot Chat でツールを使う
サーバーが動き出すと、Chat ビューのエージェントがそのツールを使えるようになります。
- エージェントに任せる。 必要に応じてツールを呼び出し、承認プロンプトを表示します。ツールの詳細を開いて入力を確認し、Allow をクリックします。
- ツールを直接指定する。 チャット入力欄で
#を入力してツールを選びます。 - ツールを切り替える。 チャット入力欄の Configure Tools で、タスクに必要なツールだけをエージェントに見せます。
128 ツールの上限。 1 回のチャットリクエストで有効にできるツールは最大 128 個です。「Cannot have more than 128 tools per request」と表示されたら、ツールピッカーでツールやサーバーごと選択を外すか、github.copilot.chat.virtualTools.threshold 設定で仮想ツールを有効にして、大量のツールを自動でグループ化します。ツールを少なく、関連性の高いものに絞るほどエージェントの選択も正確になります。MCP ツールディスカバリーも参考にしてください。
VS Code の MCP サーバーは、ツールだけでなく resources、prompts、インタラクティブな MCP Apps も提供できます。
サーバーを追加するその他の方法
コマンドライン:
code --add-mcp "{\"name\":\"my-server\",\"command\": \"uvx\",\"args\": [\"mcp-server-fetch\"]}"
インストールリンク。 サーバーの作者は vscode:mcp/install?... 形式のリンクを公開できます。JSON 設定(name、command、args など)を URL エンコードして末尾に付けます。リンクをクリックすると VS Code のインストールフローが開きます。
他のアプリの設定を再利用する。 chat.mcp.discovery.enabled 設定を使うと、Claude Desktop、Cursor、Windsurf、Copilot CLI で設定済みのサーバーを VS Code が取り込みます。Copilot CLI の検出はデフォルトでオン、その他はオフです。
Dev Container。 devcontainer.json の customizations.vscode.mcp.servers にサーバーを書くと、VS Code がコンテナ内の設定に書き込みます。
設定の同期。 Settings Sync: Configure を実行して MCP Servers を有効にすれば、複数のマシンで同じ構成を使えます。
信頼とサンドボックス
ローカル MCP サーバーはあなたの権限で任意のコードを実行できます。VS Code には 2 つの安全策があります。
- 信頼の確認。 ワークスペースのサーバーはワークスペースの信頼(Workspace Trust)を引き継ぎ、制限モードでは起動しません。他のソースのサーバーは、初回起動時や設定変更時に信頼を求めます。MCP: Reset Trust でこれらの判断をリセットできます。
- サンドボックス(macOS と Linux)。 stdio サーバーに
"sandboxEnabled": trueを設定し、sandboxオブジェクトで書き込みを特定フォルダーに、ネットワークアクセスを特定ドメインに限定できます。
より広いチェックリストは MCP セキュリティのベストプラクティスをご覧ください。
VS Code MCP のトラブルシューティング
サーバーが失敗すると、Chat ビューにエラー表示が出ます。それをクリックして Show Output を選ぶか、MCP: List Servers でサーバーを選んで Show Output を選ぶと、ログを確認できます。
| 症状 | 対処 |
|---|---|
| サーバーが起動しない | ワークスペースが制限モード、または信頼の確認を拒否した。ワークスペースを信頼するか MCP: Reset Trust を実行する。 |
command not found や ENOENT | コマンドが VS Code の PATH にない。npx、uvx、python をフルパスで指定する。 |
| Docker ベースのサーバーが固まる | docker run の引数から -d を外す。stdio にはフォアグラウンドのコンテナが必要。 |
| ツールが表示されない・古い | MCP: List Servers からサーバーを再起動し、MCP: Reset Cached Tools を実行する。 |
| 「Cannot have more than 128 tools per request」 | Configure Tools でツールの選択を外すか、仮想ツールを有効にする。 |
| チャットでは動くが Copilot ハーネスのセッションでは動かない | ${input:...} を使っている。.mcp.json に移し、別の方法でシークレットを渡す。 |
| リモートサーバーが 401 を返す | サインインしていないか、ヘッダーの値が誤っている。サーバーの出力ログを確認し、OAuth のプロンプトを完了するか、headers に渡したトークンを修正する。 |
ログで原因が分からない場合は、MCP Inspector でサーバー単体をテストしましょう。
次のステップ
- MCP サーバーディレクトリで自分の技術スタックに合うサーバーを探しましょう。コーディング用途では GitHub、Playwright、Context7 がよく選ばれます。
- 他のエディターも使っているなら、Cursor MCP 設定や Claude Code MCP と比べてみてください。
- VS Code でローカルモデルから MCP ツールを使いたいなら、Ollama で MCP を使う方法をご覧ください。
よくある質問
VS Code の MCP 設定ファイルはどこにありますか?
- ワークスペースのサーバーは .vscode/mcp.json(servers の下)か、ワークスペースルートのポータブルな .mcp.json(mcpServers の下)に書きます。ユーザーレベルのサーバーはプロファイルの mcp.json にあり、「MCP: Open User Configuration」で開けます。
Claude Desktop や Cursor で設定済みの MCP サーバーを VS Code で使えますか?
- 使えます。chat.mcp.discovery.enabled 設定を有効にし、Claude Desktop、Cursor、Windsurf、Copilot CLI などのソースを選びます。Copilot CLI の検出はデフォルトでオン、その他はオフです。
VS Code で API キーを直書きせずに MCP サーバーへ渡すには?
- .vscode/mcp.json に type が promptString、password が true の input を宣言し、env や headers から入力変数の構文(input: の後に input の id)で参照します。VS Code は一度だけ入力を求め、値を安全に保存します。
VS Code では MCP ツールを同時にいくつ使えますか?
- 1 回のチャットリクエストで有効にできるツールは最大 128 個です。上限に達したら「Configure Tools」でツールの選択を外すか、github.copilot.chat.virtualTools.threshold 設定で仮想ツールを有効にします。