🌐 MCP联合网关
    
⚠️ 状态:Alpha开发 该项目目前处于 阿尔法状态 并且正在积极开发中。功能正在实施中,可能会经常发生突破性的更改。目前还不建议用于生产。
模型上下文协议(MCP)生态系统的最终联邦入口点。
McpFederationGateway 是一种高性能, 本地AOT编译 .NET 10服务,充当多个上游MCP服务器的反向代理和聚合器。它为代理提供了一个统一的接口,大大减少了上下文消耗(高达40%的代币节省),并提供企业级安全性和策略执行——无论您是在笔记本电脑上本地运行,还是为整个组织集中部署。
______________________________________________________________________
🚦 项目状态
- 当前状态:阿尔法(积极发展)
- 版本:
0.1.0-preview - 目标:为MCP生态系统提供一个生产就绪的联邦网关。
- 完成:核心路由、工具聚合、多传输支持(Stdio/SSE)和AOT兼容性。
- 进行中:策略引擎、身份验证和高级文档生成。
______________________________________________________________________
✨ 为什么选择MCP联合网关?
💰 大幅节省成本(代币减少40%)
每个MCP服务器都向LLM上下文公开完整的工具文档。使用10多台服务器,您可以轻松消费5万多个代币,只需列出可用的工具即可。 网关最多可减少40% 通过智能聚合和联邦模式,为个人开发人员和企业节省资金。
🏢 为每个人服务:从地方发展到企业规模
个人开发者(Stdio):
- 将您的AI代币成本降低40%
- 在一个地方组织多个MCP
- 配置简单,网络开销为零
- 与Claude Desktop和其他MCP客户端无缝协作
适用于企业团队(HTTP/SSE):
- 作为组织中所有AI代理的集中网关进行部署
- 身份验证和授权:控制谁可以访问哪些MCP和工具
- 策略强制:执行前验证工具调用,防止危险操作
- 审计与合规:记录所有MCP交互以确保安全性和合规性
- 大规模成本优化:集中式上下文管理使所有代理的节省成倍增加
🔒 安全与安保(本地+企业)
直接运行MCP服务器会带来风险:
- 任意代码执行:开发人员未经批准运行不受信任的MCP,在非沙盒环境中执行代码
- 危险作业:数据库MCP可以删除数据,云MCP可以删除资源,文件系统MCP可以修改关键文件——所有这些都没有监督
- 无访问控制:标准MCP没有内置身份验证,因此不适合多用户场景
网关通过以下方式解决这些问题:
- 为所有MCP接入提供单点控制
- (未来)验证和限制危险操作的策略引擎
- (未来)对不受信任的MCP的沙盒支持
______________________________________________________________________
✨ 主要特点
🔄 联合与聚合
将多个下游MCP服务器组合到一个统一的接口中。使用自己的模式、传输和设置独立配置每个服务器。
🛣️ 智能路由
根据以下情况自动将工具调用和资源请求分派到正确的下游服务器:
- 工具名称前缀(直接模式)
- 元工具参数(联合模式)
- 服务器配置
🔌 双传输架构
网关同时或单独支持两种传输:
Stdio(本地):
- 与桌面AI客户端(Claude desktop等)集成
- 零网络开销,非常适合个人开发
- 在笔记本电脑上获得所有成本节约和安全优势
HTTP/SSE(远程):
- 集中部署以实现团队/组织范围内的访问
- 多个代理连接到单个网关实例
- 启用企业功能:身份验证、审核日志记录、策略执行
- 相同的成本节约,在所有用户中成倍增加
🧠 两种操作模式(每台服务器可配置)
直接模式 (默认)
- 它做什么:将下游服务器的所有工具直接显示在网关的工具列表中
- 工具命名:添加服务器名称前缀以防止冲突(例如。,
weather_get_forecast,database_query) - 背景影响:LLM上下文中包含完整的工具文档
- 最适合:当您希望LLM提前看到所有可用工具时,服务器数量少,工具使用频繁
- 示例:天气服务、计算器、简单实用程序
联合模式
- 它做什么:从主工具列表中隐藏特定工具,通过元工具提供访问权限
- 背景影响: 大幅削减 (最多可节省40%的令牌)-仅在上下文中使用元工具文档,而不是单个工具
- 访问方法:使用
how_to_use(server_name, topic)要获取文档,call(server_name, tool_name, args)调用 - 最适合:具有许多工具的大型MCP服务器,很少使用的工具,复杂的文档
- 示例:具有50多种工具的数据库MCP、云提供商MCP、复杂的代理框架
工具列表是如何形成的
当AI代理查询时 tools/list,网关返回:
- 所有直接模式工具 带有前缀:
- weather_get_forecast (直接模式下的天气服务器) - calc_add (直接模式下来自计算器服务器)
- 元工具 (始终包括在内):
- how_to_use(mcp_server_name, topic) -获取任何Federated Mode服务器的文档 - call(mcp_server_name, tool_name, args) -调用任何联合模式服务器上的任何工具
- 联合模式工具未列出 -它们通过元工具动态访问,保持上下文简洁
示例配置:
{
"servers": [
{
"name": "weather",
"mode": "direct",
"transport": "stdio",
"command": "npx",
"arguments": ["-y", "@modelcontextprotocol/server-weather"]
},
{
"name": "database",
"mode": "federated",
"transport": "http",
"url": "https://db-mcp.internal.company.com/sse"
}
]
}结果:代理看到 weather_get_forecast, how_to_use, call 在工具列表中。数据库工具(可能超过50个)是隐藏的,仅在需要时通过以下方式访问 call("database", "query", {...}).
🚀 本地AOT性能
编译为本机代码,实现超快速启动和最小占用空间。非常适合无服务器和容器化部署。
⚙️ 分层配置
将全局用户默认值与特定于工作区的配置合并。企业管理员可以设置组织范围内的策略,同时允许工作区自定义。
🔮 未来企业功能(路线图)
- 策略引擎:定义“数据库删除操作需要批准”或“仅在开发环境中修改云资源”等规则
- 认证:OAuth2、API密钥、用于安全访问的JWT令牌
- 速率限制:防止滥用和控制成本
- 沙箱:在隔离容器中运行不受信任的MCP
- 中央MCP注册表:从组织目录中发现并安装经批准的MCP
- 使用情况分析:跟踪令牌消耗、工具使用和每个用户/团队的成本
______________________________________________________________________
🛠️ 元工具
在 联合模式,网关提供了两个与整个生态系统交互的主要工具:
| 工具 | 说明 |
|---|---|
how_to_use | 为使用主机LLM的特定联合MCP服务器提供文档、摘要和使用指南。 |
call | 通过指定以下内容动态调用任何联邦服务器上的任何工具 server_name 和 tool_name. |
______________________________________________________________________
🧪 测试CLI
这 McpFederationGatewayTestingCLI 是一个全面的测试工具,旨在验证和基准化MCP联合网关功能。它为工具发现、调用、配置验证和性能分析提供了自动化测试功能。
主要特点
- 6测试命令:全面覆盖网关功能
- 详细日志:控制台和文件双重输出,用于详细诊断
- 现代CLI:使用系统构建。CommandLine 2.0.1用于强大的参数解析
- 非交互式:所有测试仅接受通过命令行参数的输入
可用测试命令
| 命令 | 描述 |
|---|---|
test-tools | 通过网关列出已配置MCP中的所有可用工具 |
test-call | 使用指定参数直接调用工具 |
test-federated | 测试联邦模式元工具(how_to_use, call) |
test-config | 配置验证和分层合并(用户+工作区) |
test-sampling | MCP采样功能测试 |
test-performance | 性能基准测试,包括延迟(p50/p95/p99)和吞吐量测试 |
配置文件
Testing CLI使用以下配置文件:
appsettings.json:日志配置和测试设置appsettings.secrets.json:API密钥和敏感配置(git-ignored)testingcli-config.json:MCP服务器定义和网关配置
用法示例
# List all available tools from configured MCPs
dotnet run --project src/McpFederationGateway.TestingCLI -- test-tools
# Test direct tool invocation with Context7
dotnet run --project src/McpFederationGateway.TestingCLI -- test-call \
--tool context7_query_docs \
--args '{"libraryId":"/dotnet/command-line-api","query":"latest version"}'
# Test federated mode with Playwright MCP
dotnet run --project src/McpFederationGateway.TestingCLI -- test-federated \
--server playwright \
--tool screenshot \
--args '{"url":"https://example.com"}'
# Run performance benchmarks
dotnet run --project src/McpFederationGateway.TestingCLI -- test-performance \
--iterations 10所有测试执行都会在 logs/ 带有时间戳的目录,包括用于调试目的的原始请求和响应。
______________________________________________________________________
🚀 使用DNX运行
这 McpFederationGateway 设计为使用以下方式执行 DNX,一个轻量级的跑步者。NET的MCP服务器。
# To run the latest preview version from NuGet
dnx MicroAgents.McpFederationGateway --transport stdio
# To run a specific version
dnx MicroAgents.McpFederationGateway@0.1.0-preview --transport stdio
# Alternative: Install as a global .NET tool
dotnet tool install -g MicroAgents.McpFederationGateway --version 0.1.0-preview
McpFederationGateway --transport stdio从源代码进行开发和本地执行:
# Clone the repository
git clone https://github.com/MicroAgentsNet/McpFederationGateway.git
cd McpFederationGateway
# Run using dotnet run
dotnet run --project src/McpFederationGateway -- --transport stdio配置
网关在中查找配置 ~/.microagents/config.json 以及本地工作空间根。
示例 config.json:
{
"servers": [
{
"name": "weather",
"transport": "stdio",
"mode": "direct",
"command": "npx",
"arguments": ["-y", "@modelcontextprotocol/server-weather"]
},
{
"name": "complex-agent",
"transport": "http",
"mode": "federated",
"url": "https://mcp.example.com/sse"
}
]
}______________________________________________________________________
📐 建筑
建立在官方 MCP C#SDK,网关使用基于DI的解耦架构:
- 聚合服务:发现并合并下游功能。
- 路由器服务:处理协议级调度和工具映射。
- McpClientFactory:管理标准和SSE传输的生命周期。
- 配置服务:处理用户和根设置的分层合并。
______________________________________________________________________
🤝 社区承诺
我们致力于MicroAgents生态系统的长期健康和开放。
- 麻省理工学院的许可证将永远有效。
- 变现:我们可能会提供付费支持、捐赠、赞助或定制开发。然而,商业功能遵循“N-2”政策:两个版本之前的功能总是成为社区版本的一部分。
- 社区代码我们的开源代码永远不会依赖或包含商业代码。如果是这样,这些功能将被提升到社区层。
- 无担保:本软件按“原样”提供,不提供任何形式的保修。
______________________________________________________________________
📄 许可证
该项目根据 MIT许可证 -看看 许可证 文件以获取详细信息。
