MCP网关服务

MCPGo是一个轻量级、高性能的网关,用于连接AI代理与多个模型上下文协议(MCP)服务器,采用领域驱动架构和CQRS设计以确保可扩展性和可维护性。

  • by amirtq
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 amirtq/MCPGo

使用说明

MCPGo:Go驱动的MCP网关

MCPGo是一个轻量级、高性能、面向未来的网关,它将AI代理与多个模型上下文协议(MCP)服务器连接起来。它采用干净的、域驱动的架构和CQRS构建,从一开始就确保了可扩展性和可维护性。

🎯 核心原则

  • 语言: Go(最新稳定版本)
  • 架构: 特征切片设计
  • 依赖规则: 代码是按功能组织的,而不是按技术层组织的。
  • 简单性: 没有繁重的代码生成或魔法。只要干净,地道的围棋。

⚖️ 许可证

该项目根据 带有Commons条款限制的MIT许可证。您可以出于非商业目的自由使用本软件。对于商业用途,请打开一个问题。请参阅 许可证 文件以获取完整详细信息。

🚀 入门指南

先决条件

  • Go(1.21或更高版本)
  • 制造

构建

要构建应用程序,请运行:

make build

这将在以下位置创建二进制文件 bin/mcpgo.

跑

要运行网关,请使用:

make run

服务器将从配置中指定的地址启动(默认值: :443).

MCP网关端点

MCPGo现在直接使用模型上下文协议。代理商可以建立 WebSocket连接到 /mcp 使用标准的端点 Sec-WebSocket-Protocol: mcp 子协议。每个客户端会话都被代理到定义的上游MCP服务器 在配置中,响应使用 标准MCP消息格式。这使得MCPGo充当代理之间的网关 以及上游MCP服务,而不改变有效载荷。 服务器将于启动 https://localhost:443.

测试

要运行测试套件,请执行以下操作:

make test

棉绒

要格式化和整理代码,请执行以下操作:

make lint

🏛️ 建筑

该项目遵循 特征切片设计代码不是按技术层组织的,而是按特征分组的。这增强了模块化,使应用程序更容易开发和维护。

主要部件有:

  • backend/apps:包含每个功能的核心业务逻辑。
  • backend/api:通过HTTP API公开功能。
  • backend/services:持有共同的、跨领域的担忧,如SSL管理。

有关更详细的说明,请参阅 docs/architecture.md.