Token导航 LogoToken导航TokenDH.com
Graphql MCP Python logo
AI代理stdio官方级别未说明来源级核验

Graphql MCP Python

MCP Server

一个Model Context Protocol (MCP)服务器,使LLM能够与GraphQL API交互,提供内省、查询和变更数据的功能。

工具数

0

提示词数

0

GitHub Stars

2

资源数

0
PythonClaude数据分析Claude DesktopClaudeVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Wisemeninc

提供方

Wisemeninc

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv venv

详细介绍

GraphQL MCP服务器

一个模型上下文协议(MCP)服务器,使LLM能够与GraphQL API交互。此服务器通过GraphQL端点提供自省、查询和修改数据的工具。

当前版本: 1.5.0

特性

核心GraphQL工具

  • GraphQL反思:发现模式、类型、查询、突变和字段
  • 查询执行:使用变量执行GraphQL查询
  • 突变支持:通过GraphQL突变执行数据修改
  • 模式检索:获取SDL格式的人类可读模式
  • 查询透明度:每个响应都包括所使用的查询/变异和结果

实用工具

  • 纪元转换器:使用时区支持将Unix时间戳转换为人类可读的日期/时间
  • NTP时间:通过时钟偏移计算从NTP服务器获取准确的时间
  • IP信息:获取IP地理位置、时区和网络详细信息(通过IP-api.com,免费)
  • 网页搜索:使用DuckDuckGo搜索网页(免费,无需API密钥)

基础设施

  • 多个传输:支持stdio和HTTP/SSE传输
  • Docker支持:使用Docker和Docker Compose在容器中运行
  • Kubernetes就绪:完整的K8s包含HPA、网络策略等
  • OAuth 2.1身份验证:GitHub OAuth,基于用户/组织的访问控制
  • API令牌认证:简单的基于令牌的身份验证选项
  • MCP系统提示:内置GraphQL帮助提示
  • 查询日志记录:查询和身份验证事件的审核日志记录

Docker快速入门

# Clone and enter directory
cd /github/Graphql_MCP

# Set your GraphQL endpoint
export GRAPHQL_ENDPOINT="https://rickandmortyapi.com/graphql"

# Build and run
docker-compose up -d

# Test it
curl http://localhost:8000/health
curl http://localhost:8000/tools

医生_SSE_GUIDE.md 获取完整的Docker和SSE文档。

KUBERNETES_GUIDE.md Kubernetes部署说明。

看 用于GitHub OAuth身份验证设置。

安装(无Docker)

  1. 克隆存储库:
cd /github/Graphql_MCP
  1. 安装依赖项:
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
  1. 配置环境变量:
cp .env.example .env
# Edit .env with your GraphQL endpoint and credentials

配置

创建一个 .env 包含以下变量的文件:

# Required: Your GraphQL endpoint
GRAPHQL_ENDPOINT=https://api.example.com/graphql

# Optional: Authentication token for GraphQL API
GRAPHQL_AUTH_TOKEN=your_bearer_token_here

# Optional: Custom headers as JSON for GraphQL API
GRAPHQL_HEADERS={"X-Custom-Header": "value"}

# Optional: HTTP server configuration (for HTTP/SSE transport)
MCP_HOST=0.0.0.0
MCP_PORT=8000

# Optional: API Token Authentication (simple token-based auth)
API_TOKENS=token1,token2,token3

# Optional: GitHub OAuth (for user/org-based access control)
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
GITHUB_ALLOWED_ORGS=your-org-name
GITHUB_ALLOWED_USERS=username1,username2

# Optional: Logging configuration
LOG_LEVEL=INFO
STRUCTURED_LOGGING=false

# Optional: Redis for session storage (for distributed deployments)
REDIS_URL=redis://localhost:6379

用法

选项1:克劳德桌面集成(推荐)

使用此MCP服务器的最简单方法是使用Claude Desktop。将以下配置添加到您的Claude Desktop设置中:

步骤1:找到您的Claude Desktop配置文件

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

步骤2:添加MCP服务器配置

编辑配置文件并添加GraphQL MCP服务器:

{
  "mcpServers": {
    "graphql": {
      "command": "/path/to/Graphql_MCP/venv/bin/python",
      "args": ["/path/to/Graphql_MCP/server.py"],
      "env": {
        "GRAPHQL_ENDPOINT": "https://your-graphql-api.com/graphql",
        "GRAPHQL_AUTH_TOKEN": "your_optional_bearer_token"
      }
    }
  }
}

步骤3:示例配置

公共API(Rick和Morty):

{
  "mcpServers": {
    "graphql": {
      "command": "/github/Graphql_MCP/venv/bin/python",
      "args": ["/github/Graphql_MCP/server.py"],
      "env": {
        "GRAPHQL_ENDPOINT": "https://rickandmortyapi.com/graphql"
      }
    }
  }
}

GitHub GraphQL API:

{
  "mcpServers": {
    "github-graphql": {
      "command": "/github/Graphql_MCP/venv/bin/python",
      "args": ["/github/Graphql_MCP/server.py"],
      "env": {
        "GRAPHQL_ENDPOINT": "https://api.github.com/graphql",
        "GRAPHQL_AUTH_TOKEN": "ghp_your_github_token"
      }
    }
  }
}

Hasura/带标题的自定义API:

{
  "mcpServers": {
    "hasura": {
      "command": "/github/Graphql_MCP/venv/bin/python",
      "args": ["/github/Graphql_MCP/server.py"],
      "env": {
        "GRAPHQL_ENDPOINT": "https://your-hasura-instance.hasura.app/v1/graphql",
        "GRAPHQL_HEADERS": "{\"x-hasura-admin-secret\": \"your-secret\"}"
      }
    }
  }
}

步骤4:重新启动克劳德桌面

保存配置文件后,完全重新启动Claude Desktop以加载新的MCP服务器。

步骤5:验证连接

在Claude Desktop中,您现在应该可以看到可用的GraphQL工具。试着问克劳德:

  • “有哪些GraphQL查询可用?”
  • “显示GraphQL模式”
  • “查询API中的所有字符”

选项2:标准传输(适用于其他MCP客户端)

使用stdio传输运行服务器:

python server.py

此模式适用于与通过stdin/stdout通信的MCP客户端直接集成。

选项3:HTTP/SSE传输(用于基于web的客户端和VS代码)

使用HTTP和服务器发送事件运行服务器:

python server_mcp_http_stateful.py

服务器将于启动 http://0.0.0.0:8000 (可通过环境变量配置)。

配置VS代码以通过HTTP使用MCP

  1. 启动MCP服务器 (见上文或使用Docker Compose)
  1. 配置VS代码设置 -打开设置JSON(Cmd/Ctrl + , → 打开设置JSON图标)并添加:
{
  "mcp": {
    "servers": {
      "graphql": {
        "type": "http",
        "url": "http://localhost:8000"
      }
    }
  }
}
  1. 重新启动VS代码 加载MCP服务器
  1. 验证连接 在VS Code终端中:
curl http://localhost:8000/health

对于远程服务器,请使用 http://your-server-ip:8000。有关详细的VS代码配置、网络设置和故障排除,请参阅 VSCODE_集成.md.

HTTP端点

  • GET /health -健康检查
  • GET /tools -列出可用工具
  • POST /execute -执行工具
  • GET /sse -服务器发送的事件流

HTTP请求示例

# List available tools
curl http://localhost:8000/tools

# Execute introspection
curl -X POST http://localhost:8000/execute \
  -H "Content-Type: application/json" \
  -d '{"tool": "graphql_introspection", "arguments": {}}'

# Execute a query
curl -X POST http://localhost:8000/execute \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "graphql_query",
    "arguments": {
      "query": "{ users { id name email } }"
    }
  }'

# Execute a query with variables
curl -X POST http://localhost:8000/execute \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "graphql_query",
    "arguments": {
      "query": "query GetUser($id: ID!) { user(id: $id) { id name email } }",
      "variables": {"id": "123"}
    }
  }'

可用工具

1.graphql_观察

执行GraphQL自检以发现完整的模式。

参数:

退货:

{
  "query_used": "GraphQL Introspection Query",
  "result": { /* Full introspection result */ }
}

2.graphql_get_schema

获取SDL格式的人类可读GraphQL架构。

参数:

退货:

{
  "query_used": "GraphQL Introspection Query (converted to SDL)",
  "result": {
    "schema": "type Query { ... }"
  }
}

3.graphql_query

执行GraphQL查询。

参数:

  • query (string,必填):要执行的GraphQL查询
  • variables (object,可选):查询的变量

退货:

{
  "query_used": "{ users { id name } }",
  "variables": null,
  "result": { /* Query result */ }
}

4.graphql_mutation

执行GraphQL变异。

参数:

  • mutation (string,必填):要执行的GraphQL变异
  • variables (object,可选):突变变量

退货:

{
  "mutation_used": "mutation { createUser(input: {...}) { id } }",
  "variables": {...},
  "result": { /* Mutation result */ }
}

5.划时代可读

将Unix纪元时间戳转换为具有时区支持的人类可读日期/时间格式。

参数:

  • epoch (数字,必填):Unix纪元时间戳(自1970年1月1日以来的秒数)
  • format (string,可选):strftime格式字符串(默认值: '%Y-%m-%d %H:%M:%S UTC')
  • timezone (字符串,可选):时区名称(默认值: 'UTC').示例: 'US/Eastern', 'Europe/London', 'Asia/Tokyo'

退货:

{
  "epoch": 1703894400,
  "readable": "2023-12-30 00:00:00 UTC",
  "format": "%Y-%m-%d %H:%M:%S UTC",
  "timezone": "UTC"
}

6.ntp_te

通过可选的时钟偏移计算从NTP(网络时间协议)服务器获取准确的时间。

参数:

  • server (字符串,可选):要查询的NTP服务器(默认值: 'dk.pool.ntp.org').示例: 'time.google.com', 'pool.ntp.org'
  • include_offset (布尔值,可选):包括本地时钟偏移计算(默认值: true)

退货:

{
  "ntp_time": "2025-12-30 12:34:56.789 UTC",
  "server": "dk.pool.ntp.org",
  "local_time": "2025-12-30 12:34:56.123 UTC",
  "offset_seconds": 0.666
}

7.ip_info

使用IP-api.com获取IP信息,包括时区、位置和网络详细信息(免费,不需要api密钥)。速率限制:45个请求/分钟。

参数:

  • ip (字符串,可选):要查找的IP地址(例如。, '8.8.8.8').如果未提供,则使用MCP客户端的IP地址。

退货:

{
  "ip": "8.8.8.8",
  "country": "United States",
  "city": "Mountain View",
  "timezone": "America/Los_Angeles",
  "local_time": "2025-12-30 04:34:56",
  "isp": "Google LLC",
  "lat": 37.386,
  "lon": -122.0838
}

8.网络搜索

使用DuckDuckGo(免费,无需API密钥)搜索网页。返回包含标题、URL和片段的搜索结果。

参数:

  • query (string,必填):搜索查询字符串
  • max_results (整数,可选):返回的最大结果数(默认值:10,最大值:25)

退货:

{
  "status": "success",
  "query": "graphql best practices",
  "results_count": 10,
  "results": [
    {
      "position": 1,
      "title": "GraphQL Best Practices",
      "url": "https://example.com/graphql-best-practices",
      "snippet": "Learn the best practices for designing GraphQL APIs..."
    }
  ]
}

示例工作流

发现模式

  1. 使用 graphql_introspection 获取完整的模式结构
  2. 或使用 graphql_get_schema 为了获得更易读的SDL格式

查询数据

  1. 首先,反思以了解可用的查询
  2. 使用以下命令执行查询 graphql_query 使用适当的字段
  3. 使用变量进行动态查询

变异数据

  1. 通过内省发现可用的突变
  2. 使用以下方法执行突变 graphql_mutation
  3. 始终检查返回的查询/变异以进行调试

时间和位置实用程序

  1. 使用 epoch_to_readable 将Unix时间戳转换为人类可读格式
  2. 使用 ntp_time 获取准确的网络时间并检查时钟同步
  3. 使用 ip_info 查找IP地址的地理位置和时区信息

网络研究

  1. 使用 web_search 查找文档、教程或最新信息
  2. 结合GraphQL查询,用外部信息丰富数据

MCP系统提示

服务器提供内置系统提示,以实现一致的LLM行为:

  • graphql助手:GraphQL API交互帮助的系统提示
  • graphql资源管理器:用于探索和发现GraphQL模式的系统提示

安全考虑

  • 将敏感令牌存储在 .env 文件(从不提交版本控制)
  • 在生产环境中为GraphQL端点使用HTTPS
  • 配置适当的身份验证标头
  • 在生产环境中执行查询之前,对其进行审查和清理
  • 为生产部署启用OAuth 2.1或API令牌身份验证
  • 使用结构化日志记录(STRUCTURED_LOGGING=true)用于SIEM集成
  • 审查 logs/queries.loglogs/logons.log 用于审计跟踪
  • 默认情况下启用速率限制以防止滥用

故障排除

连接错误

  • 验证 GRAPHQL_ENDPOINT 正确且可访问
  • 如果需要,请检查身份验证令牌
  • 确保与GraphQL服务器的网络连接

查询错误

  • 回顾 query_used 调试响应中的字段
  • 根据架构验证查询语法
  • 检查变量类型是否符合架构要求

发展

运行测试

# Add your test commands here
pytest

贡献

  1. 克隆该仓库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

许可证

MIT许可证

脚本和实用程序

设置、测试和示例的帮助脚本在 脚本/ 目录:

scripts/README.md 了解详细的使用说明。

文档

有关综合文档,请参阅 docs/ 目录:

支持

有关问题和疑问,请在GitHub上打开问题。

目录标签

目录标签

PythonClaude数据分析GraphQL工具本地部署API交互LLM集成数据查询数据变更

支持客户端

Claude DesktopClaudeVS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP