GraphQL Schema Embedder MCP Server
GraphQL Schema Embedder MCP-Server
Python MCP-Server für LLMs, der ein GraphQL-Schema indiziert, Embeddings pro type->field über einen Embeddings-Endpunkt speichert und schnelles Nachschlagen sowie die Ausführung von run_query ermöglicht, sobald relevante Typen identifiziert wurden, um Daten von Ihrem GraphQL-Endpunkt abzurufen.
Architektur
GraphQL-Schema: Stellen Sie eine Schema-Datei (SDL) bereit, um das Parsen und Indizieren zu testen.
Indexer:
schema_indexer.pyerstellt einen Navigationsindex von GraphQL-Feldknoten, einschließlich Feld-Metadaten, Fuzzy-Search-Aliasen und Query-Root-Koordinaten, bettet dann den generierten Suchtext ein und speichert ihn indata/metadata.json+data/vectors.npz.Server:
server.pystellt die MCP-Toolslist_typesundrun_querybereit. Der Server stellt beim Start sicher, dass der Schema-Index existiert; er ruft den Embeddings-Endpunkt nur bei einer Neuindizierung oder beim Einbetten einer neuen Abfrage auf.Persistenz:
data/ist in.gitignoreenthalten, sodass Sie lokal neu generieren können, ohne das Repo zu verschmutzen.
Related MCP server: GraphQL Schema Explorer
Einrichtung
Setzen Sie die Umgebungsvariablen. Sie können mit .env.example beginnen.
Umgebungskonfiguration:
GRAPHQL_EMBED_API_KEY(oderOPENAI_API_KEY)GRAPHQL_EMBEDDINGS_URL(vollständige Embeddings-URL)GRAPHQL_EMBED_MODELGRAPHQL_EMBED_API_KEY_HEADER/GRAPHQL_EMBED_API_KEY_PREFIXGRAPHQL_EMBED_HEADERS(JSON-Objekt-String für zusätzliche Header) Endpunkt-Authentifizierung (bei Verwendung vonGRAPHQL_ENDPOINT_URL):GRAPHQL_ENDPOINT_HEADERS(JSON-Objekt-String, zusammengeführt mit allen--header-Flags)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python3 src/server.pyDen MCP-Server ausführen
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 /myappLokaler Endpunkt-Test (Beispiel-Server im Repo):
# Terminal 1
python3 examples/graphql_test_server/server.py
# Terminal 2
python3 src/server.py --transport sse --endpoint http://127.0.0.1:4000/graphqlTools:
list_types(query, limit=5)– Ähnlichkeitssuche mittels Embeddings über GraphQL-Feldknoten. Die Ergebnisse werden nach Kosinus-Ähnlichkeits-Score zurückgegeben und enthaltencoordinates(Array von Pfadschritten abQuery) sowiequeryfürQuery-Felder undselectfür verschachtelte Objektfelder.run_query(query)– Wenn--endpointgesetzt ist, wird die Abfrage an den Endpunkt weitergeleitet; andernfalls wird sie gegen das lokale Schema validiert/ausgeführt (keine Resolver; primär zur Validierung/Formprüfung, Daten werden als null aufgelöst). Sowohl die Indizierung als auch die Abfrage verwenden dasselbe Embedding-Modell (standardmäßigtext-embedding-3-small, überschreibbar über Konfiguration/Umgebung oder--model).
Ranking (list_types):
Die Ergebnisse werden rein nach der Kosinus-Ähnlichkeit der Embeddings über den indizierten Suchtext der Feldknoten gerankt.
Beispiel für list_types-Ausgabe:
[
{
"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 }"
}
]Anmerkungen:
python3 src/server.pyverwendet standardmäßig densse-Transport; übergeben Sie--transport streamable-http, wenn Sie stattdessen HTTP wünschen.Sie können auch Umgebungsvariablen mit dem Präfix
FASTMCP_setzen (z. B.FASTMCP_HOST,FASTMCP_PORT,FASTMCP_LOG_LEVEL), um die Standardwerte zu überschreiben.Der Server stellt sicher, dass der Schema-Index beim Start erstellt wird; wenn Embeddings berechnet werden, wird ein einfacher Fortschrittsbalken ausgegeben. Setzen Sie
GRAPHQL_EMBED_BATCH_SIZE, um die Batch-Größe anzupassen.Der Server stellt MCP-
instructionsbereit (überschreibbar mitMCP_INSTRUCTIONS), die den Server als Abstraktionsschicht beschreiben und das LLM anweisen,list_typesund dannrun_querymit minimalen Tool-Aufrufen zu verwenden.
Schnelltest mit dem MCP Inspector
Erfordert npm/npx im PATH.
Verbindung zu einem bereits laufenden SSE-Server herstellen
In einem Terminal (Server starten):
python3 src/server.py --transport sse --port 8000In einem anderen Terminal (Inspector starten und auf /sse verweisen):
npx @modelcontextprotocol/inspector --transport sse --server-url http://127.0.0.1:8000/sseKonfiguration in Claude Desktop / CLI
Wenn Sie diesen Server lokal über SSE (Standard) ausführen, verweisen Sie Claude auf die /sse-URL.
claude mcp add --transport sse graphql-mcp http://127.0.0.1:8000/sseSie können auch über JSON konfigurieren (z. B. Konfigurationsdatei):
{
"mcpServers": {
"graphql-mcp": {
"type": "sse",
"url": "http://127.0.0.1:8000/sse"
}
}
}Wenn Sie diesen Server hinter einer Authentifizierung bereitstellen, übergeben Sie Header:
claude mcp add --transport sse private-graphql http://127.0.0.1:8000/sse \
--header "Authorization: Bearer your-token-here"This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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
- Flicense-qualityDmaintenanceProvides 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.21418MIT
- 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.7171MIT
Related MCP Connectors
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Shared knowledge base for AI agents. Semantic search across agents, no setup required — just a URL.
Curated knowledge API for AI agents - skill packs, semantic search, validated patterns.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ThoreKoritzius/graphql-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server