Mcp Gateway について
Mcp Gateway は、設定した MCP ツール呼び出しを既存の HTTP API リクエストに変換します。既存 API を MCP クライアントから利用可能にしたいチーム向けで、YAML によるマッピングと SSE または stdio のトランスポートに対応します。
主な機能
- 01MCPツールをHTTP APIにマッピング
- 02YAMLでマッピングを設定
- 03リクエストとレスポンスのテンプレート設定
- 04SSEとstdioのトランスポート
活用シーン
- 01既存のHTTP APIをMCPツールとして公開
- 02APIのリクエストとレスポンス変換を設定
MCP 対応
MCPサーバーとして、設定済みのツール呼び出しをHTTP APIリクエストに変換し、APIレスポンスを対応付けます。SSEとstdioのトランスポートに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Gateway
MCP(Model Context Protocol)Gateway は、MCP ツールの呼び出しを従来の HTTP API リクエストに変換できます。既存の HTTP API を MCP の領域で利用するための、設定可能な方法を提供します。
はじめに
config.example.yaml から設定ファイルを作成します。
$ cp config.example.yaml config.yaml
config.yaml ファイルを編集し、すべての API を MCP ツールにマッピングします。
次に、SSE トランスポートで起動します。
$ uv run mcp-gateway
INFO: Started server process [15400]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:3001 (Press CTRL+C to quit)
デフォルトは 3001 です。
サーバーの制御
ポートの変更
コマンドラインでパラメーター --port=<port_no> を指定すると、SSE トランスポートのポートを変更できます。
ポート 3002 で Gateway を起動します。
$ uv run mcp-gateway --port=3002
INFO: Started server process [15400]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:3002 (Press CTRL+C to quit)
stdio トランスポート
コマンドラインでパラメーター --transport=stdio を指定すると、トランスポートを stdio に変更できます。
例:
$ uv run mcp-gateway --transport=stdio
stdio トランスポートで Gateway を手動で起動しても意味はありません。次のように Cursor または Cline で設定できます。
{
"mcpServers": {
"mcp-gateway": {
"command": "uv",
"args": ["run", "mcp-gateway", "--transport=stdio"]
}
}
}
または、MCP Inspector で次の値をフォームに入力します。
| 項目 | 値 |
|---|---|
| トランスポートの種類 | STDIO |
| コマンド | uv |
| 引数 | run mcp-gateway --transport=stdio |
設定ファイル
設定 YAML は server と tools の 2 つの部分で構成されます。server は Gateway サーバーで使用する基本情報を定義します。tools は、単一の MCP ツールから HTTP API リクエストへのマッピングを定義します。
server:
name: rest-amap-server
config:
apiKey: foo
tools:
- name: maps-geo
description: "将详细的结构化地址转换为经纬度坐标。支持对地标性名胜景区、建筑物名称解析为经纬度坐标"
args:
- name: address
description: "待解析的结构化地址信息"
required: true
- name: city
description: "指定查询的城市"
required: false
requestTemplate:
url: "https://restapi.amap.com/v3/geocode/geo?key={{.config.apiKey}}&address={{.args.address}}&city={{.args.city}}&source=ts_mcp"
method: GET
headers:
- key: x-api-key
value: "{{.config.apiKey}}"
- key: Content-Type
value: application/json
responseTemplate:
body: |
# 地理编码信息
{{- range $index, $geo := .Geocodes }}
## 地点 {{add $index 1}}
- **国家**: {{ $geo.Country }}
- **省份**: {{ $geo.Province }}
- **城市**: {{ $geo.City }}
- **城市代码**: {{ $geo.Citycode }}
- **区/县**: {{ $geo.District }}
- **街道**: {{ $geo.Street }}
- **门牌号**: {{ $geo.Number }}
- **行政编码**: {{ $geo.Adcode }}
- **坐标**: {{ $geo.Location }}
- **级别**: {{ $geo.Level }}
{{- end }}
Server
| 項目 | 説明 |
|---|---|
| name | サーバー名 |
| config | テンプレート内で変数 {{.config.xxx}} として参照できるキーと値のペア |
Tools
tools は MCP ツールのマッピングのリストです。単一のツールのプロパティは次のとおりです。
| 項目 | 説明 |
|---|---|
| name | LLM に提供されるツール名(関数名)。 |
| description | LLM がツールで何ができるかを理解するためのツールの説明。 |
| args | ツールの引数(関数の引数)。 |
| requestTemplate | 対象の HTTP API へのリクエストマッピング。 |
| responseTemplate | 対象の HTTP API のレスポンスに対するレスポンスマッピング。 |
単一の引数のプロパティは次のとおりです。
| 項目 | 型 | 説明 |
|---|---|---|
| name | LLM に提供される引数名。 | |
| description | LLM が適切な値を理解して判断するための引数の説明。 | |
| required | Boolean | 必須の引数かどうか。 |
リクエストテンプレートのプロパティは次のとおりです。
| 項目 | 説明 |
|---|---|
| method | HTTP メソッド |
| url | 対象の HTTP API の URL テンプレート |
| headers | HTTP ヘッダー |
HTTP ヘッダーは次のように定義します。
| 項目 | 説明 |
|---|---|
| key | ヘッダーキー |
| value | ヘッダー値のテンプレート |
レスポンステンプレートのプロパティは次のとおりです。
| 項目 | 説明 |
|---|---|
| body | レスポンス本文のテンプレート |
コントリビューション
あらゆる種類のコントリビューションを歓迎します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。