GraphQL MCP 服务器

一个轻量级的实验性 Rust 服务器,用于将 GraphQL 数据 API 连接到 LLMs,适用于快速原型设计、实验和学习。

  • by ThoreKoritzius
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 ThoreKoritzius/graphql-mcp

使用说明

GraphQL MCP服务器

一个轻量级的、实验性的Rust服务器,可以连接您的 GraphQL数据API 向 LLM.
非常适合 快速原型制作, 实验以及学习。

该项目提供:

  • 三种集成方法:
    • A1: 定制工程查询作为工具
    • A2: LLM上下文中提供的完整架构 (最适合较小的模式)
    • A3: 代理工具发现和查询执行
  • A. 基准测试环境 测量 令牌使用、工具调用、延迟,以及 准确度

请参阅以下相关章节 基准测试 和 最佳实践.

将此MCP服务器用作 抽象层 API端点和LLM之间:

概述

该项目提供了一个用Rust实现的GraphQL MCP服务器,以及用于本地开发的测试服务器:

  • 高性能 穿过铁锈。
  • 模块化:使用不同的探索策略轻松连接到自定义GraphQL端点。
  • 灵活的:从中选择 发现 或 完整方案 运行时的探索。
  • 非常适合实验和学习:观察实时工具调用、响应和服务器行为。

服务

  • graphql-mcp:主GraphQL MCP服务器。通过Docker或Cargo运行。将调用转发到指定的GraphQL端点。
  • 测试graphql服务器:用于测试MCP集成的模拟GraphQL端点。
  • 测试llm服务器:用于端到端原型设计和本地开发的模拟LLM服务器。

先决条件


设置和入门

1.克隆存储库

git clone https://github.com/ThoreKoritzius/graphql-mcp.git
cd graphql-mcp

2.设置环境

创建一个 .env 根目录中的文件,其中包含:

OPENAI_API_KEY=your_openai_api_key

3.带着货物跑步

运行服务器,指定GraphQL端点和探索策略:

# Discovery strategy (default)
cargo run -- --endpoint http://127.0.0.1:3000 --strategy discovery

# Fullschema strategy
cargo run -- --endpoint http://127.0.0.1:3000 --strategy fullschema

服务器将在以下位置可用: http://localhost:5001

注: 策略标志控制服务器是否使用轻量级 发现 探索者(逐场内省)或 完整方案 explorer(一次获取整个模式)。

4.(可选,轻松完整设置)或测试完整设置-使用Docker Compose运行

通过以下方式启动所有服务:

docker-compose up --build

当所有服务都在运行时,请访问 http://localhost:3000/ 用于具有实时工具调用和答案的演示聊天UI。

通过docker compose环境变量控制您的ednpoint和策略

services:
  graphql-mcp:
    environment:
      - RUST_LOG=debug
      - ENDPOINT=http://test-graphql-server:8000 # or your desired GraphQL endpoint
      - STRATEGY=discovery # or 'fullschema'

用法

  • 这 主服务器 (graphql-mcp)监听端口 5001 默认情况下。
  • 要连接您自己的LLM服务(例如,Claude、OpenAI等),请配置您的MCP客户端:
{
  "mcpServers": {
    "graphql_mcp": {
      "url": "http://graphql-mcp-server:5001/sse"
    }
  }
}
  • 服务器注册的工具会自动为所选策略公开:
    • 发现:逐字段检查、SDL代码片段和查询执行。
    • 完整方案:完成模式自检和查询执行。

配置

  • 使用以下命令设置GraphQL端点 --endpoint http://your-endpoint
  • 选择勘探策略 --strategy discovery|fullschema
  • 在中设置OpenAI API密钥 .env
  • 外露端口:
    • 5001 (GraphQL MCP服务器)
    • 3000 (演示UI)

检查器集成(可选)

要实时反思和调试MCP流量,请使用 MCP检查员:

npx @modelcontextprotocol/inspector http://localhost:5001/sse
  • 选择运输类型: SSE
  • 这使得MCP流量的实时自检和可视化成为可能。

工具选择蓝图

A1自定义工具

  • 为常用或复杂的查询提供自定义工具
  • 提供清晰的工具描述。

A2完整架构

  • 在上下文中加载完整架构
  • 应仅用于小模式(由于上下文大小限制和随着上下文增加而降低的准确性)
  • 确保使用键值LLM缓存API来降低输入令牌成本

A3机构发现

  • 通过丰富的上下文改进代理模式发现
  • 使用模式的类型注释和文档。
  • 包括工作查询的示例。

基准测试

三种策略的基准脚本位于 bench 文件夹。要运行基准测试,只需使用Docker Compose启动所需的服务:

docker compose up

然后运行 bench.py 脚本,它运行 dataset.csv 通过测试客户端并捕获结果和图表。

配置示例:

对于 main 和 control 服务,您可以配置以下环境变量:

services:
  graphql-mcp:
    environment:
      - RUST_LOG=debug
      - ENDPOINT=http://test-graphql-server:8000 # or your desired GraphQL endpoint
      - STRATEGY=discovery # or 'fullschema'

我们使用这三种策略对服务器进行了基准测试 SpaceDevs示例架构 以及我们的基准数据集。

结果: