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

# Model Context Protocol（MCP）

> Cascade に MCPサーバーを統合して、GitHub、データベース、API などのカスタムツールにアクセスできます。Teams 向けの管理者コントロールで、stdio、HTTP、SSE の transport を設定します。

**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 から追加できます。MCP Marketplace には、Cascade パネル右上のメニューにある `MCPs` アイコンをクリックするか、
`Devin Settings` > `Cascade` > `MCP Servers` セクションからアクセスできます。

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

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

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

<div id="one-click-install-via-deeplink">
  ### ディープリンクによるワンクリックインストール
</div>

Devin Desktop は、ディープリンク経由でのワンクリック MCP インストールをサポートしています。これらのリンクを利用すると、MCP の
レジストリページを Devin Desktop で直接開くことができるため、MCPサーバーのおすすめを共有したり、
ドキュメントにインストールボタンを埋め込んだりする際に便利です。

ディープリンクの形式は次のとおりです。

```
windsurf://windsurf-mcp-registry?serverName=<server-name>
```

* **`serverName` がある場合**: 指定したサーバーの MCP レジストリ ページを開き、ユーザーはそこで内容を確認してインストールできます。
* **`serverName` がない場合**: MCP Marketplace ページを開きます。

たとえば、`windsurf://windsurf-mcp-registry?serverName=github-mcp-server` を開くと、Devin Desktop で GitHub MCPサーバー の
レジストリ ページが開きます。

<Note>ワンクリックインストール用の deeplink を利用するには、ユーザーのチームで MCP アクセスが有効になっている必要があります。管理者によって MCP アクセスが無効になっている場合、deeplink では レジストリ ページを開けません。</Note>

Devin Desktop は、MCP
server 向けに 3 種類の [transport types](https://modelcontextprotocol.io/docs/concepts/transports) (`stdio`、`Streamable HTTP`、`SSE`) をサポートしています。

Devin Desktop は、各 transport type での OAuth にも対応しています。

`http` server の場合、URL は endpoint を反映したものにし、`https://<your-server-url>/mcp` のような形式にしてください。

<Frame>
  <img src="https://mintcdn.com/cognitionai/hxeMffzXgF_RWx-U/desktop/assets/windsurf/cascade/mcp/mcp-plugin-store.png?fit=max&auto=format&n=hxeMffzXgF_RWx-U&q=85&s=cedf7260fa823c72486f1c35faa542f0" width="955" height="774" data-path="desktop/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/cognitionai/hxeMffzXgF_RWx-U/desktop/assets/windsurf/cascade/mcp/mcp-manage-plugin-tools.png?fit=max&auto=format&n=hxeMffzXgF_RWx-U&q=85&s=81513e7073b00eb6d9c53017789b08c1" width="893" height="639" data-path="desktop/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 server は、リポジトリ管理、ファイル操作、issue の追跡、PR 管理のためのツールを提供します。

    **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>"
          }
        }
      }
    }
    ```

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

  <Accordion title="Slack" description="Slack ワークスペース向けのチャンネル管理とメッセージ機能。">
    Slack MCP server は、チャンネル管理、メッセージ送信、ワークスペース内での操作を可能にします。

    ```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 scopes (例: `channels:read`, `chat:write`, `users:read`) を追加します
    3. アプリをワークスペースにインストールし、Bot User OAuth Token をコピーします
  </Accordion>

  <Accordion title="PostgreSQL" description="スキーマ確認機能を備えた読み取り専用のデータベースアクセス。">
    PostgreSQL MCP server は、スキーマ確認やクエリ実行を含む、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 server は、安全のためデフォルトで読み取り専用アクセスを提供します。接続文字列には、適切で権限が制限された認証情報を使用してください。</Warning>
  </Accordion>

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

    ```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 server は、Brave's 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キーを取得するには、[brave.com/search/api](https://brave.com/search/api/) で登録してください。
  </Accordion>

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

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

    memory server はデータをローカルに保存し、セッションをまたいで保持します。そのため、プロジェクト、設定、学習した情報に関する前提情報を維持するのに役立ちます。
  </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` の各フィールドで変数補間をサポートしています。これにより、シークレットを設定ファイルに直接ハードコードせずに済みます。

サポートされている補間パターンは 2 つあります。

* **`${env:VAR_NAME}`** — 環境変数 `VAR_NAME` の値に置き換えられます。変数が設定されていない場合は、空文字列になります。
* **`${file:/path/to/file}`** — 指定したパスのファイル内容 (前後の空白を除去したもの) に置き換えられます。チルダ付きのパス (例: `~/secrets/key.txt`) もサポートされています。ファイルを読み取れない場合、このパターンはそのまま残ります。

以下は、`headers` で環境変数を使用する例です。

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

以下は、ファイルからAPIキーを読み込む例です。

```json theme={null}
{
  "mcpServers": {
    "my-server": {
      "command": "node",
      "args": ["server.js"],
      "env": {
        "API_KEY": "${file:~/.secrets/api_key.txt}"
      }
    }
  }
}
```

<div id="admin-controls-teams-enterprises">
  ## 管理者向け設定 (チームとEnterprise)
</div>

チーム管理者は、自分のチームの MCP アクセスを切り替えたり、チームで利用する承認済みの MCPサーバーをホワイトリストに追加したりできます:

<div id="mcp-registry">
  ### MCP Registry
</div>

Enterpriseのチームは、デフォルトのDevin Desktop MCP marketplaceの代わりに、カスタムMCPレジストリを設定できます。チームは独自のレジストリURLを関連付けることで、ユーザーが利用できるMCPを管理できます。

<Note>MCPアクセスの管理にはレジストリの利用を推奨しますが、ホワイトリストでも対応できます。</Note>

<div id="configuring-custom-registries">
  #### カスタムレジストリの設定
</div>

1. チーム設定に移動します
2. **MCP Registry URLs** 設定を見つけます
3. 1 つ以上のレジストリ URL を追加します

複数のレジストリ URL が設定されている場合、Devin Desktop はそれらすべてのレジストリの **和集合** を利用します。つまり、ユーザーには設定されたすべてのソースの MCP がまとめて表示されます。その後、チームの MCP marketplace は、デフォルトの Devin Desktop レジストリではなく、これらの内部レジストリから取得するようになります。

<Note>カスタムレジストリは、[公式 MCP レジストリスキーマ](https://modelcontextprotocol.io/)に従う必要があります。これにより、互換性と標準化されたサーバー定義が確保されます。</Note>

<div id="mcp-whitelist">
  ### MCP ホワイトリスト
</div>

<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="Server Config (JSON) フィールドを空のままにすると、Devin Desktop MCP Plugin Store のデフォルト設定が適用されます。">
    **管理者ホワイトリスト設定:**

    * **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"
          }
        }
      }
    }
    ```

    これにより、Server ID が plugin store のエントリと一致している限り、ユーザーは任意の有効な設定で 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>

| Pattern         | Matches         | Example                |
| --------------- | --------------- | ---------------------- |
| `.*`            | 任意の文字列          | `/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. **パターンをテスト**: 正規表現テスターを使って、パターンが想定どおりに機能することを確認してください

注意: いずれか 1 つのサーバーをホワイトリストに登録すると、**それ以外のすべてのサーバーはチームのメンバーに対して自動的にブロックされます**。

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

* MCP ツール呼び出しでは、任意のサーバー実装者が作成したコードが実行される可能性があるため、当社は
  MCP ツール呼び出しの失敗について責任を負いません。改めてお伝えすると:
* 現在、MCPサーバー の [ツール](https://modelcontextprotocol.io/docs/concepts/tools)、[リソース](https://modelcontextprotocol.io/docs/concepts/resources)、および [プロンプト](https://modelcontextprotocol.io/docs/concepts/prompts) をサポートしています。
