GoAkt MCP 网关
使用说明
- 项目简介
- 该项目是一套基于 MCP(Model Context Protocol)的网关框架,能够对接和管理 MCP 服务器进程(如通过 stdio 启动的子进程或 HTTP 服务),实现对资源/工具的托管、注册与调用,以及对请求的路由、策略评估、会话管理和审计记录等能力。它通过 GoAkt 的 Actor 模型组织运行时组件,提供可扩展、可观测的 MCP 后端服务。
- 主要功能点
- 工具注册与管理:支持动态注册、更新、禁用、删除工具,并可列出当前注册的工具。
- 路由与执行:接收外部客户端发来的调用请求,进行工具查找、策略校验、会话分配、执行并返回结果。
- 会话管理:基于租户/客户端/工具三元组管理会话,具备超时回收与依赖注入能力,支持实时执行与回传结果。
- 策略与证书:提供授权、配额、速率限制、并发、凭证解析等策略组件的组合,统计与日志审计能力。
- 审计与日志:内置内存审计 Sink,支持在日志中记录调用与健康状态变化,便于审计与追踪。
- 传输适配器:内置两类传输适配器
- 标准输入输出(stdio):通过子进程运行 MCP 服务器,使用 MCP Go SDK 的命令传输执行调用。
- HTTP 传输:对接远端 MCP 服务器的流式接口,进行命令执行与结果解析。
- 集群能力(可选):支持 Kubernetes/DNSSD 等集群发现与远程远程配置,提供集群化部署时的路由与注册表单元。
- 配置驱动:通过 JSON 配置描述运行时设置、工具、租户、证书、以及集群参数等,便于与客户端的对接与管理。
- 安装与运行步骤
- 获取源代码:从仓库获取源码,确保依赖在 Go 模块环境下可用。
- 构建与运行
- 将网关配置成合适的运行时参数(如工具列表、超时、路由策略、租户配额等),然后编译并运行网关应用。
- 网关会启动内部的 ActorSystem,创建 GatewayManager 及其子系统,加载静态配置的工具并对外提供 MCP 客户端接入能力。
- 与 MCP 服务器对接
- 通过 stdio 传输启动 MCP 服务器(如 npx 面向模型上下文协议的服务器进程,例如 server-filesystem),网关将通过标准输入/输出与其通信实现调用。
- 通过 HTTP 传输也可以将 MCP 服务器置于远端 HTTP 服务端点,网关将通过网络实现调用与返回。
- 示例配置与使用
- 配置中包含服务器名称、工具定义、传输方式、命令及参数等信息;客户端只需要在调用网关提供的 API 时通过给定的 Invocation 结构体来发起请求,网关内部会完成路由、凭证解析、会话获取、执行与结果组装。
- 服务器配置(示例性说明,实际以你的环境为准)
- server_name: goakt-mcp-gateway
- runtime:
- sessionIdleTimeout: 300000
- requestTimeout: 30000
- startupTimeout: 10000
- tools:
- id: filesystem transport: stdio stdio: command: npx args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"] startupTimeout: 10000 idleTimeout: 300000 routing: sticky credentialPolicy: optional authorizationPolicy: tenant_allowlist state: enabled
- cluster: enabled: false
- credentials: providers: []
- tenants: [] 说明:
- 上述配置对应仓库中的 mcp 配置结构,JSON 配置用于 MCP 客户端对接时的启动参数描述。实际运行时,网关通过该配置对工具进行注册并启动相应的执行通道。
- 基本使用方法
- 启动网关
- 根据你的需求准备配置文件(JSON),包括工具、超时、租户配额等信息。
- 构建并运行网关程序,网关会自行建立运行时系统、注册工具并准备好路由入口。
- 调用工具
- 通过 MCP 客户端向网关发起调用 Invocation,包含 tenant、client、tool、方法、参数等信息。网关按配置进行路由、会话分配、工具执行并返回 ExecutionResult。
- 运行与监控
- 监控网关日志、审计 Sink 的输出,以及工具执行的结果,必要时调整工具配置的超时、路由策略等参数。
- 启动网关