GraphQL Schema Embedder MCP Server
Servidor MCP de incrustación de esquemas GraphQL
Servidor MCP en Python para LLMs que indexa un esquema GraphQL, almacena incrustaciones por type->field a través de un punto final de incrustaciones, y permite una búsqueda rápida además de la ejecución de run_query una vez identificados los tipos relevantes para obtener datos de su punto final GraphQL.
Arquitectura
Esquema GraphQL: proporcione un archivo de esquema (SDL) para ejercitar el análisis y la indexación.
Indexador:
schema_indexer.pyconstruye un índice de navegación de nodos de campo GraphQL, incluyendo metadatos de campo, alias de búsqueda difusa y coordenadas de la raíz de consulta (Query-root), luego incrusta el texto de búsqueda generado y lo persiste endata/metadata.json+data/vectors.npz.Servidor:
server.pyexpone las herramientas MCPlist_typesyrun_query. El servidor asegura que el índice del esquema exista al iniciarse; solo llama al punto final de incrustaciones cuando se reindexa o se incrusta una nueva consulta.Persistencia:
data/está en.gitignorepara que pueda regenerar localmente sin contaminar el repositorio.
Related MCP server: GraphQL Schema Explorer
Configuración
Establezca las variables de entorno. Puede comenzar desde .env.example.
Configuración del entorno:
GRAPHQL_EMBED_API_KEY(oOPENAI_API_KEY)GRAPHQL_EMBEDDINGS_URL(URL completa de incrustaciones)GRAPHQL_EMBED_MODELGRAPHQL_EMBED_API_KEY_HEADER/GRAPHQL_EMBED_API_KEY_PREFIXGRAPHQL_EMBED_HEADERS(cadena de objeto JSON para encabezados adicionales) Autenticación del punto final (cuando se usaGRAPHQL_ENDPOINT_URL):GRAPHQL_ENDPOINT_HEADERS(cadena de objeto JSON, fusionada con cualquier bandera--header)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python3 src/server.pyEjecutar el servidor 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 /myappPrueba de punto final local (servidor de ejemplo en el repositorio):
# Terminal 1
python3 examples/graphql_test_server/server.py
# Terminal 2
python3 src/server.py --transport sse --endpoint http://127.0.0.1:4000/graphqlHerramientas:
list_types(query, limit=5)– búsqueda por similitud de incrustaciones sobre nodos de campo GraphQL. Los resultados se devuelven por puntuación de similitud de coseno e incluyencoordinates(matriz de pasos de ruta desdeQuery), además dequerypara campos deQueryyselectpara campos de objeto anidados.run_query(query)– si se establece--endpoint, redirige la consulta al punto final; de lo contrario, valida/ejecuta contra el esquema local (sin resolutores; principalmente para validación/verificación de forma, los datos se resuelven como nulos). Tanto la indexación como la consulta utilizan el mismo modelo de incrustación (text-embedding-3-smallpor defecto, se puede anular mediante configuración/entorno o--model).
Clasificación (list_types):
Los resultados se clasifican puramente por similitud de coseno de incrustación sobre el texto de búsqueda del nodo de campo indexado.
Ejemplo de salida de 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 }"
}
]Notas:
python3 src/server.pyutiliza el transportessepor defecto; pase--transport streamable-httpsi desea HTTP en su lugar.También puede establecer variables de entorno con el prefijo
FASTMCP_(por ejemplo,FASTMCP_HOST,FASTMCP_PORT,FASTMCP_LOG_LEVEL) para anular los valores predeterminados.El servidor asegura que el índice del esquema se construya al iniciarse; si se calculan las incrustaciones, se imprime una barra de progreso simple. Establezca
GRAPHQL_EMBED_BATCH_SIZEpara ajustar el tamaño del lote.El servidor expone
instructionsde MCP (anúlelas conMCP_INSTRUCTIONS) que describen el servidor como una capa de abstracción y le dicen al LLM que uselist_typesy luegorun_querycon llamadas mínimas a herramientas.
Prueba rápida con el Inspector MCP
Requiere npm/npx en el PATH.
Conectar a un servidor SSE ya en ejecución
En una terminal (inicie el servidor):
python3 src/server.py --transport sse --port 8000En otra terminal (inicie el Inspector y apúntelo a /sse):
npx @modelcontextprotocol/inspector --transport sse --server-url http://127.0.0.1:8000/sseConfigurar en Claude Desktop / CLI
Si está ejecutando este servidor localmente sobre SSE (predeterminado), apunte Claude a la URL /sse.
claude mcp add --transport sse graphql-mcp http://127.0.0.1:8000/sseTambién puede configurar mediante JSON (por ejemplo, archivo de configuración):
{
"mcpServers": {
"graphql-mcp": {
"type": "sse",
"url": "http://127.0.0.1:8000/sse"
}
}
}Si expone este servidor detrás de una autenticación, pase los encabezados:
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