> ## Documentation Index
> Fetch the complete documentation index at: https://docs.windsurf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Model Context Protocol (MCP)

> GitHub、データベース、API などのカスタムツールにアクセスするために MCP サーバーを Cascade と連携します。Teams 向けに、stdio、HTTP、SSE の各トランスポートと管理者向けコントロールを設定できます。

**MCP（Model Context Protocol）** は、LLM がカスタムのツールやサービスにアクセスできるようにするプロトコルです。
MCP クライアント（この場合は Cascade）は、提供されるツールにアクセスするために MCP サーバーへリクエストを送信できます。
Cascade は MCP と標準連携しており、Cascade で使用する MCP サーバーを自由に追加・利用できます。
詳しくは[公式 MCP ドキュメント](https://modelcontextprotocol.io/)をご覧ください。

<Note>Enterprise ユーザーは設定で手動有効化が必要です</Note>

<div id="adding-a-new-mcp">
  ## 新しい MCP を追加する
</div>

新しい MCP は MCP Marketplace から追加できます。Cascade パネル右上メニューの `MCPs` アイコンをクリックするか、
`Windsurf Settings` > `Cascade` > `MCP Servers` セクションからアクセスできます。

目的の MCP が見つからない場合は、生の `mcp_config.json` ファイルを編集して手動で追加できます。

公式 MCP には青いチェックマークが表示され、元のサービス提供会社によって作成されたものであることを示します。

MCP をクリックしたら、`Install` をクリックするだけで、そのサーバーとツールを Cascade から利用できるようになります。

Windsurf は MCP サーバーに対して 3 つの [トランスポートタイプ](https://modelcontextprotocol.io/docs/concepts/transports) をサポートしています：
`stdio`、`Streamable HTTP`、`SSE` です。

また、Windsurf は各トランスポートタイプに対して OAuth もサポートしています。

`http` サーバーの場合、URL はエンドポイントを表し、`https://<your-server-url>/mcp` のような形式にする必要があります。

<Frame>
  <img src="https://mintcdn.com/codeium/Rm_zdSOuabDsfa9L/assets/windsurf/cascade/mcp/mcp-plugin-store.png?fit=max&auto=format&n=Rm_zdSOuabDsfa9L&q=85&s=1f6f2165d7017097ebb08cba65d43362" width="955" height="774" data-path="assets/windsurf/cascade/mcp/mcp-plugin-store.png" />
</Frame>

<div id="configuring-mcp-tools">
  ## MCP ツールの設定
</div>

各 MCP には、利用できるツールの数に制限があります。Cascade は、任意の時点で利用可能なツールの総数は最大100個に制限されています。

各 MCP の設定ページで、有効化したいツールを切り替えられます。
特定の MCP の設定を開くには、Cascade パネル右上メニューの `MCPs` アイコンをクリックし、目的の MCP をクリックします。

<Frame>
  <img src="https://mintcdn.com/codeium/Rm_zdSOuabDsfa9L/assets/windsurf/cascade/mcp/mcp-manage-plugin-tools.png?fit=max&auto=format&n=Rm_zdSOuabDsfa9L&q=85&s=167fd87ffb6cf42228f6e62ff8cb6596" width="893" height="639" data-path="assets/windsurf/cascade/mcp/mcp-manage-plugin-tools.png" />
</Frame>

<div id="mcp_configjson">
  ## mcp\_config.json
</div>

`~/.codeium/windsurf/mcp_config.json` ファイルは、Cascade が接続可能なサーバー一覧を記載した JSON ファイルです。

以下は、GitHub 用に単一のサーバーを設定する例です：

```json theme={null}
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-github"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_PERSONAL_ACCESS_TOKEN>"
      }
    }
  }
}
```

使用したいサーバーに必要な引数と環境変数を必ず指定してください。

サーバー例については、[MCP 公式サーバーリファレンスリポジトリ](https://github.com/modelcontextprotocol/servers) または [OpenTools](https://opentools.com/) を参照してください。

<div id="popular-mcp-server-examples">
  ### よく使われる MCP サーバーの例
</div>

以下は、よく利用されている MCP サーバーの設定例です。これらは `mcp_config.json` ファイルに追加できます。

<AccordionGroup>
  <Accordion title="GitHub" description="リポジトリ管理、ファイル操作、および GitHub API との統合。">
    GitHub MCP サーバーは、リポジトリ管理、ファイル操作、Issue 管理、Pull Request 管理のためのツールを提供します。

    **npx を使う場合:**

    ```json theme={null}
    {
      "mcpServers": {
        "github": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-github"],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_PERSONAL_ACCESS_TOKEN>"
          }
        }
      }
    }
    ```

    **Docker を使う場合:**

    ```json theme={null}
    {
      "mcpServers": {
        "github": {
          "command": "docker",
          "args": [
            "run", "-i", "--rm",
            "-e", "GITHUB_PERSONAL_ACCESS_TOKEN",
            "ghcr.io/github/github-mcp-server"
          ],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_PERSONAL_ACCESS_TOKEN>"
          }
        }
      }
    }
    ```

    Personal Access Token を作成するには、[GitHub Settings > Developer settings > Personal access tokens](https://github.com/settings/tokens) にアクセスしてください。
  </Accordion>

  <Accordion title="Slack" description="Slack ワークスペース向けのチャンネル管理とメッセージ機能。">
    Slack MCP サーバーを使うと、チャンネル管理、メッセージ送信、ワークスペースとの各種連携が可能になります。

    ```json theme={null}
    {
      "mcpServers": {
        "slack": {
          "command": "npx",
          "args": ["-y", "@anthropic/mcp-server-slack"],
          "env": {
            "SLACK_BOT_TOKEN": "<YOUR_SLACK_BOT_TOKEN>",
            "SLACK_TEAM_ID": "<YOUR_SLACK_TEAM_ID>"
          }
        }
      }
    }
    ```

    Slack Bot Token をセットアップするには:

    1. [api.slack.com/apps](https://api.slack.com/apps) で Slack App を作成します
    2. 必要な OAuth スコープ（例: `channels:read`, `chat:write`, `users:read`）を追加します
    3. アプリをワークスペースにインストールし、Bot User OAuth Token をコピーします
  </Accordion>

  <Accordion title="PostgreSQL" description="スキーマ検査機能付きの読み取り専用データベースアクセス。">
    PostgreSQL MCP サーバーは、スキーマの検査やクエリ実行を含む、PostgreSQL データベースへの読み取り専用アクセスを提供します。

    ```json theme={null}
    {
      "mcpServers": {
        "postgres": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-postgres"],
          "env": {
            "POSTGRES_CONNECTION_STRING": "postgresql://user:password@localhost:5432/database"
          }
        }
      }
    }
    ```

    <Warning>PostgreSQL サーバーは、安全性のためデフォルトで読み取り専用アクセスを提供します。接続文字列には、権限が制限された適切な認証情報を使用していることを確認してください。</Warning>
  </Accordion>

  <Accordion title="Filesystem" description="設定可能なアクセス制御による安全なファイル操作。">
    Filesystem MCP サーバーは、設定可能なアクセス制御付きでローカルファイルやディレクトリへの安全なアクセスを提供します。

    ```json theme={null}
    {
      "mcpServers": {
        "filesystem": {
          "command": "npx",
          "args": [
            "-y", "@modelcontextprotocol/server-filesystem",
            "/path/to/allowed/directory"
          ]
        }
      }
    }
    ```

    追加のパス引数を指定することで、許可するディレクトリを複数設定できます。これらのディレクトリ内のファイルのみがアクセス可能になります。
  </Accordion>

  <Accordion title="Brave Search" description="Brave の Search API を利用した Web およびローカル検索。">
    Brave Search MCP サーバーは、Brave の Search API を使用した Web 検索機能を提供します。

    ```json theme={null}
    {
      "mcpServers": {
        "brave-search": {
          "command": "npx",
          "args": ["-y", "@anthropic/mcp-server-brave-search"],
          "env": {
            "BRAVE_API_KEY": "<YOUR_BRAVE_API_KEY>"
          }
        }
      }
    }
    ```

    Brave API Key を取得するには、[brave.com/search/api](https://brave.com/search/api/) でサインアップしてください。
  </Accordion>

  <Accordion title="Memory" description="ナレッジグラフベースの永続メモリシステム。">
    Memory MCP サーバーはナレッジグラフを用いた永続メモリシステムを提供し、Cascade がセッションをまたいで情報を記憶できるようにします。

    ```json theme={null}
    {
      "mcpServers": {
        "memory": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-memory"]
        }
      }
    }
    ```

    Memory サーバーはデータをローカルに保存し、セッション間で保持するため、プロジェクト、設定、学習済み情報などに関するコンテキストを維持するのに役立ちます。
  </Accordion>
</AccordionGroup>

<div id="remote-http-mcps">
  ### リモート HTTP MCP
</div>

リモート HTTP MCP の場合は、設定が少し異なり、`serverUrl` または `url` フィールドが必要になることに注意してください。

以下は、HTTP サーバー向けの設定例です。

```json theme={null}
{
  "mcpServers": {
    "remote-http-mcp": {
      "serverUrl": "<your-server-url>/mcp",
      "headers": {
        "API_KEY": "value"
      }
    }
  }
}
```

<div id="config-interpolation">
  ### 設定の補間
</div>

`~/.codeium/windsurf/mcp_config.json` ファイルでは、`command`、`args`、`env`、`serverUrl`、`url`、`headers` フィールドにおける環境変数の補間を行います。

以下は、`headers` 内で `AUTH_TOKEN` 環境変数を使用している設定例です。

```json theme={null}
{
  "mcpServers": {
    "remote-http-mcp": {
      "serverUrl": "<your-server-url>/mcp",
      "headers": {
        "API_KEY": "Bearer ${env:AUTH_TOKEN}"
      }
    }
  }
}
```

<div id="admin-controls-teams-enterprises">
  ## 管理者コントロール (Teams & Enterprises)
</div>

チーム管理者は、チームの MCP アクセスをオン／オフしたり、チームで使用を許可する MCP サーバーをホワイトリストに登録したりできます:

<Card title="MCP チーム設定" horizontal={true} icon="hammer" href="https://windsurf.com/team/settings">
  チーム用の MCP 設定を管理できます。
</Card>

<Warning>上記のリンクは、あなたにチームの管理者権限がある場合にのみ有効です。</Warning>

デフォルトでは、チーム内のユーザーは自分用の MCP サーバーを設定できます。ただし、MCP サーバーを 1 つでもホワイトリストに登録すると、**ホワイトリストに登録されていないすべてのサーバーは、そのチームでは利用できなくなります**。

<Note>ホワイトリストに登録する Server ID は、ユーザーの `mcp_config.json` で使用されているキー名と、大文字・小文字も含めて完全に一致している必要があります。</Note>

<div id="how-server-matching-works">
  ### サーバーのマッチングの仕組み
</div>

MCP サーバーを許可リストに追加すると、システムは次のルールで**正規表現によるパターンマッチング**を使用します:

* **完全一致**: すべてのパターンは自動的にアンカー（`^(?:pattern)$` で囲む）され、部分一致を防ぎます
* **Command フィールド**: 完全一致、または指定した正規表現パターンに従って一致する必要があります
* **Arguments 配列**: 各引数は対応するパターンに対して個別に照合されます
* **配列の長さ**: 引数の数は、許可リストとユーザー設定の間で完全に一致している必要があります
* **特殊文字**: `$`、`.`、`[`、`]`、`(`、`)` などの文字は正規表現で特別な意味を持つため、リテラルとして一致させたい場合は `\` でエスケープする必要があります

<div id="configuration-options">
  ### 設定オプション
</div>

<AccordionGroup>
  <Accordion title="オプション 1: Plugin Store のデフォルト（推奨）" description="Windsurf MCP Plugin Store のデフォルト構成を使用するには、Server Config (JSON) フィールドを空のままにします。">
    **管理者ホワイトリスト設定:**

    * **Server ID**: `github-mcp-server`
    * **Server Config (JSON)**: *(空のまま)*

    ```json theme={null}
    {}
    ```

    **対応するユーザー設定（`mcp_config.json`）:**

    ```json theme={null}
    {
      "mcpServers": {
        "github-mcp-server": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "-e",
            "GITHUB_PERSONAL_ACCESS_TOKEN",
            "ghcr.io/github/github-mcp-server"
          ],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
          }
        }
      }
    }
    ```

    これにより、サーバー ID がプラグインストアのエントリと一致する限り、ユーザーは有効な任意の構成で GitHub MCP サーバーをインストールできます。
  </Accordion>

  <Accordion title="オプション 2: 完全一致の構成" description="ユーザーが必ず使用すべき正確な構成を指定します。ユーザーはこの構成に完全に一致させる必要があります。">
    **管理者ホワイトリスト設定:**

    * **Server ID**: `github-mcp-server`
    * **Server Config (JSON)**:

    ```json theme={null}
    {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": ""
      }
    }
    ```

    **対応するユーザー設定（`mcp_config.json`）:**

    ```json theme={null}
    {
      "mcpServers": {
        "github-mcp-server": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "-e",
            "GITHUB_PERSONAL_ACCESS_TOKEN",
            "ghcr.io/github/github-mcp-server"
          ],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
          }
        }
      }
    }
    ```

    ユーザーはこの構成を厳密に使用する必要があります。`command` や `args` のいかなる相違もブロックされます。`env` セクションは値が異なってもかまいません。
  </Accordion>

  <Accordion title="オプション 3: 柔軟な正規表現パターン" description="セキュリティを維持しつつ、ユーザー構成のバリエーションを許容するために正規表現を使用します。">
    **管理者ホワイトリスト設定:**

    * **Server ID**: `python-mcp-server`
    * **Server Config (JSON)**:

    ```json theme={null}
    {
      "command": "python3",
      "args": ["/.*\\.py", "--port", "[0-9]+"]
    }
    ```

    **対応するユーザー設定（`mcp_config.json`）:**

    ```json theme={null}
    {
      "mcpServers": {
        "python-mcp-server": {
          "command": "python3",
          "args": ["/home/user/my_server.py", "--port", "8080"],
          "env": {
            "PYTHONPATH": "/home/user/mcp"
          }
        }
      }
    }
    ```

    この例では、セキュリティを確保しながらユーザーに柔軟性を提供します:

    * 正規表現 `/.*\\.py` は `/home/user/my_server.py` のような任意の Python ファイルパスに一致します
    * 正規表現 `[0-9]+` は `8080` や `3000` のような任意の数値ポートに一致します
    * 管理者が Python スクリプトのみ実行されることを担保しつつ、ユーザーはファイルパスとポートをカスタマイズできます
  </Accordion>
</AccordionGroup>

<div id="common-regex-patterns">
  ### よく使う正規表現パターン
</div>

| パターン            | マッチする内容       | 例                      |
| --------------- | ------------- | ---------------------- |
| `.*`            | 任意の文字列        | `/home/user/script.py` |
| `[0-9]+`        | 任意の数字         | `8080`, `3000`         |
| `[a-zA-Z0-9_]+` | 英数字とアンダースコア   | `api_key_123`          |
| `\\$HOME`       | `$HOME`（リテラル） | `$HOME`（展開されない）        |
| `\\.py`         | `.py`（リテラル）   | `script.py`            |
| `\\[cli\\]`     | `[cli]`（リテラル） | `mcp[cli]`             |

<div id="notes">
  ## 注意
</div>

<div id="admin-configuration-guidelines">
  ### 管理者向け構成ガイドライン
</div>

* **環境変数**: `env` セクションは正規表現によるマッチ対象ではなく、ユーザーが自由に設定できます
* **無効化ツール**: `disabledTools` 配列は別途処理され、ホワイトリスト照合の対象ではありません
* **大文字小文字の区別**: すべての照合は大文字小文字を区別します
* **エラー処理**: 無効な正規表現パターンはログに記録され、アクセス拒否の原因となります
* **テスト**: 正規表現パターンは慎重にテストしてください — 過度に厳しいパターンは正当なユースケースを妨げる可能性があります

<div id="troubleshooting">
  ### トラブルシューティング
</div>

許可リストに追加した後に、ユーザーから MCP サーバーが動作しないと報告があった場合:

1. **厳密一致の確認**: 許可リストのパターンがユーザーの設定と完全に一致していることを確認する
2. **正規表現のエスケープ確認**: 特殊文字はエスケープが必要な場合がある（例: リテラルのドットは `\.`）
3. **ログの確認**: 無効な正規表現パターンは警告としてログに記録される
4. **パターンのテスト**: 正規表現テスターを使って、パターンが期待どおりに機能するか検証する

注意: いずれかのサーバーを許可リストに追加すると、**他のすべてのサーバーは自動的にブロック**され、チームメンバーは利用できなくなります。

<div id="general-information">
  ### 一般情報
</div>

* MCP ツール呼び出しは任意のサーバー実装者が記述したコードを実行し得るため、MCP ツール呼び出しの失敗について当社は責任を負いません。念のため再度明記します：
* 現在、当社は MCP サーバーの [tools](https://modelcontextprotocol.io/docs/concepts/tools)、[resources](https://modelcontextprotocol.io/docs/concepts/resources)、および [prompts](https://modelcontextprotocol.io/docs/concepts/prompts) をサポートしています。
