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

# MCP Tool

> Model Context Protocol を介して外部Toolエコシステムを統合

CowAgent は [Model Context Protocol (MCP)](https://modelcontextprotocol.io) をサポートしており、コミュニティで提供されている数万種類の MCP Tool を Agent から直接呼び出せます。`mcp.json` を一度設定すれば、組み込みToolとまったく同じ形で LLM に公開され、自動的に選択・呼び出されます。

## 設定ファイル

CowAgent は `~/cow/mcp.json` を読み込みます。ファイルが存在しない場合は MCP Tool は読み込まれず、エラーにもなりません。

Docker デプロイの場合、公式の `docker-compose.yml` はホスト側の `./cow` をコンテナ内の `/home/agent/cow`（コンテナユーザーの `~/cow`）にマウント済みです。ホスト側の `./cow/` に `mcp.json` を置くだけで反映されます。

### 標準フォーマット

MCP コミュニティ標準に完全準拠しており、Claude Desktop / Cursor と同じです：

```json theme={null}
{
  "mcpServers": {
    "<server-name>": {
      "command": "npx",
      "args": ["-y", "some-mcp-package"],
      "env": {
        "API_KEY": "your-key-here"
      }
    }
  }
}
```

| フィールド      | 必須                    | 説明                                                           |
| ---------- | --------------------- | ------------------------------------------------------------ |
| `command`  | stdio                 | サーバーを起動する実行コマンド（`npx`、`python`、`uvx` など）                     |
| `args`     | 任意                    | `command` に渡す引数                                              |
| `env`      | 任意                    | サブプロセスの環境変数。API Key などに利用                                    |
| `url`      | SSE / Streamable HTTP | リモートエンドポイントの URL（`command` と二者択一）                            |
| `type`     | リモート                  | リモートトランスポート種別：`sse` または `streamable-http`（既定は `sse`）         |
| `headers`  | 任意                    | リモートリクエストの追加 HTTP ヘッダ（`Authorization` など）。Streamable HTTP のみ |
| `scope`    | 任意                    | OAuth スコープ。OAuth 認可が必要なリモート server のみ使用（任意）                  |
| `disabled` | 任意                    | `true` のとき該当サーバーをスキップ。一時的に無効化したいときに便利                        |

### 完全な例

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

* **fetch**：汎用 Web ページ取得。ページ本文を返す。API Key 不要
* **github**：GitHub のリポジトリ、Issue、PR などにアクセス。Personal Access Token が必要

## Agent に設定を任せる

CowAgent には `read` / `write` / `edit` Tool が組み込まれているため、**MCP の設定をそのまま Agent に渡して、ファイルに書き込んでもらえます**：

例：

```markdown theme={null}
この MCP を ~/cow/mcp.json に追加してください：

{"mcpServers":{"fetch":{"command":"uvx","args":["mcp-server-fetch"]}}}
```

Agent は次のように動作します：

1. 既存の MCP 設定ファイルを読み込み、新しい server エントリをマージ（既存の項目は保持）
2. 増分の MCP Server を自動でリロードし、次のメッセージから対応する Tool が利用可能に

## Web 認可（OAuth）

一部のリモート MCP は OAuth の Web 認可が必要で、そのまま設定すると `401` が返ります。CowAgent は標準的な OAuth フローを内蔵しているため、**token を手動で入力する必要はなく**、通常どおり設定するだけです。例：

```json theme={null}
{
  "mcpServers": {
    "xmind": {
      "type": "streamable-http",
      "url": "https://app.xmind.com/api/mcp"
    }
  }
}
```

server の初回ロードで `401` が返ると、認可が自動的に開始されます。ローカル実行では**自動的にブラウザが開き**、サーバー環境では**認可リンクがログに出力**されるので、ブラウザで開いてください。承認すると server はすぐにオンラインになり、token は期限切れ時に自動更新されるため、再認可は不要です。

* **Web サービスが必要**：認可コールバックは Web コンソール（既定ポート `9899`）で受け取るため、Web channel が起動している必要があります。
* **認証情報の保存**：token は `~/.cow/mcp_oauth.json` に永続化され、再起動後も再利用されます。
* **コールバック URL**：既定は `http://127.0.0.1:9899/mcp/oauth/callback`。サーバーに配置し認可用ブラウザが別の端末にある場合は、`config.json` に `mcp_oauth_redirect_base`（例：`http://あなたのIP:9899`）を設定してください。

## 動作の仕組み

* **起動時の非同期ロード**：`mcp.json` に設定された全 server はバックグラウンドで非同期に読み込まれ、メインループをブロックしません。会話はすぐに開始できます
* **ホットリロード**：ユーザーまたは Agent が `mcp.json` を変更すると、メッセージ処理完了時に変更された server のみが自動でリロードされます。cow の再起動は不要です
* **フラットな公開**：MCP server が公開する各メソッドは独立した Tool として並列に公開され、LLM が直接選択して呼び出します。二段階の判断は不要です

## サポートされるトランスポート

| トランスポート             | 説明                                      | 設定フィールド                           |
| ------------------- | --------------------------------------- | --------------------------------- |
| **stdio**           | サブプロセス通信。最も一般的で、コミュニティのエコシステムが最も豊富      | `command` + `args`                |
| **SSE**             | HTTP Server-Sent Events。従来のリモート用トランスポート | `url`（既定）                         |
| **Streamable HTTP** | 新しい単一エンドポイント方式。SSE を段階的に置き換え            | `type: "streamable-http"` + `url` |

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

| 症状                    | 確認ポイント                                                                                                         |
| --------------------- | -------------------------------------------------------------------------------------------------------------- |
| 起動後に MCP Tool が一つもない  | `~/cow/mcp.json` が存在し、JSON が正しいか確認                                                                             |
| 特定の server が読み込みに失敗する | 起動ログの `[MCP] Server 'xxx' load failed` を確認。多くは依存関係の不足や API Key 未設定                                             |
| `mcp.json` の変更が反映されない | 変更は **次のメッセージ** から有効になる。server の設定が実質的に変わっていない（コメントだけ変更など）場合は再起動されない                                           |
| Docker デプロイ           | ホストの `./cow` がコンテナ内の `/home/agent/cow` にマウントされていることを確認し、ホスト側の `./cow/` に `mcp.json` を配置。または Agent に直接インストールを依頼 |

## おすすめ MCP マーケットプレイス

各種サードパーティのマーケットプレイスから既製の MCP server を探し、JSON 設定をコピーしてそのまま利用できます。例：

* [mcp.so](https://mcp.so) — グローバル MCP サービスインデックス
* [ModelScope MCP 広場](https://modelscope.cn/mcp) — 魔搭コミュニティの MCP 広場、中国本土からのアクセスが安定

MCP 標準プロトコル（stdio / SSE / Streamable HTTP）に準拠していれば、コードを一切変更せずに CowAgent に統合できます。
