VS Code MCP設定ガイド — mcp.jsonの書き方とClaude Code拡張との違い
VS Code本体(GitHub Copilot Chat)でMCPサーバーを設定する手順です。mcp.jsonの書式、インストール方法、サンドボックス、Claude Code拡張との設定の違いまで扱います。
VS CodeのMCP対応とは — Claude Code拡張のMCP設定と何が違うか
VS Code本体は、GitHub Copilot Chatの機能としてMCP(Model Context Protocol)サーバーに対応しています。MCPは外部ツールやデータソースをAIに接続するオープン標準規格です。VS Code上では、ファイル操作・データベース接続・外部API呼び出しといったツールをチャットから直接呼び出せるようになります。プロトコル自体の全体像はMCPとはで扱っており、本記事はVS Code本体での設定・管理手順に絞ります。
ここで注意が必要なのは、VS Code本体のMCP設定とClaude Code拡張のMCP設定は別物という点です。両方ともVS Codeのエディタ上で動きますが、設定ファイルの場所も、対象になるチャットクライアントも独立しています。
| 項目 | VS Code本体(Copilot Chat) | Claude Code(CLI・VS Code拡張) |
|---|---|---|
| 設定ファイル | VS Code本体(Copilot Chat).vscode/mcp.json(ワークスペース)/ ユーザープロファイルのmcp.json | Claude Code(CLI・VS Code拡張).mcp.json(プロジェクト)/ ~/.claude.json(個人) |
| 追加コマンド | VS Code本体(Copilot Chat)MCP: Add Server / code --add-mcp | Claude Code(CLI・VS Code拡張)claude mcp add |
| サーバーが使えるチャット | VS Code本体(Copilot Chat)Copilot Chat(Agent/Chatビュー) | Claude Code(CLI・VS Code拡張)Claude Codeのセッション(CLI・拡張共通) |
| 他アプリからの検出 | VS Code本体(Copilot Chat)chat.mcp.discovery.enabledでClaude Desktop等から検出 | Claude Code(CLI・VS Code拡張)非対応(CLIが独自にスコープ管理) |
Claude Codeのclaude mcp addによるMCP設定はClaude Code MCP設定ガイド、Claude Code自体のVS Code拡張の使い方はClaude Code VS Code拡張機能の使い方にまとめています。この記事が扱うのはVS Code本体(Copilot Chat)側のMCP設定で、Claude Codeを一切使っていない環境でも通用する手順です。
前提条件
必要なのはVS CodeとGitHub Copilot Chat拡張機能の2つです。MCPサーバーはCopilot ChatのAgentモードやチャットビューから呼び出す前提の機能なので、Copilot Chatが有効になっていないとインストールしたサーバーのツールを使えません。
- VS Code本体(最新の安定版を推奨)
- GitHub Copilot Chat拡張機能(サインイン済み)
- ローカルサーバーを使う場合はNode.js等、サーバーの実行環境(
npxで動くサーバーが大半)
Claude Codeを併用している場合でも、この前提条件はClaude Codeの導入状況と無関係です。VS Code本体のMCP設定はCopilot Chat単体で完結します。
MCPサーバーをインストールする3つの方法
MCPサーバーの追加は、拡張機能ギャラリーからの検索インストール、mcp.jsonの手動編集、コマンドラインの3経路があります。まず一番手早いギャラリー経由の手順を確認します。
拡張機能ビュー(⇧⌘X / Ctrl+Shift+X)を開き、検索欄に@mcpと入力すると、利用可能なMCPサーバーの一覧が表示されます。個別サーバー名まで絞りたい場合は@mcp playwrightのように続けて入力します。一覧からInstallを選ぶとユーザープロファイルにインストールされ、初回起動時に「このサーバーを信頼するか」の確認ダイアログが出ます。
ワークスペース単位でチームと共有したい場合は、サーバーを右クリックしてInstall in Workspaceを選びます。これにより.vscode/mcp.jsonが更新され、バージョン管理に含めればチーム全員が同じMCPサーバー構成を使えます。
| 導入先 | 適した場面 |
|---|---|
| ユーザープロファイル | 適した場面個人の開発環境全体で使う汎用ツール(検索・ドキュメント参照系) |
ワークスペース(.vscode/mcp.json) | 適した場面プロジェクト固有の接続先(社内DB・チーム共通のAPI)をチームで共有 |
コマンドラインからも追加できます。code --add-mcpにJSON形式のサーバー設定を渡すと、ユーザープロファイルに登録されます。登録した時点ではまだ起動しておらず、初回起動時の信頼確認は他の経路と同じように行われます。
code --add-mcp "{\"name\":\"my-server\",\"command\":\"uvx\",\"args\":[\"mcp-server-fetch\"]}"mcp.jsonの書き方 — stdioとHTTP/SSEの設定例
mcp.jsonはservers / inputs / sandboxの3セクションで構成される設定ファイルです。サーバーの接続方式によって書き方が変わります。ローカルで動くサーバーはstdio(標準入出力)、リモートのサーバーはHTTPかSSE(Server-Sent Events)を使います。
stdioサーバーで必須なのはtypeとcommandの2フィールドだけです。以下はローカルパッケージをnpx経由で起動する最小構成です。
{
"servers": {
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}
}
}リモートサーバーはtypeにhttpかsseを指定し、urlでエンドポイントを指定します。VS CodeはまずHTTP Streamトランスポートを試し、対応していなければSSEにフォールバックします。認証が必要なサーバーにはheadersかoauthを追加します。
{
"servers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"clientId": "example-client-id"
}
}
}
}oauthを設定すると、初回接続時にブラウザが開いて認可フローが自動的に進みます。APIキーをそのまま書き込みたくない場合は、inputs配列で入力変数を定義し、${input:変数名}の形でサーバー設定から参照します。入力タイプは自由入力のpromptString、選択式のpickString、コマンド実行結果を使うcommandの3種類です。
{
"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}"
}
}
}
}password: trueを付けると入力値が画面上でマスクされ、一度入力すれば以降は安全に保存された値が再利用されます。サーバー名はcamelCase(uiTestingのような形)で、空白や特殊文字を避けるのが公式の命名規則です。
ツール呼び出し以外にできること — リソース・プロンプト・MCP Apps
MCPサーバーが提供できる機能はツール呼び出しだけではありません。VS Codeはリソース・プロンプト・MCP Appsの3種類にも対応しています。
| 機能 | 何ができるか | 呼び出し方 |
|---|---|---|
| リソース | 何ができるかファイル・DBテーブル・APIレスポンスをチャットの文脈として添付する読み取り専用データ | 呼び出し方チャットビューの「Add Context」→「MCP Resources」、またはMCP: Browse Resourcesコマンド |
| プロンプト | 何ができるかサーバー側で用意したテンプレートで定型作業を標準化 | 呼び出し方チャット入力欄に/<サーバー名>.<プロンプト名>と入力 |
| MCP Apps(実験的機能) | 何ができるかフォームや可視化などのUIをチャット内にインラインで表示 | 呼び出し方サーバーが対応していれば、チャット内に自動的に表示される |
いずれもサーバー側が対応している場合にのみ使えます。リソースとプロンプトはサーバーを入れた時点で追加設定なしに使えます。MCP Appsは実験的機能で、chat.mcp.apps.enabled設定で有効・無効を切り替えます。
サンドボックスと信頼設定で安全に使う
ローカルのMCPサーバーは任意のコードを実行できるため、VS Codeは初回起動時に信頼確認ダイアログを出します。ダイアログでサーバー設定へのリンクを開き、コマンドや引数を確認してから起動を承認する流れです。信頼済みの状態をリセットしたい場合は、コマンドパレットからMCP: Reset Trustを実行します。
macOSとLinuxでは、stdioサーバーをサンドボックス化してファイルシステムとネットワークへのアクセスを制限できます。サーバー設定に"sandboxEnabled": trueを追加し、sandboxオブジェクトで許可・拒否ルールを定義します。
{
"servers": {
"myServer": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@example/mcp-server"],
"sandboxEnabled": true
}
},
"sandbox": {
"filesystem": {
"allowWrite": ["${workspaceFolder}"],
"denyRead": ["${userHome}/.ssh"]
},
"network": {
"allowedDomains": ["api.example.com", "*.cdn.example.com"]
}
}
}サンドボックスが有効なサーバーは、ツール呼び出しのたびに確認ダイアログを出さず自動承認されます。制御された環境で動く前提だからです。サンドボックスが使えるのはmacOSとLinuxだけで、Windowsでは利用できません。
複数のMCPサーバーを管理する — 有効化・無効化・トラブルシュート
インストール済みのMCPサーバーは3つの経路から管理できます。拡張機能ビューの「MCP SERVERS - INSTALLED」セクション、mcp.jsonエディタのインラインアクション、コマンドパレットのMCP: List Serversです。個別サーバーの右クリックメニューから、開始・停止・ログ表示・アンインストール・キャッシュ済みツールのクリアが行えます。
有効/無効の切り替えはmcp.json本体とは別に保存されるため、チームで共有する設定ファイルを汚しません。個人的に一時停止したいサーバーがあっても、コミット対象のワークスペース設定には影響しません。
組織で導入している場合、chat.mcp.access設定によって使えるMCPサーバーを管理者側で制限できます。GitHub側のポリシーと連動する項目で、この設定はユーザー側では変更できません。
VS Codeはchat.mcp.discovery.enabled設定を使い、Claude Desktopなど他のアプリケーションが持つMCPサーバー設定を検出して再利用できます。ただし公式ドキュメントが名指ししているのはClaude Desktopで、Claude Code CLIの.mcp.jsonが同じ経路で検出対象になるとは明記されていません。Claude CodeとVS Code本体の両方でMCPサーバーを使いたい場合、現状は双方の設定ファイルにそれぞれ登録するのが確実な方法です。
設定変更のたびに手動で再起動したくない場合は、chat.mcp.autostart設定(実験的機能)で設定変更時の自動再起動を有効にできます。
よくあるつまずき
Dockerサーバーが起動しない
stdioサーバーの実体がDockerコンテナの場合、-d(デタッチ)オプションを付けるとVS Codeとの通信が成立しません。コンテナはフォアグラウンドで動かす必要があります。
mcp.jsonを直接開いて起動すると信頼確認をスキップする
設定ファイルのインラインアクション(コードレンズ)からサーバーを直接起動すると、信頼ダイアログが表示されないまま起動します。出所が不明なサーバー設定では、この経路での起動を避けるのが安全です。
ツール一覧が古いまま更新されない
サーバー側でツールの定義を変えても、VS Code側にキャッシュされた一覧が残ることがあります。コマンドパレットからMCP: Reset Cached Toolsを実行すると解消します。自作サーバーで挙動そのものが怪しい場合は、VS Codeに繋ぐ前にMCP Inspectorの使い方でサーバー単体の応答を確認すると原因の切り分けが早くなります。
Agent Hostがワークスペースの.vscode/mcp.jsonを読まない
VS CodeのAgent Host機能(ヘッドレスなCopilotツール実行基盤)は.vscode/mcp.jsonを直接読みません。対話入力が必要な${input:...}変数を含む設定を除き、VS Code側からAgent Hostへ設定が転送される形です。Agent Hostや他のCopilotツールと設定を共有したい場合は別の手段があります。ワークスペース直下の.mcp.json(.vscode/配下ではない点に注意)か、ユーザーの~/.copilot/mcp-config.jsonです。ファイル名が似ているため混同しやすいポイントです。
上記のいずれにも当てはまらない場合は、チャットビューのエラー通知からShow Outputを選ぶか、MCP: List Serversで対象サーバーを選んでShow Outputを実行すると、サーバー自体が出力したログを確認できます。
まとめ
VS Code本体のMCP設定は、Copilot Chat専用のmcp.json(ワークスペースは.vscode/mcp.json、個人用はユーザープロファイル配下)で完結します。ギャラリーからの検索インストール、手動編集、コマンドラインの3経路があり、リモートサーバーはOAuthやheadersで認証を通します。macOS・LinuxならサンドボックスでMCPサーバーの権限を絞り込めます。
Claude CodeのMCP設定(claude mcp add・.mcp.json・~/.claude.json)とは完全に独立した仕組みです。両方を使う場合は、どちらの設定ファイルに何を登録したかを意識して管理する必要があります。
よくある質問
VS CodeのMCPサーバーはClaude Codeからも使えますか
使えません。VS Code本体のCopilot Chatが読むmcp.jsonと、Claude Codeが読む.mcp.json/~/.claude.jsonは別のファイルです。互いのMCPサーバー登録を共有しないため、同じサーバーを両方から使いたい場合はそれぞれの設定に個別に追加します。
mcp.jsonをGitにコミットしても安全ですか
APIキーなどの機密情報をinputsの入力変数経由にしていれば、.vscode/mcp.json自体は安全にコミットできます。値をenvフィールドに直接書き込むと、リポジトリの閲覧者全員に漏れるため避けます。
プロファイルごとに別のMCPサーバー構成を持てますか
持てます。VS Codeの複数プロファイル機能を使っている場合、プロファイルごとに独立したユーザーmcp.jsonを持てます。仕事用と検証用でプロファイルを分けている場合、MCPサーバーの構成もプロファイル単位で切り替わります。
リモートMCPサーバーでOAuth以外の認証方法は使えますか
使えます。headersフィールドにAuthorization: Bearer ${input:api-token}のようなヘッダーを設定すれば、OAuthを実装していないAPIキー方式のサーバーにも接続できます。
リソースを添付するのに毎回設定が必要ですか
いいえ。リソースはサーバーが対応してさえいれば追加設定なしで使えます。ただし自動でチャットに読み込まれるわけではなく、リクエストごとに「Add Context」から明示的に添付する操作が必要です。