MCP桥API
用于模型上下文协议服务器的轻量级LLM无关RESTful代理
*图:React Native MCP Agent界面显示带有工具执行结果的聊天屏幕(左)和带有MCP Bridge连接状态和Gemini API配置的设置屏幕(右)*
作者:\ Arash Ahmadi、Sarah S.Sharif和Yaser M.Banad\*\ 美国俄克拉荷马州俄克拉荷马大学电气与计算机工程学院\ \*通讯作者:bana@ou.edu
 
如果你想在工作中引用这个研究项目,请引用我们的论文:
@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原生MCP代理
- ⚙️ 配置
- 🧪 API使用
- 🔐 风险等级
- 🌟 社区影响和认可
- 📋 更新日志
- 🚧 部署考虑
- 📊 与其他MCP网桥/代理存储库的比较
- 📝 许可证
📚 引言
MCP Bridge是一个轻量级、快速且与LLM无关的代理,连接到多个模型上下文协议(MCP)服务器,并通过统一的REST API公开其功能。它使任何平台上的任何客户端都可以在没有流程执行约束的情况下利用MCP功能。与Anthropic的官方MCP SDK不同,MCP Bridge是完全独立的,设计用于与任何LLM后端配合使用,这使其具有适应性、模块化和面向未来的特点,适用于各种部署。通过可选的基于风险的执行级别,它提供了从标准执行到确认工作流和Docker隔离的精细安全控制,同时保持了与标准MCP客户端的向后兼容性。
与此服务器端基础架构相辅相成的是两种不同的智能客户端实现:
- Python MCP Gemini代理 -用于桌面环境的命令行Python客户端
- React原生MCP代理 -现代跨平台移动应用程序
这两个客户端都可以通过智能LLM驱动的界面与MCP工具进行自然语言交互,该界面具有复杂操作的多步推理、安全确认工作流处理和可配置的显示选项,以增强可用性。MCP Bridge的多功能服务器端功能和这些智能客户端接口共同创建了一个强大的生态系统,用于开发复杂的LLM驱动的应用程序。
⚠️ 问题
- 许多MCP服务器使用需要本地进程执行的STDIO传输
- 边缘设备、移动设备、web浏览器和其他平台无法有效运行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桥的Node.js 18+
- Python 3.8+用于Python MCP Gemini代理
- 移动应用程序的React Native开发环境
🚀 快速设置
MCP电桥
# Install dependencies
npm install express cors morgan uuid
# Start the server
node mcp-bridge.jsPython MCP Gemini代理
# Install dependencies
pip install google-generativeai requests rich
# Start the agent
python llm_test.pyReact原生MCP代理
# 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代理
Python MCP Gemini Agent是一个命令行客户端,它连接到MCP Bridge,并使用谷歌的Gemini LLM来处理用户请求和执行MCP工具命令。它专为桌面环境和开发人员工作流程而设计。
主要特点
- 多步推理 -支持复杂操作的顺序工具调用
- 安全确认流程 -中高风险操作的综合处理
- 灵活的JSON显示 -控制JSON输出的冗长程度,以提高可读性
- 可配置连接 -使用自定义URL和端口连接到任何MCP网桥实例
- 发现可用工具 -自动检测并使用连接服务器中的所有工具
Python代理配置
Python MCP Gemini代理支持多种命令行选项:
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代理使用示例
# 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原生MCP代理
React Native MCP Agent是一个现代的跨平台移动应用程序,通过干净、用户友好的界面提供对MCP工具的直观访问。它采用Expo和React Native Paper构建,提供了一个针对iOS和Android平台优化的深色主题Material Design 3界面。
主要特点
- 跨平台兼容性:在iOS、Android和web平台上运行
- 直观的聊天界面:具有分段消息显示的自然语言交互
- 实时工具执行:MCP工具调用的视觉反馈,带有可折叠的结果部分
- 会话管理:具有AI生成标题的持久对话历史
- 现代UI/UX:带有玻璃形态效果和流畅动画的深色主题
- 综合设置:易于配置MCP桥接连接和Gemini API设置
- 安全集成:内置支持MCP Bridge的风险等级确认工作流程
- 多模型支持:兼容各种Gemini型号,包括最新的2.5 Flash预览版
React Native应用程序入门
- 配置MCP网桥:在“设置”选项卡中设置MCP网桥服务器URL
- 添加Gemini API密钥:输入用于AI功能的Google Gemini API密钥
- 选择模型:从现有的Gemini型号中选择,包括最新版本
- 开始聊天:使用MCP工具开始自然语言对话
该应用程序会自动发现可用的MCP工具,并为复杂的多步操作提供上下文帮助。
⚙️ 配置
MCP网桥配置
MCP网桥是通过名为的JSON文件配置的 mcp_config.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网桥的运行状况 |
/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 | 执行带参数的提示 |
🧪 请求示例
📂 读取目录(文件系统)
POST /servers/filesystem/tools/list_directory
Content-Type: application/json
{
"path": "."
}🧪 客户端功能
Python代理功能
Python MCP Gemini代理提供:
- 多步推理 -支持复杂操作的顺序工具调用
- 安全确认流程 -中高风险操作的综合处理
- 灵活的JSON显示 -控制JSON输出的冗长程度,以提高可读性
- 可配置连接 -使用自定义URL和端口连接到任何MCP网桥实例
- 发现可用工具 -自动检测并使用连接服务器中的所有工具
React原生代理功能
React Native MCP代理提供:
- 会话管理 -具有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原生MCP代理:添加了一个全面的移动应用程序,包括:
- iOS、Android和web的跨平台支持 - 现代材料设计3界面,深色主题 - 使用AI生成的标题进行智能对话管理 - 具有视觉反馈的实时工具执行 - 内置安全确认工作流程 - 支持多种Gemini型号,包括最新版本
- 🔧 增强工具执行:改进了所有客户端的多步骤推理能力
- 🛡️ 安全改进:增强风险等级确认流程,提供更好的用户体验
- 📊 更好的错误处理:更强大的错误处理和恢复机制
🌟 社区影响和认可
MCP Bridge在人工智能和开发社区中获得了认可,在学术研究、行业安全分析、专业话语和技术出版物中都有所体现。这些认可突出了我们轻量级、LLM无关的代理解决方案的实用价值和现实影响。
*本文引用:从快速注入到协议漏洞:LLM驱动的AI代理工作流中的威胁 -一篇讨论LLM驱动的AI代理工作流安全影响的研究论文*
*研究简报:MCP安全 -Wiz安全研究强调MCP Bridge是MCP生态系统中学术工作的一个例子*
*Vaibhava Lakshmi Ravideshik的领英帖子 -LinkedIn学习讲师讨论MCP Bridge的实际应用*
*使用模型上下文协议(MCP)为金融服务解锁代理应用程序 -介绍MCP Bridge金融应用设计模式的中篇文章*
🚧 部署考虑
🔒 安全
- 在生产环境中使用HTTPS
- 为敏感操作添加身份验证
- 网络隔离关键服务
📊 扩展
- 使用负载平衡器
- 汇集高需求服务器
- 跟踪指标和资源压力
📱 移动部署
对于React Native应用程序:
- 使用以下工具进行生产构建
npx expo build - 使用EAS Build配置应用商店部署
- 使用EAS Update设置空中更新
📊 与其他MCP网桥/代理存储库的比较
| :----------------------- | :--------------------------------------------------------------- | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------- | :----------------------------------------------------------------- | :------------------------------------------------------------------------ | :---------------------------------------------------------------------- | | ⚙️ 主要语言 |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连接 |仅限苏格兰和南方能源公司| STDIO(托管)+Docker(基于风险)✔️ |stdio、sse、docker | 🚀 API接口 |基本REST| 统一REST API✔️ |OpenAI兼容,REST,MCP服务器(SSE)| REST API+Swagger | REST API(流式),CLI|交互式CLI| | ✨ 主要特点 |基本工具列表/调用| 多服务器、风险级别、安全确认、Docker Exec、Gemini Agent、配置灵活性✨ |OpenAI兼容。,采样,多传输,Auth,Docker/Helm,灵活配置|多服务器,工具名称规范。、Swagger、聊天UI |语言链集成、REST/CLI、流媒体|双向协议转换、数据库工具| | 🔧 配置 |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, \`
