McGravity
一个代理工具,用于将多个 MCP 服务器组合成一个统一的端点。 通过在多个 MCP 服务器之间进行负载均衡来扩展您的 AI 工具,类似于 Nginx 对 Web 服务器的工作方式。
tigranbs
README
McGravity
<div align="center"> <img src="./assets/thumbnail.png" alt="McGravity Thumbnail" width="400"> </div>
关于
McGravity 是一个将多个 MCP (机器通信协议) 服务器连接成一个统一服务的工具。它允许您重用相同的 MCP 服务器,并几乎无限地扩展底层 MCP 服务器连接。
当前版本作为一个基本的 CLI 工具运行,但 McGravity 将发展成为一个功能齐全的 MCP 服务器代理 - 就像 Nginx,但用于现代 Gen AI 工具和服务器。
为什么选择 McGravity?
没有 McGravity:
┌─────────┐ ┌─────────┐
│ 客户端 │────▶│MCP │
│ │ │服务器 1 │
└─────────┘ └─────────┘
│
│ ┌─────────┐
└──────────▶│MCP │
│服务器 2 │
└─────────┘
使用 McGravity:
┌─────────┐ ┌─────────┐ ┌─────────┐
│ 客户端 │────▶│McGravity│────▶│MCP │
│ │ │ │ │服务器 1 │
└─────────┘ └─────────┘ └─────────┘
│
│ ┌─────────┐
└─────────▶│MCP │
│服务器 2 │
└─────────┘
McGravity 解决了以下问题:
- 通过一个端点连接到多个 MCP 服务器
- 在 MCP 服务器之间平衡负载
- 为您的应用程序提供单一的访问点
安装
# 安装依赖
bun install
# 将项目构建成单个可执行文件
bun build src/index.ts --compile --outfile mcgravity
Docker
McGravity 在 Docker Hub 上可用:tigranbs/mcgravity。
docker pull tigranbs/mcgravity
# 基本用法
docker run -p 3001:3001 tigranbs/mcgravity http://mcp1.example.com http://mcp2.example.com
# 使用自定义主机和端口
docker run -p 4000:4000 tigranbs/mcgravity --host 0.0.0.0 --port 4000 http://mcp1.example.com
用法
基本命令:
./mcgravity <mcp-server-address1> <mcp-server-address2> ...
带选项:
./mcgravity --host localhost --port 3001 http://mcp1.example.com http://mcp2.example.com
使用配置文件:
./mcgravity --config config.yaml
选项
--host <host>
: 服务器绑定的主机 (默认: localhost)--port <port>
: 服务器绑定的端口 (默认: 3001)--config <path>
: 配置文件的路径 (默认: config.yaml)--mcp-version <version>
: MCP 服务器的版本 (默认: 1.0.0)--mcp-name <name>
: MCP 服务器的名称 (默认: mcgravity)--help
: 显示帮助信息
配置
McGravity 可以使用 YAML 文件进行配置。有关示例配置,请参见 config.example.yaml
:
name: mcgravity
version: 1.0.0
description: A simple MCP server
servers:
echo-server:
url: http://localhost:3000/sse
name: echo-server
version: 1.0.0
description: A simple echo server
tags:
- echo
您可以运行包含的 echo server 示例进行测试:
# 首先启动 echo server
bun examples/echo-server.ts
# 然后启动 McGravity 指向 echo server
./mcgravity --config config.yaml
示例
使用默认设置启动 McGravity:
./mcgravity http://mcp1.example.com http://mcp2.example.com
指定主机和端口:
./mcgravity --host 0.0.0.0 --port 4000 http://mcp1.example.com http://mcp2.example.com
运行测试
要运行所有测试:
bun test
仅运行集成测试:
bun run test:integration
集成测试
集成测试验证 McGravity 是否可以:
- 连接到 MCP 服务器(示例 echo server)
- 正确代理目标 MCP 服务器的功能
- 将来自客户端的请求传递到目标 MCP 服务器并返回响应
有关测试套件的更多详细信息,请参见 test README。
这些测试会在 push 和 PR 事件时自动在 GitHub Actions CI 中运行。
未来计划
McGravity 将扩展到包括:
- 用于监控的 Web 界面
- 高级负载均衡
- MCP 服务器健康检查
- 身份验证和访问控制
- 用于自定义集成的插件系统
开发
TypeScript 和代码风格
本项目使用:
- 带有 Bun 运行时的 TypeScript
- ESLint 用于代码检查,带有特定于 TypeScript 的规则
- Prettier 用于代码格式化
该配置针对 Bun 进行了优化,并具有适用于运行时环境的适当 TypeScript 设置。
运行以下命令:
# 使用 Prettier 格式化代码
bun run format
# 检查代码是否已正确格式化
bun run format:check
# 使用 ESLint 检查代码
bun run lint
# 修复可自动修复的 linting 问题
bun run lint:fix
VS Code 配置为在保存时格式化代码,并在安装推荐的扩展时提供 linting 信息。
贡献
欢迎贡献! 随意打开 issue 或提交 pull request。
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。