MCP設定リファレンス
この記事では、MCPサーバー設定ファイルのフォーマット、関連コマンド、およびVS Codeにおける設定についてのリファレンスを提供します。MCPサーバーの追加および管理に関する詳細については、MCPサーバーの追加と管理を参照してください。
設定ファイル
MCPサーバーの設定は、JSONファイルであるmcp.jsonに保存されます。このファイルは、ワークスペース(.vscode/mcp.json)またはユーザープロファイル内に配置できます。VS Codeは、設定ファイルに対するIntelliSenseを提供します。
設定の構造
設定ファイルには主に3つのセクションがあります
-
"servers": {}: サーバー名とそれらの設定をマッピングするオブジェクトです。各キーはサーバー名で、値はサーバーの設定オブジェクトです。サーバーのタイプに応じて、異なるフィールドが必要になります。 -
"inputs": []: APIキーなどの機密情報用の入力変数定義のオプション配列です。 -
"sandbox": {}: サンドボックス化されたサーバーのファイルシステムおよびネットワークのアクセスルールを定義するオプションオブジェクトです。サンドボックス設定を参照してください。macOSおよびLinuxにのみ適用されます。
サーバー設定では、定義済みの変数を使用して、たとえばワークスペースフォルダ(${workspaceFolder})を参照することができます。
標準入出力(stdio)サーバー
標準入力および標準出力ストリームを介して通信するサーバーには、この設定を使用します。これは、ローカルで実行されるMCPサーバーとして最も一般的なタイプです。
| フィールド | 必須 | 説明 | 例 |
|---|---|---|---|
type |
はい | サーバーの接続タイプ | "stdio" |
command |
はい | サーバーの実行ファイルを起動するコマンド。システムのパス(環境変数PATH)に存在するか、フルパスを含める必要があります。 | "npx", "node", "python", "docker" |
args |
なし | コマンドに渡される引数の配列 | ["server.py", "--port", "3000"] |
cwd |
なし | サーバーコマンドの作業ディレクトリ。ワークスペース内で実行される場合は、デフォルトでワークスペースフォルダになります。 | "${workspaceFolder}" |
env |
なし | サーバーの環境変数。値は文字列、数値、またはnullにすることができます。 | {"API_KEY": "${input:api-key}"} |
envFile |
なし | さらに変数を読み込むための環境ファイルのパス | "${workspaceFolder}/.env" |
dev |
なし | ファイルの変更を監視し、サーバーをデバッグするための開発モード設定。開発モードを参照してください。 | {"watch": "src/**/*.ts"} |
sandboxEnabled |
なし | サンドボックス環境でサーバーを実行します。macOSおよびLinuxでのみサポートされています。 | true |
stdioサーバーでDockerを使用する場合は、デタッチオプション(-d)を使用しないでください。VS Codeと通信するには、サーバーをフォアグラウンドで実行する必要があります。
ローカルサーバー設定の例
この例は、npxを使用した基本的なローカルMCPサーバーの最小限の設定を示しています。
{
"servers": {
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}
}
}
サンドボックス設定
ローカルで実行されているstdio MCPサーバーのサンドボックス化を有効にして、ファイルシステムやネットワークへのアクセスを制限できます。サンドボックス化されたサーバーは、明示的に許可したファイルシステムのパスとネットワークドメインにのみアクセスできます。サンドボックス化はmacOSおよびLinuxでのみ利用可能です。
サーバーのサンドボックス化を有効にするには、設定で "sandboxEnabled": true を指定します。次に、トップレベルの sandbox オブジェクトを定義し、ファイルシステムおよびネットワークのアクセスルールを指定します。sandbox オブジェクトは servers や inputs と同階層にあり、そのルールはすべてのサンドボックス化されたサーバーに適用されます。サンドボックス化されたサーバーが現在のルールで許可されていないアクセスを必要とする場合は、サーバーの出力でエラーメッセージを確認し、必要に応じて sandbox 設定を更新してください。
サンドボックス化が有効な場合、サーバーは制御された環境で実行されるため、ツールの確認は自動的に承認されます。
sandbox オブジェクトは以下のプロパティをサポートしています
| プロパティ | タイプ | 説明 |
|---|---|---|
filesystem.allowWrite |
string[] | サーバーの書き込みが許可されているファイルパス。 |
filesystem.denyRead |
string[] | サーバーの読み取りが禁止されているファイルパス。 |
filesystem.denyWrite |
string[] | サーバーの書き込みが禁止されているファイルパス。 |
network.allowedDomains |
string[] | サーバーのアクセスが許可されているドメイン。*.example.com のようなワイルドカードがサポートされています。 |
network.deniedDomains |
string[] | サーバーのアクセスが禁止されているドメイン。 |
ファイルシステムのパスの値には、${workspaceFolder} などの 定義済みの変数 を使用できます。
サンドボックス設定の例
この例では、サンドボックス化を有効にし、ワークスペースへの書き込みアクセスを許可し、.ssh ディレクトリへの読み取りアクセスを禁止し、特定のドメインへのネットワークアクセスを許可します。
{
"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"]
}
}
}
HTTPおよびServer-Sent Events(SSE)サーバー
HTTPを介して通信するサーバーには、この設定を使用します。VS CodeはまずHTTP Streamトランスポートを試し、HTTPがサポートされていない場合はSSEにフォールバックします。
| フィールド | 必須 | 説明 | 例 |
|---|---|---|---|
type |
はい | サーバーの接続タイプ | "http", "sse" |
url |
はい | サーバーのURL | "https://:3000", "https://api.example.com/mcp" |
headers |
なし | 認証または設定用のHTTPヘッダー | {"Authorization": "Bearer ${input:api-token}"} |
oauth |
なし | サーバーで認証するためのOAuth設定 | {"clientId": "example-client-id"} |
ネットワーク経由で利用可能なサーバーに加えて、VS Codeは、UnixソケットまたはWindowsの名前付きパイプ上でHTTPトラフィックをリッスンしているMCPサーバーに接続することができます。接続するには、ソケットまたはパイプのパスを unix:///path/to/server.sock、Windowsでは pipe:///pipe/named-pipe の形式で指定します。unix:///tmp/server.sock#/mcp/subpath のように、URLフラグメントを使用してサブパスを指定することもできます。
oauth オブジェクトは以下のプロパティをサポートしています
| プロパティ | タイプ | 必須 | 説明 |
|---|---|---|---|
clientId |
string | はい | サーバーとの認証時に使用するOAuthクライアントID。 |
enterpriseManaged |
boolean | なし | (プレビュー)OAuth Identity Assertion Authorization Grant(ID-JAG)を使用し、mcp.enterpriseManagedAuth.idp 設定で構成されたエンタープライズシングルサインオン(SSO)プロバイダーを介して認証します。一度サインインすれば、以降のエンタープライズ管理サーバーはサイレントに接続されます。デフォルトは false です。 |
oauth が設定されている場合、VS Codeは自動的にOAuthフローを処理します。サーバーへの最初の接続時に、認可のためのブラウザウィンドウが開きます。
リモートサーバー設定の例
この例は、認証なしのリモートMCPサーバーの最小限の設定を示しています。
{
"servers": {
"context7": {
"type": "http",
"url": "https://mcp.context7.com/mcp"
}
}
}
OAuthを使用したHTTPサーバーの例
この例は、認証にOAuthを使用するMCPサーバーの設定を示しています。初回使用時、VS CodeはOAuthフローを完了するためにブラウザウィンドウを開きます。
{
"servers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"clientId": "example-client-id"
}
}
}
}
機密データ用の入力変数
入力変数を使用すると、設定値のプレースホルダーを定義できるため、APIキーやパスワードなどの機密情報をサーバー設定に直接ハードコードする必要がなくなります。
${input:variable-id} を使用して入力変数を参照すると、サーバーが初めて起動するときに、VS Codeは値の入力を求めます。その値は、以降の使用のために安全に保存されます。VS Codeの 入力変数 についての詳細をご覧ください。
各入力変数には、VS Codeが値の入力を促す方法を決定する type があります。以下の入力タイプがサポートされています
promptString: 入力ボックスを開き、ユーザーにフリーテキストの入力を求めます。pickString: ユーザーが選択できるオプションのリストを表示します。command: コマンドを実行し、その結果を入力値として使用します。
共通のプロパティ
| フィールド | 必須 | 説明 | 例 |
|---|---|---|---|
type |
はい | 入力プロンプトのタイプ: promptString、pickString、または command |
"promptString" |
id |
はい | サーバー設定で参照する一意の識別子 | "api-key", "database-url" |
promptString のプロパティ
| フィールド | 必須 | 説明 | 例 |
|---|---|---|---|
説明 |
はい | ユーザーにわかりやすいプロンプトテキスト | "GitHub Personal Access Token" |
default |
なし | 入力のデフォルト値 | "https://" |
password |
なし | 入力された内容を非表示にする(デフォルト: false) | APIキーやパスワードの場合は true |
pickString のプロパティ
| フィールド | 必須 | 説明 | 例 |
|---|---|---|---|
説明 |
はい | ユーザーにわかりやすいプロンプトテキスト | "Select an environment" |
options |
はい | 選択肢となるオプションの配列。各オプションは文字列、または label と value プロパティを持つオブジェクトです。 |
["dev", "prod"] |
default |
なし | 入力のデフォルト値 | "dev" |
command のプロパティ
| フィールド | 必須 | 説明 | 例 |
|---|---|---|---|
command |
はい | 入力値を取得するために実行するコマンドID | "myExtension.getApiKey" |
args |
なし | コマンドに渡される引数。文字列、配列、またはオブジェクトにすることができます。 | { "scope": "global" } |
入力変数を使用したサーバー設定の例
この例では、APIキーを必要とするローカルサーバーを設定します
{
"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}"
}
}
}
}
開発モード
サーバー設定に dev キーを追加することで、MCPサーバーの開発モードを有効にできます。これは2つのプロパティを持つオブジェクトです
watch: MCPサーバーを再起動するためのファイルの変更を監視する、単一または配列のグロブパターン。すべてのサーバータイプで利用可能です。debug: MCPサーバーでデバッガーをセットアップできるようにします。現在、VS CodeはNode.jsおよびPython MCPサーバーのデバッグをサポートしています。stdioサーバーでのみ利用可能です。
MCPデベロッパーガイドの MCP開発モード についての詳細をご覧ください。
サーバーの名前付け規則
MCPサーバーを定義する際は、サーバー名について以下の名前付け規則に従ってください
- サーバー名には、"uiTesting" や "githubIntegration" のようにキャメルケース(camelCase)を使用します
- 空白文字や特殊文字の使用は避けてください
- 競合を避けるために、各サーバーに一意の名前を使用します
- サーバーの機能やブランドを反映した、"github" や "database" のような分かりやすい名前を使用します
コマンド
次の表は、コマンドパレット(⇧⌘P (Windows, Linux Ctrl+Shift+P))で利用可能なMCP関連のコマンドの一覧です。
| コマンド | 説明 |
|---|---|
| MCP: サーバーの追加 | ワークスペースまたはユーザープロファイルに新しいMCPサーバーを追加します。 |
| MCP: MCPサーバーを参照 | 拡張機能ビューでMCPサーバーギャラリーを開きます。 |
| MCP: リソースを参照 | MCPサーバーによって提供されるリソースを参照します。 |
| MCP: マニフェストからサーバーをインストール | MCPマニフェストファイルからMCPサーバーをインストールします。 |
| MCP: サーバーを一覧表示 | 設定されているすべてのMCPサーバーを一覧表示し、起動、停止、再起動、出力の表示などのアクションを実行します。 |
| MCP: リモートユーザー設定を開く | リモート環境用の mcp.json ファイルを開きます。 |
| MCP: ユーザー設定を開く | ユーザープロファイル内の mcp.json ファイルを開きます。 |
| MCP: ワークスペースフォルダーのMCP設定を開く | ワークスペース内の .vscode/mcp.json ファイルを開きます。 |
| MCP: キャッシュされたツールをリセット | MCPサーバーのキャッシュされたツール一覧をクリアします。サーバーのツールが変更された場合に使用します。 |
| MCP: 信頼関係をリセット | MCPサーバーの信頼決定をリセットし、次回の起動時に再確認を要求します。 |
| MCP: インストール済みサーバーを表示 | インストールされているすべてのMCPサーバーの一覧を表示します。 |
設定
VS CodeのAI設定の完全なリストについては、AI設定リファレンスを参照してください。以下の設定は、MCPサーバーに固有のものです。
| 設定 | 説明 |
|---|---|
| chat.mcp.access この設定は組織レベルで管理されています。変更するには管理者にお問い合わせください。 | VS Codeで使用できるMCPサーバーを管理します。 |
| chat.mcp.discovery.enabled | 他のアプリケーションからのMCPサーバー設定の自動検出を構成します。 |
| chat.mcp.autostart (実験的) | 設定の変更が検出されたときにMCPサーバーを自動的に起動します。 |
| chat.mcp.serverSampling | サンプリング(バックグラウンドでのリクエスト送信)用にどのモデルをMCPサーバーに公開するかを構成します。 |
| chat.mcp.apps.enabled (実験的) | MCPサーバーによって提供されるリッチなユーザーインターフェースである「MCPアプリ」を有効または無効にします。 |