MCP-Gateway について
MCP-Gatewayは、APIなどのデータソースに接続するチーム向けに、HTTPインターフェース定義とMCPサーバーを管理します。curlコマンドやOpenAPI仕様の変換、バージョン管理に対応し、サーバーをWebAssemblyにコンパイルして有効化できます。
主な機能
- 01HTTPインターフェースとバージョンの管理
- 02curlコマンドからHTTP定義への変換
- 03OpenAPI仕様のインポートとエクスポート
- 04MCPサーバーとバージョンの管理
- 05サーバーのWebAssemblyへのコンパイル
- 06サーバーのルーティング設定
活用シーン
- 01既存のcurlコマンドをAPI定義に変換
- 02OpenAPIのパスをHTTPインターフェースとして登録
- 03管理対象のHTTPインターフェースからツールを公開
MCP 対応
HTTPインターフェース定義からMCPサーバーを作成・管理し、WebAssemblyにコンパイルして有効化します。MCPクライアントからのツール呼び出しもルーティングします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP-Gateway
MCP-Gateway は、MCP サーバーを一元管理する機能を提供するサービスです。AI エージェントがさまざまなデータソースにすばやく接続できるよう支援します。MCP サーバーを通じて、AI エージェントは具体的な接続方法を気にすることなく、データベース、REST API、その他の外部サービスに簡単にアクセスできます。
特長
- HTTP インターフェース管理:OpenAPI 構造のエクスポート、HTTP から MCP サーバーの YAML 形式への変換、インターフェースのバージョン管理に対応しています。
- curl コマンドを HTTP インターフェースに変換:curl コマンドを適切な形式の HTTP インターフェースに簡単に変換できます。
- OpenAPI のインポート/エクスポート:HTTP インターフェースと OpenAPI 仕様の相互変換により、既存の API フレームワークと簡単に連携できます。
- MCP サーバー管理:MCP サーバーのメタデータ管理、複数の HTTP 構造を選択したメタデータの更新、MCP サーバーの公開(動的読み込み用に WebAssembly にコンパイル)、バージョン管理に対応しています。
- ルーティング管理:
xxx/mcp-server/{name}を名前が{name}の MCP サーバーにマッチさせるなど、ルート設定に対応しています。
アーキテクチャ
MCP-Gateway は、次の 3 つのコアモジュールで構成されています。
- HTTP インターフェース管理:API 設定を定義および管理します。
- MCP サーバー管理:MCP サーバーインスタンスを管理し、WebAssembly にコンパイルして、実行時の処理を行います。
- ルーティング管理:MCP サーバーのルーティングルールを管理します。
はじめに
前提条件
- Go 1.19 以降
- Git
インストール
-
リポジトリをクローンします:
git clone https://github.com/wangfeng/mcp-gateway2.git cd mcp-gateway2 -
依存関係をインストールします:
go mod tidy -
サーバーを起動します:
go run cmd/server/main.go -
サーバーはデフォルトでポート 8080 で起動します。
PORT環境変数を設定すると、ポートを変更できます。
テスト
API をテストするには、テストクライアントを実行します:
go run test/client.go
次の処理が行われます:
- 利用可能な HTTP インターフェースを一覧表示します
- いずれかのインターフェースを使用して MCP サーバーを作成します
- MCP サーバーを WebAssembly にコンパイルします
- MCP サーバーを有効化します
- MCP サーバーのツールを呼び出します
curl 変換機能をテストするには、curl テストクライアントを実行します:
go run test/curl/curl_client.go
次の処理が行われます:
- 複数の curl コマンドを HTTP インターフェースに変換します
- 変換したインターフェースを使用して MCP サーバーを作成します
- MCP サーバーをコンパイルして有効化します
- MCP サーバーのツールを呼び出します
OpenAPI 変換機能をテストするには、OpenAPI テストクライアントを実行します:
go run test/openapi/openapi_client.go
次の処理が行われます:
- 既存の HTTP インターフェースを OpenAPI 形式でエクスポートします
- サンプルの OpenAPI 仕様をインポートして、新しい HTTP インターフェースを作成します
- 往復変換(OpenAPI へエクスポートし、再度インポート)を実行します
API ドキュメント
HTTP インターフェース
GET /api/http-interfaces:すべての HTTP インターフェースを一覧表示GET /api/http-interfaces/:id:特定の HTTP インターフェースを取得POST /api/http-interfaces:新しい HTTP インターフェースを作成PUT /api/http-interfaces/:id:HTTP インターフェースを更新DELETE /api/http-interfaces/:id:HTTP インターフェースを削除GET /api/http-interfaces/:id/versions:HTTP インターフェースのすべてのバージョンを取得GET /api/http-interfaces/:id/versions/:version:HTTP インターフェースの特定のバージョンを取得GET /api/http-interfaces/:id/openapi:HTTP インターフェースを OpenAPI 形式でエクスポートPOST /api/http-interfaces/from-curl:curl コマンドから新しい HTTP インターフェースを作成POST /api/http-interfaces/from-openapi:OpenAPI 仕様から新しい HTTP インターフェースを作成
MCP サーバー
GET /api/mcp-servers:すべての MCP サーバーを一覧表示GET /api/mcp-servers/:id:特定の MCP サーバーを取得POST /api/mcp-servers:HTTP インターフェースから新しい MCP サーバーを作成PUT /api/mcp-servers/:id:MCP サーバーを更新DELETE /api/mcp-servers/:id:MCP サーバーを削除GET /api/mcp-servers/:id/versions:MCP サーバーのすべてのバージョンを取得GET /api/mcp-servers/:id/versions/:version:MCP サーバーの特定のバージョンを取得POST /api/mcp-servers/:id/compile:MCP サーバーを WebAssembly にコンパイルPOST /api/mcp-servers/:id/activate:MCP サーバーを有効化POST /api/mcp-servers/:id/tools/:tool:MCP サーバーのツールを呼び出し
Curl から HTTP インターフェースへの変換
システムは、curl コマンドを HTTP インターフェースに変換できます。以下の JSON ボディを指定して、/api/http-interfaces/from-curl に POST リクエストを送信するだけです。
{
"command": "curl -H \"Content-Type: application/json\" https://api.example.com/resource",
"name": "example-api",
"description": "Example API endpoint"
}
システムは curl コマンドを解析し、MCP サーバーの作成に使用できる適切な形式の HTTP インターフェースを作成します。
OpenAPI 変換
OpenAPI へのエクスポート
/api/http-interfaces/:id/openapi に GET リクエストを送信すると、任意の HTTP インターフェースを OpenAPI 形式でエクスポートできます。レスポンスは、他の OpenAPI ツールで使用できる適切な形式の OpenAPI 3.0.0 仕様になります。
OpenAPI からのインポート
以下の JSON ボディを指定して、/api/http-interfaces/from-openapi に POST リクエストを送信すると、OpenAPI 仕様から新しい HTTP インターフェースを作成できます。
go run test/openapi/openapi_client.go
{
"name": "my-api",
"description": "My API description",
"spec": {
"openapi": "3.0.0",
"info": {
"title": "Sample API",
"description": "A sample API",
"version": "1.0.0"
},
"paths": {
"/users": {
"get": {
"summary": "Get all users",
"responses": {
"200": {
"description": "A list of users"
}
}
}
}
}
}
}
システムは OpenAPI 仕様を解析し、パスと操作の組み合わせごとに HTTP インターフェースを作成します。
ライセンス
MIT
参考資料
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。