# MCP ツール

Chat UIは、[Model Context Protocol (MCP)](https://modelcontextprotocol.io/)を介したツール呼び出しをサポートしています。MCPサーバーは、モデルが会話中に呼び出すことのできるツールを公開します。

## サーバーの種類

Chat UIは2種類のMCPサーバーをサポートしています:

### ベースサーバー（管理者設定）

ベースサーバーは、管理者によって環境変数を通じて設定されます。すべてのユーザーに表示され、ユーザーごとに有効化/無効化することは可能ですが、削除することはできません。

```ini
MCP_SERVERS=[
  {"name": "Web Search (Exa)", "url": "https://mcp.exa.ai/mcp"},
  {"name": "Hugging Face", "url": "https://hf.co/mcp"}
]
```

各サーバーエントリには、以下が必要です:

- `name` - UIに表示される表示名
- `url` - MCPサーバーのエンドポイントURL
- `headers`（任意）- 認証用のカスタムヘッダー

### ユーザーサーバー（UIから追加）

ユーザーはUIから独自のMCPサーバーを直接追加できます:

1. チャット入力欄を開き、**+** ボタンをクリックします（または設定に移動します）。
2. **MCP Servers** を選択します
3. **サーバーを追加**をクリックします
4. サーバー名とURLを入力します
5. 接続を確認するには、**Health Check**を実行してください

ユーザーが追加したサーバーはブラウザに保存され、いつでも削除できます。これらはベースサーバーと併せて動作します。

## ユーザートークンの転送

ユーザーが Hugging Face にログインしている場合、そのアクセストークンを MCP サーバーに転送できます:

```ini
MCP_FORWARD_HF_USER_TOKEN=true
```

これにより、MCPサーバーはユーザーに代わってユーザー固有のリソースにアクセスできます。

## ツールの使用

1. MCP Servers パネルから、使用するサーバーを有効にしてください
2. チャットを開始 - モデルは適切なタイミングで自動的にツールを使用します

### モデルの要件

すべてのモデルがツール呼び出しをサポートしているわけではありません。特定のモデルでツールを有効にするには、`MODELS`オーバーライドにそのモデルを追加してください。

```ini
MODELS=`[
  {
    "id": "meta-llama/Llama-3.3-70B-Instruct",
    "supportsTools": true
  }
]`
```

## ツール実行フロー

モデルがツールの使用を決定したとき:

1. モデルはパラメータ付きのツール呼び出しを生成します
2. Chat UI は MCP サーバーに対して呼び出しを実行します
3. 結果は、折りたたみ可能な「tool」ブロックとしてチャットに表示されます
4. 結果はモデルにフィードバックされ、フォローアップの応答に使用されます

## LLM Routerとの統合

[LLM Router](./llm-router)を使用する場合、ツール対応モデルへの自動ルーティングを設定できます:

```ini
LLM_ROUTER_ENABLE_TOOLS=true
LLM_ROUTER_TOOLS_MODEL=meta-llama/Llama-3.3-70B-Instruct
```

ユーザーがMCPサーバーを有効にしてOmniモデルを選択した場合、ルーターは指定されたtoolsモデルを自動的に使用します。

