McGravity

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 是否可以:

  1. 连接到 MCP 服务器(示例 echo server)
  2. 正确代理目标 MCP 服务器的功能
  3. 将来自客户端的请求传递到目标 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

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

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

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript