GraphQL Schema Embedder MCP Server
GraphQL schema embedder MCP 服务器
用于 LLM 的 Python MCP 服务器,它索引 GraphQL 模式,通过嵌入端点存储每个 type->field 的嵌入,并实现快速查找,一旦确定相关类型,即可执行 run_query 从您的 GraphQL 端点获取数据。
架构
GraphQL 模式:提供一个模式文件 (SDL) 以进行解析和索引。
索引器:
schema_indexer.py构建 GraphQL 字段节点的导航索引,包括字段元数据、模糊搜索别名和查询根坐标,然后对生成的搜索文本进行嵌入并持久化到data/metadata.json+data/vectors.npz。服务器:
server.py公开 MCP 工具list_types和run_query。服务器确保在启动时存在模式索引;它仅在重新索引或嵌入新查询时调用嵌入端点。持久化:
data/已被.gitignore忽略,因此您可以在本地重新生成而不会污染仓库。
Related MCP server: GraphQL Schema Explorer
设置
设置环境变量。您可以从 .env.example 开始。
环境配置:
GRAPHQL_EMBED_API_KEY(或OPENAI_API_KEY)GRAPHQL_EMBEDDINGS_URL(完整的嵌入 URL)GRAPHQL_EMBED_MODELGRAPHQL_EMBED_API_KEY_HEADER/GRAPHQL_EMBED_API_KEY_PREFIXGRAPHQL_EMBED_HEADERS(用于额外标头的 JSON 对象字符串) 端点身份验证 (使用GRAPHQL_ENDPOINT_URL时):GRAPHQL_ENDPOINT_HEADERS(JSON 对象字符串,与任何--header标志合并)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python3 src/server.py运行 MCP 服务器
python3 src/server.py # SSE on 127.0.0.1:8000/sse by default
python3 src/server.py --transport sse # explicit SSE
python3 src/server.py --transport streamable-http # Streamable HTTP on 127.0.0.1:8000/mcp
# Or: point at a live GraphQL endpoint (requires introspection enabled)
python3 src/server.py --endpoint https://api.example.com/graphql
# Endpoint auth headers (repeat --header)
python3 src/src/server.py --endpoint https://api.example.com/graphql --header "Authorization: Bearer $TOKEN"
# Options: --host 0.0.0.0 --port 9000 --log-level DEBUG --mount-path /myapp本地端点测试 (仓库内示例服务器):
# Terminal 1
python3 examples/graphql_test_server/server.py
# Terminal 2
python3 src/server.py --transport sse --endpoint http://127.0.0.1:4000/graphql工具:
list_types(query, limit=5)– 对 GraphQL 字段节点进行嵌入相似度搜索。结果按余弦相似度得分返回,并包含coordinates(从Query开始的路径步骤数组),以及用于Query字段的query和用于嵌套对象字段的select。run_query(query)– 如果设置了--endpoint,则将查询代理到该端点;否则针对本地模式进行验证/运行(无解析器;主要用于验证/形状检查,数据解析为 null)。 索引和查询都使用相同的嵌入模型(默认使用text-embedding-3-small,可通过配置/环境变量或--model覆盖)。
排名 (list_types):
结果完全根据索引字段节点搜索文本的嵌入余弦相似度进行排名。
示例 list_types 输出:
[
{
"field": "users",
"summary": "Query.users(limit: Int) -> [User!]!",
"coordinates": ["Query.users(limit: <Int>)"],
"query": "query { users(limit: <Int>) { id name orders { id total status } } }"
},
{
"type": "Order",
"field": "total",
"summary": "Order.total -> Float!",
"coordinates": ["Query.user(id: <ID!>)", "User.orders", "Order.total"]
},
{
"type": "User",
"field": "orders",
"summary": "User.orders -> [Order!]!",
"coordinates": ["Query.user(id: <ID!>)", "User.orders"],
"select": "orders { id total status }"
}
]注意:
python3 src/server.py默认为sse传输;如果您需要 HTTP,请传递--transport streamable-http。您还可以设置以
FASTMCP_为前缀的环境变量(例如FASTMCP_HOST、FASTMCP_PORT、FASTMCP_LOG_LEVEL)来覆盖默认值。服务器确保在启动时构建模式索引;如果计算了嵌入,则会打印一个简单的进度条。设置
GRAPHQL_EMBED_BATCH_SIZE以调整批处理大小。服务器公开 MCP
instructions(使用MCP_INSTRUCTIONS覆盖),将服务器描述为抽象层,并告诉 LLM 使用list_types然后使用最少的工具调用执行run_query。
使用 MCP Inspector 进行快速测试
需要在 PATH 中安装 npm/npx。
连接到已运行的 SSE 服务器
在一个终端中(启动服务器):
python3 src/server.py --transport sse --port 8000在另一个终端中(启动 Inspector 并将其指向 /sse):
npx @modelcontextprotocol/inspector --transport sse --server-url http://127.0.0.1:8000/sse在 Claude Desktop / CLI 中配置
如果您通过 SSE(默认)在本地运行此服务器,请将 Claude 指向 /sse URL。
claude mcp add --transport sse graphql-mcp http://127.0.0.1:8000/sse您也可以通过 JSON 进行配置(例如配置文件):
{
"mcpServers": {
"graphql-mcp": {
"type": "sse",
"url": "http://127.0.0.1:8000/sse"
}
}
}如果您将此服务器暴露在身份验证之后,请传递标头:
claude mcp add --transport sse private-graphql http://127.0.0.1:8000/sse \
--header "Authorization: Bearer your-token-here"This server cannot be deployed
Maintenance
Related MCP Connectors
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Ingest, manage, and retrieve documents for RAG-powered AI applications
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Versioned documentation registry and semantic search for AI tools and coding assistants.
Related MCP Servers
- AlicenseAqualityFmaintenancePowers AI agents with indexed blockchain data from The Graph, enabling them to fetch subgraph schemas and execute GraphQL queries against blockchain data.29MIT
- FlicenseNot gradedqualityDmaintenanceProvides intelligent introspection and exploration of any GraphQL API schema with fuzzy search, type discovery, and field-level information to help understand and navigate GraphQL APIs.-
- AlicenseBqualityDmaintenanceEnables AI assistants to execute GraphQL queries and retrieve schema information from any GraphQL endpoint.215 npm8MIT
- AlicenseAqualityDmaintenanceProvides comprehensive GraphQL introspection, filtering, and query/mutation execution with safety controls. Enables AI agents to explore and interact with GraphQL APIs through natural language.79 npm1MIT