VSCodeでMCPサーバーを使用する方法

## はじめに

Visual Studio Code（VSCode）は、現代の開発者にとって最も人気のあるコードエディタの一つです。その拡張性と柔軟性により、さまざまな開発環境やプログラミング言語に対応しています。一方、Model Context Protocol（MCP）は、AIモデルが外部ツールやリソースと安全に対話するための新しいオープンプロトコルです。VSCodeにMCPサーバーを統合することで、AIアシスタントを活用した開発体験を大幅に向上させることができます。この記事では、VSCodeでMCPサーバーをセットアップし、活用する方法について詳しく解説します。

MCPサーバーの実装については、公式のGitHubリポジトリ（https://github.com/modelcontextprotocol/server-everything）を参照すると、より詳細な情報を得ることができます。このリポジトリには、MCPプロトコルのすべての機能を試すためのサーバー実装が含まれています。

## MCPとは

Model Context Protocol（MCP）は、AIモデルが外部ツール、アプリケーション、データソースと標準化された方法で対話するためのオープンプロトコルです。VSCodeにおけるMCPサポートは、GitHub Copilotのエージェントモードを強化し、あらゆるMCP互換サーバーをAI支援コーディングワークフローに接続できるようにします。

MCPはクライアント・サーバーアーキテクチャを採用しています：

- **MCPクライアント**（VSCodeなど）はAIモデルの代わりにMCPサーバーに接続しアクションを要求します
- **MCPサーバー**は特定の機能を明確に定義されたインターフェースを通して提供します
- **MCPプロトコル**はクライアントとサーバー間の通信メッセージ形式を定義します

例えば、ファイルシステムMCPサーバーはファイルの読み取り、書き込み、検索などのツールを提供し、GitHubのMCPサーバーはリポジトリの一覧表示、プルリクエストの作成、課題の管理などのツールを提供します。MCPサーバーはローカルマシンで実行することも、リモートでホストすることもでき、VSCodeは両方の構成をサポートしています。

## VSCodeでのMCPサーバーの追加方法

VSCodeでMCPサーバーを追加するには、以下の手順に従います：

1. ワークスペースの `.vscode/mcp.json` ファイルでMCPサーバーを設定します。プロジェクトの共同作業者と設定を共有するためです。APIキーなどの機密情報はハードコーディングせず、入力変数や環境ファイルを使用してください。

2. ワークスペースに `.vscode/mcp.json` ファイルを作成し、「サーバーを追加」ボタンを選択して新しいサーバーのテンプレートを追加します。VSCodeはMCPサーバー設定ファイルのIntelliSenseを提供します。

3. コマンドパレットから `MCP: サーバーを追加` コマンドを実行し、サーバー情報を提供して新しいMCPサーバー設定を追加することもできます。`.vscode/mcp.json` ファイルがワークスペースに存在しない場合は、「ワークスペース設定」を選択してファイルを作成します。

以下は、サーバーの起動時にAPIキーの入力を求めるPerplexity MCPサーバーを設定する例です：

```json
{
  // 💡 入力は最初のサーバー起動時に要求され、その後VSCodeによって安全に保存されます
  "inputs": [
    {
      "type": "promptString",
      "id": "perplexity-key",
      "description": "Perplexity APIキー",
      "password": true
    }
  ],
  "servers": {
    // https://github.com/ppl-ai/modelcontextprotocol/
    "Perplexity": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-perplexity-ask"],
      "env": {
        "PERPLEXITY_API_KEY": "${input:perplexity-key}"
      }
    }
  }
}
```

オプションで、すべてのワークスペースでMCPサーバーを有効にするには、VSCodeのユーザー設定の `mcp` で指定することもできます。コマンドパレットから `MCP: サーバーを追加` コマンドを実行し、「ユーザー設定」を選択して、ユーザー設定に新しいMCPサーバー設定を追加することができます。

VSCodeは、Claude Desktopなど他のツールで定義したMCPサーバーを自動的に検出して再利用することもできます。`chat.mcp.discovery.enabled` 設定を有効にすることで自動検出が可能になります。

コマンドパレットから `MCP: サーバーの一覧表示` コマンドを実行すると、設定されたMCPサーバーを表示および管理できます。

## 設定フォーマット

MCPサーバーを定義するには、以下のJSONフォーマットを使用します：

- `"servers"` フィールドにMCPサーバーのリストを保持します（Claude Desktopの設定形式に従います）
- サーバー名をキーとして指定し、サーバー設定を値として提供します。VSCodeはサーバー名をMCPサーバーリストに表示します
- サーバー設定に以下のフィールドを提供します。設定には事前定義された変数（例：ワークスペースフォルダを参照する `${workspaceFolder}` など）を使用できます。

**stdio接続の場合：**

| フィールド | 説明 | 例 |
|----------|------|------|
| type | サーバー接続タイプ | `"stdio"` |
| command | サーバー実行ファイルを起動するコマンド | `"npx"`, `"node"`, `"python"`, `"docker"` |
| args | コマンドに渡される引数の配列 | `["server.py", "--port", "3000"]` |
| env | サーバーの環境変数 | `{"API_KEY": "${input:api-key}"}` |
| envFile | 追加の環境変数を読み込む`.env`ファイルへのパス | `"${workspaceFolder}/.env"` |

**sse接続の場合：**

| フィールド | 説明 | 例 |
|----------|------|------|
| type | サーバー接続タイプ | `"sse"` |
| url | サーバーのURL（`"type": "sse"`の場合） | `"http://localhost:3000"` |
| headers | サーバーのHTTPヘッダー（`"type": "sse"`の場合） | `{"API_KEY": "${input:api-key}"}` |

`"inputs"` フィールドでは、設定値のカスタムプレースホルダーを定義でき、機密情報のハードコーディングを避けることができます。VSCodeは、サーバーの最初の起動時にこれらの値を要求し、その後の使用のために安全に保存します。入力した値を表示しないようにするには、`password` フィールドを `true` に設定します。

## エージェントモードでMCPツールを使用する方法

MCPサーバーを追加したら、それが提供するツールをエージェントモードで使用できます。エージェントモードでMCPツールを使用するには：

1. チャットビューを開き（Windows, Linux では `Ctrl+Alt+I`、macOS では `⌃⌘I`）、ドロップダウンから「エージェント」モードを選択します。

2. 「ツール」ボタンを選択して、利用可能なツールのリストを表示します。オプションで、使用したいツールを選択または選択解除できます。検索ボックスに入力してツールを検索することもできます。

3. チャット入力ボックスにプロンプトを入力すると、必要に応じてツールが自動的に呼び出されるのがわかります。デフォルトでは、ツールが呼び出されると、実行前にアクションを確認する必要があります。これは、ツールがローカルマシンで実行され、ファイルやデータを変更する可能性があるためです。「続行」ボタンのドロップダウンオプションを使用して、現在のセッション、ワークスペース、または将来のすべての呼び出しで特定のツールを自動的に確認するように設定できます。

4. オプションで、ツールの実行前に入力パラメータを確認および編集できます。ツール名の横にあるシェブロンを選択すると、詳細と入力パラメータが表示されます。ツールの実行前に入力パラメータを編集できます。

## MCPサーバーを管理する

コマンドパレットから `MCP: サーバーの一覧表示` コマンドを実行して、設定されたMCPサーバーのリストを表示できます。サーバーを選択すると、サーバーの起動、停止、再起動ができます。また、サーバー設定とサーバーログを表示して問題を診断することもできます。

`.vscode/mcp.json` ファイルを開くと、VSCodeはエディタから直接サーバーを起動、停止、または再起動するコマンドを表示します。

## コマンドライン設定

VSCodeのコマンドラインインターフェースを使用して、MCPサーバーをユーザープロファイルまたはワークスペースに追加することもできます。ユーザープロファイルにMCPサーバーを追加するには、`--add-mcp` コマンドラインオプションを使用し、`{\"name\":\"server-name\",\"command\":...}` の形式でJSONサーバー設定を提供します。

```
code --add-mcp "{\"name\":\"my-server\",\"command\":\"uvx\",\"args\":[\"mcp-server-fetch\"]}"
```

## URLハンドラ

VSCodeには、MCPサーバーをインストールするために使用できるURLハンドラも含まれています。URLを形成するには、`--add-mcp` に提供する形式と同じ形式で `obj` オブジェクトを構築し、次のロジックを使用してリンクを作成します：

```javascript
// Insidersの場合、`code`の代わりに`code-insiders`を使用
const link = `code:mcp/install?${encodeURIComponent(JSON.stringify(obj))`;
```

このリンクはブラウザで使用するか、Linuxでは `xdg-open $LINK` などのコマンドラインで開くことができます。

## トラブルシューティング

VSCodeがMCPサーバーで問題に遭遇すると、チャットビューにエラーインジケータが表示されます。チャットビューのエラー通知を選択し、「出力を表示」オプションを選択してサーバーログを表示します。または、コマンドパレットから `MCP: サーバーの一覧表示` を実行し、サーバーを選択して「出力を表示」を選択することもできます。

## MCPサーバーの作成

VSCodeには、独自のMCPサーバーを開発するために必要なすべてのツールが揃っています。MCPサーバーは `stdout` を処理できる任意の言語で作成できますが、MCPの公式SDKは良い出発点です：

- TypeScript SDK
- Python SDK
- Java SDK
- Kotlin SDK
- C# SDK

## まとめ

VSCodeにMCPサーバーを統合することで、AIアシスタントの能力を大幅に拡張し、より効率的な開発ワークフローを実現できます。この記事で説明した手順に従って、VSCodeでMCPサーバーを設定し、GitHub Copilotのエージェントモードでそれらのツールを活用してみてください。MCPの生態系は急速に進化しており、より多くの開発者がMCPを採用するにつれて、プロジェクトに統合できるサーバーとツールがますます増えていくことでしょう。

AIとツールの統合により、コーディングの未来は非常に明るいものになります。VSCodeとMCPサーバーを組み合わせることで、その未来の一部になりましょう。