MCP协议聚合服务

McpMesh是一个.NET 9服务,用于聚合多个模型上下文协议(MCP)服务器,提供多MCP服务器连接、协议端点暴露和健康监控功能。

  • by dmatvienco
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 dmatvienco/McpMesh

使用说明

McpMesh

A.NET 9服务,用于聚合多个模型上下文协议(MCP)服务器。

特性

  • 多MCP聚合:同时连接到多个MCP服务器
  • MCP协议支持:使用ModelContextProtocol公开MCP协议端点。AspNetCore
  • 灵活的配置:通过应用程序设置或Kubernetes ConfigMaps配置MCP服务器
  • 健康监测:用于容器编排的内置健康端点
  • 容器化:Kubernetes部署清单支持Docker

Docker快速入门

运行McpMesh最简单的方法是使用Docker,其中包括所有必要的依赖项:

  1. 克隆存储库:
git clone https://github.com/dmatvienco/McpMesh.git
cd McpMesh
  1. 使用Docker构建和运行:
docker build -t mcpmesh .
docker run -p 5293:80 mcpmesh
  1. 该服务将在 http://localhost:5293

地方发展

对于没有Docker的开发,您需要:

  • .NET 9 SDK
  • Node.js和Python(用于MCP服务器)
dotnet run

配置

在您的计算机中配置MCP服务器 appsettings.jsonDocker镜像包含运行示例MCP服务器所需的所有依赖项。

{
  "McpMeshOptions": {
    "Packages": [
      {
        "Enabled": true,
        "Id": "example-package",
        "Servers": ["everything-server", "time-server"]
      }
    ],
    "Servers": [
      {
        "Id": "everything-server",
        "Name": "MCP Everything Server",
        "Type": "stdio",
        "Command": "npx",
        "Args": ["@modelcontextprotocol/server-everything"],
        "Environment": {},
        "Enabled": true,
        "TimeoutMs": 30000
      },
      {
        "Id": "time-server",
        "Name": "Time MCP Server",
        "Type": "stdio",
        "Command": "uvx",
        "Args": ["mcp-server-time"],
        "Environment": {},
        "Enabled": true,
        "TimeoutMs": 30000
      }
    ]
  }
}

默认配置包括两个示例MCP服务器:

  • 一切服务器:11个演示工具(echo、add、longRunningOperation等)
  • 等待时间过去的人:2个时间相关工具(get_current_time、convert_time)

端点

健康终点

  • GET /health/live -活体探针
  • GET /health/ready -准备就绪探针
  • GET /health/startup -启动探针

MCP协议端点

  • MCP协议端点可在 /{packageId}
  • 支持 tools/list 和 tools/call MCP操作

测试

使用curl测试MCP协议:

# Test health
curl http://localhost:5293/health/live

# Test MCP tools/list (should return 13 tools from both servers)
curl -X POST http://localhost:5293/example-package \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":"1","method":"tools/list"}'

# Test calling a tool (echo example)
curl -X POST http://localhost:5293/example-package \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":"2","method":"tools/call","params":{"name":"echo","arguments":{"message":"Hello McpMesh!"}}}'

为了获得更具互动性的体验,您可以使用 MCP检查员 该工具提供了一个web界面来探索和测试MCP服务器。Inspector可以连接到McpMesh,允许您浏览可用的工具,检查它们的模式,并使用用户友好的界面执行它们。

Docker部署

docker build -t mcpmesh .
docker run -p 5293:80 mcpmesh

Kubernetes部署

kubectl apply -f deployment/namespace.yaml
kubectl apply -f deployment/configmap.yaml
kubectl apply -f deployment/deployment.yaml
kubectl apply -f deployment/service.yaml

未来计划

  • OAuth集成:添加对OAuth提供者(GitHub、Google等)的支持,以实现安全身份验证
  • Claude桌面集成:作为MCP连接器与Claude Desktop进行本地集成
  • Web用户界面:用于配置MCP服务器和监控状态的管理界面

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件。