Graham Neubig 689d3c9046
Update pre-commit hook versions to most recent versions (#8343)
Co-authored-by: openhands <openhands@all-hands.dev>
2025-05-08 03:59:13 +00:00

97 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# モデルコンテキストプロトコルMCP
:::note
このページでは、OpenHandsでモデルコンテキストプロトコルMCPを設定して使用する方法を説明します。これにより、エージェントの機能をカスタムツールで拡張できます。
:::
## 概要
モデルコンテキストプロトコルMCPは、OpenHandsが外部ツールサーバーと通信するためのメカニズムです。これらのサーバーは、特殊なデータ処理、外部APIアクセス、またはカスタムツールなど、エージェントに追加機能を提供できます。MCPは[modelcontextprotocol.io](https://modelcontextprotocol.io)で定義されているオープンスタンダードに基づいています。
## 設定
MCP設定は`config.toml`ファイルの`[mcp]`セクションで定義されます。
### 設定例
```toml
[mcp]
# SSEサーバー - Server-Sent Eventsを介して通信する外部サーバー
sse_servers = [
# 基本的なSSEサーバーURLのみ
"http://example.com:8080/mcp",
# APIキー認証を使用するSSEサーバー
{url="https://secure-example.com/mcp", api_key="your-api-key"}
]
# Stdioサーバー - 標準入出力を介して通信するローカルプロセス
stdio_servers = [
# 基本的なstdioサーバー
{name="fetch", command="uvx", args=["mcp-server-fetch"]},
# 環境変数を持つstdioサーバー
{
name="data-processor",
command="python",
args=["-m", "my_mcp_server"],
env={
"DEBUG": "true",
"PORT": "8080"
}
}
]
```
## 設定オプション
### SSEサーバー
SSEサーバーは、文字列URLまたは以下のプロパティを持つオブジェクトを使用して設定されます
- `url`(必須)
- 型: `str`
- 説明: SSEサーバーのURL
- `api_key`(オプション)
- 型: `str`
- デフォルト: `None`
- 説明: SSEサーバーとの認証用APIキー
### Stdioサーバー
Stdioサーバーは、以下のプロパティを持つオブジェクトを使用して設定されます
- `name`(必須)
- 型: `str`
- 説明: サーバーの一意の名前
- `command`(必須)
- 型: `str`
- 説明: サーバーを実行するコマンド
- `args`(オプション)
- 型: `list of str`
- デフォルト: `[]`
- 説明: サーバーに渡すコマンドライン引数
- `env`(オプション)
- 型: `dict of str to str`
- デフォルト: `{}`
- 説明: サーバープロセスに設定する環境変数
## MCPの仕組み
OpenHandsが起動すると、次のことが行われます
1. `config.toml`からMCP設定を読み込む
2. 設定されたSSEサーバーに接続する
3. 設定されたstdioサーバーを起動する
4. これらのサーバーが提供するツールをエージェントに登録する
エージェントは、これらのツールを組み込みツールと同じように使用できます。エージェントがMCPツールを呼び出すと
1. OpenHandsは呼び出しを適切なMCPサーバーにルーティングする
2. サーバーはリクエストを処理し、レスポンスを返す
3. OpenHandsはレスポンスを観察結果に変換し、エージェントに提示する