关于 Mcp Graphql Forge
MCP GraphQL Forge 将 GraphQL API 的 Schema 操作生成为 MCP 工具,供 AI 工具调用。它结合参数校验、字段选择生成与缓存,并支持 stdio 和 HTTP 传输。
主要功能
- 01从 Schema 自动生成 MCP 工具
- 02多层参数校验
- 03自动生成字段选择
- 04缓存 Schema 与字段选择
- 05支持 stdio 和 HTTP 传输
- 06可配置认证请求头
适用场景
- 01将 GraphQL API 提供给 AI 工具
- 02在开发中通过 HTTP 测试 GraphQL 操作
- 03使用缓存 Schema 启动服务
- 04调用需要认证请求头的 GraphQL API
MCP 相关
它作为 MCP 服务,将 GraphQL Schema 中的查询和变更操作生成为客户端可调用的工具,并支持 stdio 与 HTTP 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP GraphQL Forge
快速安装
其他安装方式
# Via Smithery (recommended)
npx @smithery/cli install @toolprint/mcp-graphql-forge --client claude
# Via npm
npm install -g @toolprint/mcp-graphql-forge
一个 MCP 服务,可让 AI 工具访问 GraphQL API,具体方式如下:
- 根据 GraphQL 架构内省自动生成 MCP 工具
- 验证参数并处理错误,确保 AI 交互可靠
- 支持 stdio 和 HTTP 传输,适用于开发和生产环境
- 缓存架构和字段选择,确保性能稳定
✨ 功能
- 工具生成:根据 GraphQL 架构内省创建 MCP 工具
- 参数验证:多层验证可防止 GraphQL 错误
- 双重传输:支持 stdio(AI 工具)和 HTTP(开发/测试)
- 架构管理:支持可选的预先内省和缓存
- 身份验证:为需要身份验证的端点灵活配置标头 [实验性]
🚀 入门
注意:Docker 运行时支持目前仍在开发中。对于生产部署,我们建议使用 Smithery 等平台上的 TypeScript 运行时。
使用 HTTP 模式快速开始(推荐用于开发)
-
启动服务:
# Start serving it with the Streamable HTTP transport GRAPHQL_ENDPOINT="https://your-api.com/graphql" npx -y @toolprint/mcp-graphql-forge --transport http --port 3001 -
使用 MCP Inspector 连接:
# In another terminal, launch the inspector npx @modelcontextprotocol/inspector -
使用身份验证:
# Using environment variables for configuration export GRAPHQL_ENDPOINT="https://api.github.com/graphql" export GRAPHQL_AUTH_HEADER="Bearer YOUR_TOKEN" npx @toolprint/mcp-graphql-forge --transport http --port 3001 # Or all in one line GRAPHQL_ENDPOINT="https://api.github.com/graphql" GRAPHQL_AUTH_HEADER="Bearer YOUR_TOKEN" npx @toolprint/mcp-graphql-forge --transport http --port 3001
直接集成 AI(Claude/Cursor)
在项目根目录中创建 mcp.json。这会以 stdio 模式运行。
{
"mcpServers": {
"mcp-graphql-forge": {
"command": "npx",
"args": [
"-y",
"@toolprint/mcp-graphql-forge"
],
"env": {
"GRAPHQL_ENDPOINT": "https://your-api.com/graphql",
"GRAPHQL_AUTH_HEADER": "Bearer YOUR_TOKEN"
}
}
}
}
架构管理
-
预生成架构:
# Generate schema without starting server GRAPHQL_ENDPOINT="https://your-api.com/graphql" mcp-graphql-forge introspect # Start server using pre-generated schema mcp-graphql-forge --no-introspection --transport http --port 3001 -
自定义架构位置:
# Generate schema in custom location SCHEMA_PATH="./schemas/my-api.json" mcp-graphql-forge introspect # Use custom schema location SCHEMA_PATH="./schemas/my-api.json" mcp-graphql-forge --no-introspection --transport http --port 3001 -
强制重新生成架构:
# Force regenerate schema even if it exists mcp-graphql-forge introspect --force # Regenerate and start server mcp-graphql-forge --force-introspection --transport http --port 3001
高级配置
# Multiple custom headers
export GRAPHQL_HEADER_X_API_KEY="your-api-key"
export GRAPHQL_HEADER_X_CLIENT_ID="your-client-id"
mcp-graphql-forge --transport http --port 3001
# Development mode with auto-reload on schema changes
mcp-graphql-forge --transport http --port 3001 --watch
🛠️ 工作原理
1. 架构内省
🗂️ Building field selection cache for all types...
📊 Generated field selections for 44 types
💾 Field selection cache contains 44 full selections and 5 minimal selections
Generated 63 tools from GraphQL schema:
- 30 query tools
- 33 mutation tools
2. 智能工具生成
对于如下 GraphQL 架构:
type Query {
user(id: ID!): User
articles(filters: ArticleFiltersInput, pagination: PaginationArg): [Article]
}
type Mutation {
createUser(input: CreateUserInput!): User
}
Fast MCP GraphQL 会自动生成:
- ✅
query_user- 验证必需的id参数 - ✅
query_articles- 支持可选筛选和分页 - ✅
mutation_createUser- 验证输入并完整选择字段
3. 智能字段选择
无需手动构造 GraphQL 查询:
# ❌ Error-prone manual approach
query {
articles {
# Missing required field selections!
author {
# Circular reference issues!
}
}
}
Fast MCP GraphQL 会自动生成最佳查询:
# ✅ Auto-generated with full field selections
query articlesOperation($filters: ArticleFiltersInput, $pagination: PaginationArg) {
articles(filters: $filters, pagination: $pagination) {
documentId
title
description
author {
documentId
name
email
articles_connection {
nodes { documentId } # Circular reference handled!
}
}
category {
documentId
name
articles { documentId } # Cached selection reused!
}
}
}
🏗️ 架构
缓存系统
- 类型级缓存:每种 GraphQL 类型的字段选择只计算一次,并重复使用
- 循环引用解析:智能检测,并使用最少字段回退方案
- 输出一致性:相同类型始终生成相同的字段选择
验证流程
- JSON Schema 验证:MCP 客户端会在执行前验证参数
- 服务端验证:防止在缺少必需参数时执行
- GraphQL 验证:在 GraphQL 层进行最终验证
传输支持
- Stdio 传输:用于 MCP 客户端集成(默认)
- HTTP 传输:符合 MCP 2025 Streamable HTTP 规范的 RESTful 接口
- 会话管理:自动处理 HTTP 传输的会话
📚 API 参考
CLI 选项
mcp-graphql-forge [options]
Options:
--transport <type> Transport type: stdio or http (default: stdio)
--port <number> Port for HTTP transport (default: 3000)
--no-introspection Skip schema introspection (use cached schema)
--version Show version number
--help Show help
环境变量
| 变量 | 描述 | 示例 |
|---|---|---|
GRAPHQL_ENDPOINT | GraphQL API 端点 | https://api.example.com/graphql |
GRAPHQL_AUTH_HEADER | 授权标头 | Bearer token123 |
GRAPHQL_HEADER_* | 自定义标头 | GRAPHQL_HEADER_X_API_KEY=key123 |
SCHEMA_PATH | Schema 缓存文件路径 | ./schema.json |
PORT | HTTP 服务端口 | 3001 |
生成的工具 Schema
每个生成的工具都遵循以下模式:
{
name: "query_user",
description: "Execute GraphQL query: user",
inputSchema: {
type: "object",
properties: {
id: { type: "string" }
},
required: ["id"] // Only truly required parameters
}
}
🧪 测试
全面的测试套件
- 40+ 个测试用例:覆盖所有功能和边缘情况
- 真实场景:针对实际 GraphQL Schema(Strapi、GitHub 等)进行测试
- 安全测试:原型污染防护和输入验证
- 性能测试:缓存效率和字段选择优化
# Run all tests
npm test
# Run specific test suites
npm test -- src/__tests__/field-selection-cache.test.ts
npm test -- src/__tests__/server-validation.test.ts
npm test -- src/__tests__/graphql-execution.test.ts
# Coverage report
npm run test:coverage
集成测试
# Test with real GraphQL endpoints
GRAPHQL_ENDPOINT="https://countries.trevorblades.com/" npm test
# Test caching performance
npm run test:performance
🛡️ 安全性
参数验证
- 必需参数检查:防止 GraphQL 变量错误
- 空值/未定义值检查:验证参数是否存在及其取值
- 原型污染防护:使用安全的属性检查方法
Schema 安全性
- 输入清理:所有 GraphQL 输入都会进行正确的类型检查和验证
- 循环引用防护:防止字段选择中出现无限递归
- 标头验证:安全处理用于身份验证的标头
🚀 性能
基准测试
- Schema 自省:典型 Schema 约需 10ms
- 工具生成:启用缓存后约需 5ms
- 字段选择:预先计算并缓存,可即时访问
- 内存用量:通过高效缓存将内存占用降至最低
优化功能
- 字段选择缓存:避免重复计算字段选择
- Schema 缓存:可选的 Schema 持久化,加快重启速度
- 最小化 GraphQL 查询:仅请求必要的字段
- 连接池:高效管理 HTTP 客户端
🤝 贡献
欢迎贡献!详情请参阅我们的贡献指南。
开发环境设置
# Clone the repository
git clone https://github.com/toolprint/mcp-graphql-forge.git
cd mcp-graphql-forge
# Install dependencies
npm install
# Run tests
npm test
# Start development
npm run dev
代码质量
- TypeScript:代码库完全采用类型定义
- ESLint:保持一致的代码格式
- Vitest:现代化测试框架
- 100% 测试覆盖率:全面的测试套件
📖 示例
实际用法
🔸 Strapi CMS 集成
# Connect to Strapi GraphQL API
export GRAPHQL_ENDPOINT="https://your-strapi.com/graphql"
export GRAPHQL_AUTH_HEADER="Bearer YOUR_STRAPI_TOKEN"
mcp-graphql-forge
# Generates tools like:
# - query_articles, query_users, query_categories
# - mutation_createArticle, mutation_updateUser
# - Full field selections with media, relations, and metadata
🔸 GitHub API 集成
# Connect to GitHub GraphQL API
export GRAPHQL_ENDPOINT="https://api.github.com/graphql"
export GRAPHQL_AUTH_HEADER="Bearer YOUR_GITHUB_TOKEN"
mcp-graphql-forge
# Generates tools like:
# - query_repository, query_user, query_organization
# - query_search (with intelligent result type handling)
# - mutation_createIssue, mutation_addComment
🔸 电子商务平台
# Connect to Shopify/WooCommerce GraphQL
export GRAPHQL_ENDPOINT="https://your-shop.myshopify.com/api/graphql"
export GRAPHQL_HEADER_X_SHOPIFY_ACCESS_TOKEN="YOUR_TOKEN"
mcp-graphql-forge
# Generates tools for:
# - Product management (query_products, mutation_productCreate)
# - Order processing (query_orders, mutation_orderUpdate)
# - Customer management with full relationship mapping
自定义 Schema 示例
// Example: Blog Platform Schema
type Query {
posts(published: Boolean, authorId: ID): [Post]
post(slug: String!): Post
authors: [Author]
}
type Mutation {
createPost(input: CreatePostInput!): Post
publishPost(id: ID!): Post
}
// Generated Tools:
// ✅ query_posts (published?: boolean, authorId?: string)
// ✅ query_post (slug: string) ← Required parameter enforced
// ✅ query_authors () ← No parameters
// ✅ mutation_createPost (input: CreatePostInput) ← Validated input
// ✅ mutation_publishPost (id: string) ← Required parameter enforced
📄 许可证
本项目采用 Apache License 2.0 许可,详情请参阅 LICENSE 文件。
🏢 关于 OneGrep, Inc.
MCP GraphQL Forge 由专注于构建开发者工具和 AI 基础设施的公司 OneGrep, Inc. 开发并维护。
由 OneGrep 团队倾心打造 ❤️
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。