MCP Bridge API について
MCP Bridge は、複数の MCP サーバーに接続し、統一された REST API で公開する軽量なプロキシです。特定の LLM に依存せず、モバイル、Web、エッジデバイスなど STDIO サーバーをローカルで実行できない環境を対象としています。実行を制御するリスクレベルも任意で設定できます。
主な機能
- 01複数の MCP サーバーを統一 REST API で利用
- 02LLM に依存しないプロキシ設計
- 03ツール実行の任意のリスクレベル設定
- 04ツール、リソース、プロンプトのエンドポイント
活用シーン
- 01モバイルやエッジデバイスから MCP ツールを呼び出す
- 021 組の MCP サーバーを複数のクライアントで共有する
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Bridge API
Model Context Protocol サーバー向けの軽量で LLM に依存しない RESTful プロキシ
図:React Native MCP Agent のインターフェース。左側はツール実行結果を表示するチャット画面、右側は MCP Bridge の接続状態と Gemini API の設定を表示する設定画面です。
著者:
Arash Ahmadi、Sarah S. Sharif、Yaser M. Banad*
オクラホマ大学 電気・コンピューター工学部、米国オクラホマ州
*責任著者:[email protected]
この研究プロジェクトを研究で引用する場合は、次の論文を引用してください。
@article{ahmadi2025mcp,
title={MCP Bridge: A Lightweight, LLM-Agnostic RESTful Proxy for Model Context Protocol Servers},
author={Ahmadi, Arash and Sharif, Sarah and Banad, Yaser M},
journal={arXiv preprint arXiv:2504.08999},
year={2025}
}
📋 目次
- 📚 はじめに
- 🏗️ アーキテクチャ
- 💾 インストール
- 🐍 Python MCP-Gemini エージェント
- 📱 React Native MCP エージェント
- ⚙️ 設定
- 🧪 API の使用方法
- 🔐 リスクレベル
- 🌟 コミュニティへの影響と評価
- 📋 変更履歴
- 🚧 デプロイに関する考慮事項
- 📊 その他の MCP Bridge/プロキシリポジトリとの比較
- 📝 ライセンス
📚 はじめに
MCP Bridge は、複数の Model Context Protocol(MCP)サーバーに接続し、その機能を統一された REST API を通じて公開する、軽量で高速な、LLM に依存しないプロキシです。プロセス実行上の制約を受けずに、あらゆるプラットフォームのクライアントが MCP の機能を活用できます。Anthropic の公式 MCP SDK とは異なり、MCP Bridge は完全に独立しており、あらゆる LLM バックエンドで動作するように設計されているため、多様なデプロイ環境に適応でき、モジュール性と将来への対応力を備えています。オプションのリスクベース実行レベルにより、標準実行から確認ワークフロー、Docker による分離まで、きめ細かなセキュリティ制御を提供しながら、標準 MCP クライアントとの後方互換性を維持します。
このサーバー側インフラを補完する、2 種類のインテリジェントなクライアント実装を用意しています。
- Python MCP-Gemini Agent - デスクトップ環境向けのコマンドライン Python クライアント
- React Native MCP Agent - 最新のクロスプラットフォーム対応モバイルアプリケーション
どちらのクライアントも、複雑な操作に対する多段階推論、セキュリティ確認ワークフローの処理、使いやすさを高める設定可能な表示オプションを備えた、LLM を活用したインテリジェントなインターフェースを通じて、MCP ツールとの自然言語による対話を可能にします。MCP Bridge の多用途なサーバー側機能と、これらのインテリジェントなクライアントインターフェースが連携することで、高度な LLM 活用アプリケーションを開発するための強力なエコシステムを実現します。
⚠️ 問題点
- 多くの MCP サーバーは、ローカルでのプロセス実行を必要とする STDIO トランスポートを使用しています
- エッジデバイス、モバイルデバイス、ウェブブラウザーなどのプラットフォームでは、npm や Python の MCP サーバーを効率的に実行できません
- リソースに制約のある環境では、MCP サーバーへの直接接続は実用的ではありません
- 複数の独立したクライアントが同じサーバーに接続すると、重複が生じ、リソース使用量が増加します
- MCP ツールを直接操作するには、個々のツールの形式や要件に関する技術的な知識が必要です
🏗️ アーキテクチャ
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ React Native │ │ Python │ │ Other Clients │
│ MCP Agent │ │ Gemini Agent │ │ │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │
│ │ │
│ ▼ │
│ ┌───────────────────────┐ │
└──────────►│ │◄─────────┘
│ REST API │
│ │
└───────────┬───────────┘
│
▼
┌───────────────────────┐
│ │
│ MCP Bridge │
│ │
└───────────┬───────────┘
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ MCP Server │ │ MCP Server │ │ MCP Server │
│ (STDIO) │ │ (STDIO) │ │ (SSE) │
└─────────────┘ └─────────────┘ └─────────────┘
💾 インストール
📦 前提条件
- MCP Bridge 用の Node.js 18 以降
- Python MCP-Gemini Agent 用の Python 3.8 以降
- モバイルアプリ用の React Native 開発環境
🚀 クイックセットアップ
MCP Bridge
# Install dependencies
npm install express cors morgan uuid
# Start the server
node mcp-bridge.js
Python MCP-Gemini Agent
# Install dependencies
pip install google-generativeai requests rich
# Start the agent
python llm_test.py
React Native MCP Agent
# Navigate to the React Native app directory
cd reactnative-gamini-mcp-agent
# Install dependencies
npm install
# Start the development server
npx expo start
🐍 Python MCP-Gemini Agent
Python MCP-Gemini Agent は、MCP Bridge に接続し、Google の Gemini LLM を使用してユーザーのリクエストを処理し、MCP ツールのコマンドを実行するコマンドラインクライアントです。デスクトップ環境や開発者のワークフロー向けに設計されています。
主な機能
- 複数ステップの推論 - 複雑な操作に対応する、順序立てたツール呼び出しをサポートします
- セキュリティ確認フロー - 中リスクおよび高リスクの操作に対する処理を統合しています
- 柔軟な JSON 表示 - 読みやすさを高めるために、JSON 出力の詳細度を調整できます
- 接続の設定 - カスタム URL とポートを指定して、任意の MCP Bridge インスタンスに接続できます
- 利用可能なツールの検出 - 接続済みサーバーのすべてのツールを自動的に検出して使用します
Python Agent の設定
Python MCP-Gemini Agent は、いくつかのコマンドラインオプションに対応しています。
usage: llm_test.py [-h] [--hide-json] [--json-width JSON_WIDTH] [--mcp-url MCP_URL] [--mcp-port MCP_PORT]
MCP-Gemini Agent with configurable settings
options:
-h, --help show this help message and exit
--hide-json Hide JSON results from tool executions
--json-width JSON_WIDTH
Maximum width for JSON output (default: 100)
--mcp-url MCP_URL MCP Bridge URL including protocol and port (default: http://localhost:3000)
--mcp-port MCP_PORT Override port in MCP Bridge URL (default: use port from --mcp-url)
Python Agent の使用例
# Basic usage with default settings
python llm_test.py
# Hide JSON results for cleaner output
python llm_test.py --hide-json
# Connect to a custom MCP Bridge server
python llm_test.py --mcp-url http://192.168.1.100:3000
# Connect to a different port
python llm_test.py --mcp-port 4000
# Adjust JSON width display for better formatting
python llm_test.py --json-width 120
📱 React Native MCP Agent
React Native MCP Agent は、すっきりとした使いやすいインターフェースを通じて MCP ツールに直感的にアクセスできる、最新のクロスプラットフォームモバイルアプリです。Expo と React Native Paper で構築されており、iOS と Android の両方に最適化された、ダークテーマの Material Design 3 インターフェースを提供します。
主な機能
- クロスプラットフォーム対応:iOS、Android、ウェブプラットフォームで動作します
- 直感的なチャットインターフェース:メッセージを分割して表示し、自然言語でやり取りできます
- リアルタイムのツール実行:折りたたみ可能な結果セクションで、MCP ツールの呼び出しに対する視覚的なフィードバックを提供します
- 会話の管理:AI が生成したタイトル付きで、会話履歴を保持します
- 最新の UI/UX:グラスモーフィズム効果と滑らかなアニメーションを備えたダークテーマです
- 充実した設定:MCP Bridge の接続と Gemini API の設定を簡単に行えます
- セキュリティ統合:MCP Bridge のリスクレベル別確認ワークフローを標準でサポートします
- 複数モデルのサポート:最新の 2.5 Flash Preview を含む、さまざまな Gemini モデルに対応しています
React Native アプリの利用を開始する
- MCP Bridge を設定する:Settings タブで MCP Bridge サーバーの URL を設定します
- Gemini API キーを追加する:AI 機能を利用するため、Google Gemini API キーを入力します
- モデルを選択する:最新リリースを含む、利用可能な Gemini モデルから選択します
- チャットを開始する:MCP ツールと自然言語での会話を始めます
アプリは利用可能な MCP ツールを自動的に検出し、複雑な複数ステップの操作に対して、状況に応じた支援を提供します。
⚙️ 設定
MCP Bridge の設定
MCP Bridge は、プロジェクトのルートにある mcp_config.json という JSON ファイルで設定します。以下は基本的な MCP 設定の例です。
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/directory"],
"riskLevel": 2
},
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "your-slack-token",
"SLACK_TEAM_ID": "your-team-id"
},
"riskLevel": 1
}
}
}
🧪 API の使用方法
MCP Bridge は、接続済みサーバーとやり取りするための、シンプルで直感的な REST API を提供します。利用可能なエンドポイントは次のとおりです。
📋 一般エンドポイント
| エンドポイント | メソッド | 説明 |
|---|---|---|
/servers | GET | 接続済みのすべての MCP サーバーを一覧表示します |
/servers | POST | 新しい MCP サーバーを起動します |
/servers/{serverId} | DELETE | MCP サーバーを停止して削除します |
/health | GET | MCP Bridge のヘルスステータスを取得します |
/confirmations/{confirmationId} | POST | 中リスクのリクエストの実行を確認します |
📌 サーバー固有のエンドポイント
| エンドポイント | メソッド | 説明 |
|---|---|---|
/servers/{serverId}/tools | GET | 特定のサーバーのすべてのツールを一覧表示します |
/servers/{serverId}/tools/{toolName} | POST | 指定したツールを実行します |
/servers/{serverId}/resources | GET | すべてのリソースを一覧表示します |
/servers/{serverId}/resources/{resourceUri} | GET | 指定したリソースの内容を取得します |
/servers/{serverId}/prompts | GET | すべてのプロンプトを一覧表示します |
/servers/{serverId}/prompts/{promptName} | POST | 引数を指定してプロンプトを実行します |
🧪 リクエスト例
📂 ディレクトリの読み取り(Filesystem)
POST /servers/filesystem/tools/list_directory
Content-Type: application/json
{
"path": "."
}
🧪 クライアントの機能
Python エージェントの機能
Python MCP-Gemini Agent には、次の機能があります。
- 複数ステップの推論 - 複雑な操作に対応する、順序に沿ったツール呼び出しをサポートします
- セキュリティ確認フロー - 中リスクおよび高リスクの操作を統合的に処理します
- 柔軟な JSON 表示 - JSON 出力の詳細度を調整して、読みやすくできます
- 接続の設定 - カスタム URL とポートを指定して、任意の MCP Bridge インスタンスに接続できます
- 利用可能なツールの検出 - 接続されたサーバーのすべてのツールを自動的に検出して使用します
React Native エージェントの機能
React Native MCP Agent には、次の機能があります。
- 会話管理 - AI が生成したタイトル付きの、永続的なチャット履歴
- メッセージの分割表示 - テキスト応答とツール操作を明確に分けて表示します
- リアルタイムのツール実行 - 折りたたみ可能な結果セクションで視覚的にフィードバックします
- セキュリティ確認 UI - 中リスクおよび高リスクの操作に対応するネイティブの確認ダイアログ
- 複数モデルのサポート - さまざまな Gemini モデルをサポートし、簡単に切り替えられます
- クロスプラットフォーム対応 - iOS、Android、Web プラットフォームで動作します
- モダンなマテリアルデザイン - スムーズなアニメーションと触覚フィードバックを備えたダークテーマ
🔐 リスクレベル
MCP Bridge では、サーバーの実行動作を制御するための、任意のリスクレベルシステムを実装しています。リスクレベルを利用すると、機密性が高い可能性のある MCP サーバー操作の実行時に、セキュリティとリソースに関する懸念を管理できます。
リスクレベルの分類
| レベル | 名前 | 説明 | 動作 |
|---|---|---|---|
| 1 | 低 | 標準的な実行 | 確認なしで直接実行します |
| 2 | 中 | 確認が必要 | 処理の前に、クライアントが実行を確認する必要があります |
| 3 | 高 | Docker での実行が必要 | サーバーを分離された Docker コンテナで実行します |
リスクレベルの設定
後方互換性を保つため、リスクレベルの設定は任意です。mcp_config.json でリスクレベルを設定できます。
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/directory"],
"riskLevel": 2
},
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "your-slack-token",
"SLACK_TEAM_ID": "your-team-id"
},
"riskLevel": 1
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "your-github-token"
},
"riskLevel": 3,
"docker": {
"image": "node:18",
"volumes": ["/tmp:/tmp"],
"network": "host"
}
}
}
}
リスクレベルのワークフロー
低リスク(レベル 1)
- 追加の手順なしで標準的に実行します
- セキュリティ上の懸念が最小限の操作に適しています
- リスクレベルが指定されていない場合は、これがデフォルトの動作です
中リスク(レベル 2)
- クライアントがツール実行リクエストを送信します
- サーバーが確認 ID を含む確認リクエストを返します
- クライアントは続行するために、別途確認リクエストを送信する必要があります
- 確認後にのみ、サーバーが操作を実行します
Python MCP-Gemini Agent と React Native Agent はどちらも、この確認フローを自動的に処理し、必要に応じてユーザーに承認を求めます。
高リスク(レベル 3)
- サーバーを分離された Docker コンテナで自動的に実行します
- MCP サーバープロセスを環境的に分離します
- Docker がインストールされ、適切に設定されている必要があります
📋 変更履歴
最新の更新
-
✅ UV パッケージマネージャーのサポート:UV ベース(Python)の MCP サーバーの読み込みに関する問題を修正しました。MCP Bridge が UV パッケージマネージャーを使用する Python MCP サーバーを適切に初期化して通信するようになり、UV ベースのツールチェーンで発生していた以前の互換性の問題が解消されました。
-
📱 React Native MCP Agent:次の機能を備えた包括的なモバイルアプリケーションを追加しました。
- iOS、Android、Web のクロスプラットフォーム対応
- ダークテーマを採用した、モダンなマテリアルデザイン 3 のインターフェース
- AI が生成したタイトルによる、インテリジェントな会話管理
- 視覚的なフィードバックを伴う、リアルタイムのツール実行
- セキュリティ確認ワークフローを内蔵
- 最新リリースを含む、複数の Gemini モデルへの対応
-
🔧 ツール実行の強化:すべてのクライアントで、複数ステップの推論機能を改善しました
-
🛡️ セキュリティの改善:ユーザーエクスペリエンスを向上させ、リスクレベル確認フローを強化しました
-
📊 エラーハンドリングの改善:エラーハンドリングと復旧の仕組みを強化しました
🌟 コミュニティへの貢献と評価
MCP Bridge は、学術研究、業界のセキュリティ分析、専門家による議論、技術系の出版物で取り上げられ、AI や開発者のコミュニティ内で評価されています。こうした評価は、軽量で LLM に依存しないプロキシソリューションの実用的な価値と、現実世界での影響を示しています。
この論文で引用されています:From Prompt Injections to Protocol Exploits: Threats in LLM-Powered AI Agents Workflows - LLM を活用した AI エージェントのワークフローにおけるセキュリティ上の影響を論じた研究論文です。
調査ブリーフィング:MCP Security - MCP エコシステムにおける学術研究の例として MCP Bridge を取り上げた、Wiz のセキュリティ調査です。
Vaibhava Lakshmi Ravideshik による LinkedIn 投稿 - LinkedIn Learning のインストラクターが、MCP Bridge の実用的な用途について議論しています。
金融サービス向け Model Context Protocol(MCP)によるエージェント型アプリの可能性を解き放つ - 金融アプリケーションにおける MCP Bridge の設計パターンを取り上げた Medium の記事です。
🚧 デプロイ時の考慮事項
🔒 セキュリティ
- 本番環境では HTTPS を使用します
- 機密性の高い操作には認証を追加します
- 重要なサービスをネットワークから分離します
📊 スケーリング
- ロードバランサーを使用します
- 需要の高いサーバーをプールします
- メトリクスとリソースの負荷を追跡します
📱 モバイルへのデプロイ
React Native アプリの場合:
npx expo buildを使用して本番環境向けにビルドします- EAS Build でアプリストアへのデプロイを設定します
- EAS Update で OTA アップデートを設定します
📊 他の MCP Bridge/プロキシリポジトリとの比較
| 機能 | ivanboring/mcp-rest | INQUIRELAB/mcp-bridge-api(このリポジトリ) | SecretiveShell/MCP-Bridge | JoshuaRileyDev/mcp-api | rakesh-eltropy/mcp-client | bartolli/mcp-llm-bridge |
|---|---|---|---|---|---|---|
| ⚙️ 主要言語 | Node.js | Node.js(ブリッジ)+ Python(エージェント)✨ | Python | Node.js | Python | Python |
| 🎯 主な目的 | シンプルな REST ラッパー | LLM 非依存の REST ブリッジ + Gemini エージェント | 多機能な OpenAI 対応 REST ブリッジ + MCP サーバー | MCP サーバー用 REST API + チャット UI の例 | MCP ツールを使う LangChain エージェント(REST/CLI) | MCP <-> LLM ブリッジ(OpenAI 互換) |
| 🔌 MCP 接続 | SSE のみ | STDIO(管理対象)+ Docker(リスクベース)✔️ | STDIO、SSE、Docker | STDIO | STDIO(LangChain) | STDIO |
| 🚀 API インターフェース | 基本的な REST | 統合 REST API ✔️ | OpenAI 互換、REST、MCP サーバー(SSE) | REST API + Swagger | REST API(ストリーミング)、CLI | 対話型 CLI |
| ✨ 主な機能 | 基本的なツール一覧/呼び出し | 複数サーバー、リスクレベル、セキュリティ確認、Docker 実行、Gemini エージェント、柔軟な設定 ✨ | OpenAI 互換、サンプリング、マルチトランスポート、認証、Docker/Helm、柔軟な設定 | 複数サーバー、ツール名の正規化、Swagger、チャット UI | LangChain 統合、REST/CLI、ストリーミング | 双方向のプロトコル変換、DB ツール |
| 🔧 設定 | CLI 引数 | JSON ファイル + 環境変数 ✔️ | JSON ファイル、HTTP URL、環境変数 | JSON ファイル(複数パスを検索)、環境変数 | JSON ファイル | Python オブジェクト、環境変数 |
| 🧩 LLM 統合 | なし | あり(マルチステップ推論に対応した専用 Gemini エージェント)✨ | あり(OpenAI エンドポイント) | なし(API のみ) | あり(LangChain) | あり(OpenAI クライアント) |
| 🏗️ 複雑さ | 低 | 低 ✔️ | 高 | 中程度 | 中〜高 | 中程度 |
| 🛡️ セキュリティ機能 | なし | リスクレベル(中/高)+ 確認フロー + Docker 分離 ✨ | 基本認証(API キー)、CORS | なし | なし | なし |
| 📦 主な依存関係 | express、mcp-client | express、uuid(ブリッジ、最小限の依存関係);requests、google-genai、rich(エージェント) | fastapi、mcp、mcpx | express、@mcp/sdk、socket.io | fastapi、` |
ライセンスの適用範囲
INQUIRE Lab のオリジナルコードは、PolyForm Noncommercial License 1.0.0 の下でライセンスされています。INQUIRE Lab のオリジナルデータセット、図、ドキュメントは、CC BY-NC 4.0 の下でライセンスされています。適用範囲とライセンス全文については、LICENSE をご覧ください。他の権利者が保有する素材には、元の利用条件が適用されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。