Skip to main content
Glama
letoribo

mcp-graphql-enhanced

mcp-graphql-enhanced

Glama Ein erweiterter MCP-Server (Model Context Protocol) für GraphQL, der reale Interoperabilitätsprobleme zwischen LLMs und GraphQL-APIs behebt.

Drop-in-Ersatz für mcp-graphql — mit dynamischen Headern, robuster Variablen-Analyse und ohne Breaking Changes.

💬 Community & Support

Schließen Sie sich der Unterhaltung an! Wenn Sie Fragen zur Verwendung dieser Brücke mit Neo4j, Discord-Datengraphen oder GraphQL im Allgemeinen haben, kommen Sie vorbei:

Dies ist der beste Ort, um Ihr Feedback zu teilen, Probleme zu melden oder neue „erweiterte“ Funktionen für die Brücke vorzuschlagen.

Related MCP server: mcp-graphql-schema

✨ Wichtige Erweiterungen

  • ✅ Integrierte GraphiQL-IDE — Visuelle Spielwiese unter http://localhost:MCP_PORT/ (oder /graphiql) mit vorkonfigurierten Headern.

  • ✅ Dualer Transport — Unterstützt sowohl STDIO (für lokale CLI/Client-Tools) als auch HTTP/JSON-RPC (für externe/Browser-Clients).

  • ✅ Dynamische Header — Übergeben Sie Authorization, X-API-Key usw. über Tool-Argumente (kein Neustart der Konfiguration erforderlich)

  • ✅ Robuste Variablen-Analyse — behebt den Fehler “Query variables must be a null or an object”

  • ✅ Gefilterte Introspektion — fordern Sie nur bestimmte Typen an (z. B. typeNames: ["Query", "User"]), um das Rauschen im LLM-Kontext zu reduzieren

  • ✅ Volle MCP-Kompatibilität — funktioniert mit Claude Desktop, Cursor, Glama

  • ✅ Standardmäßig sicher — Mutationen sind deaktiviert, sofern sie nicht explizit aktiviert werden

  • ✅ Dynamische Schema-Evolution — Intelligente Diagnosen und Lückenanalysen für Server, die GraphQL-Typen spontan neu generieren (wie Neo4j).

  • ✅ Tiefe Beobachtbarkeit — Automatische Cypher-Extraktion und Bereinigung aus GraphQL-Erweiterungen.

🚀 Multi-Endpoint-Broadcast (Experimentell ab v3.9.0+)

Ab v3.9.0 unterstützt der Server das gleichzeitige Abfragen mehrerer GraphQL-Endpunkte. Dies wurde ursprünglich entwickelt, um Mutationen über verschiedene Umgebungen hinweg zu synchronisieren (z. B. Node.js- und Python-Backends), eröffnet aber mächtige Möglichkeiten für die Datenaggregation.

  • Keine Breaking Changes: Wenn Sie eine einzelne URL in ENDPOINT angeben, verhält sich der Server genau wie zuvor.

  • Intelligente Aggregation: Wenn mehrere durch Kommas getrennte URLs angegeben werden, sendet der Server die Abfrage an alle und führt die resultierenden Arrays zusammen.

  • Free-Tier-Limits umgehen: Perfekt für Nutzer von „Free-Tier“-Cloud-Datenbanken (wie Neo4j Aura). Sie können Ihre Daten auf mehrere kostenlose Instanzen aufteilen und diese Brücke verwenden, um sie als einen einzigen, vereinheitlichten Graphen abzufragen, wodurch Entitätsanzahl-Beschränkungen effektiv umgangen werden.

  • Deduplizierung: Die Brücke entfernt automatisch doppelte Objekte basierend auf ihren eindeutigen Feldern, um das Kontextfenster der KI sauber zu halten.

⚠️ Nutzung auf eigene Gefahr: Dieses Feature setzt voraus, dass alle Endpunkte dasselbe (oder ein sehr ähnliches) GraphQL-Schema teilen. Die Introspektion wird gegen den ersten Endpunkt in der Liste durchgeführt.

💡 Anwendungsfall: Überbrückung von WSL und Windows (PowerShell)

Eine häufige Herausforderung für Windows-Entwickler ist die Netzwerkisolierung zwischen dem Windows Subsystem for Linux (WSL) und dem Host-Betriebssystem. Dieses Feature ermöglicht es Ihnen, diese beiden Welten zu einem „Unified Nervous System“ zu verbinden.

Beispielkonfiguration für Claude Desktop:

{
  "ENDPOINT": "http://DESKTOP-NAME.local:2311/graphql,http://127.0.0.1:4000/graphql"
}
  • Hybrides Ökosystem: Nahtloses Abfragen und Aggregieren von Daten über Windows-native Prozesse (PowerShell) und Linux-basierte Umgebungen (WSL) hinweg.

  • mDNS-Unterstützung: Durch die Verwendung von .local-Adressen löst die Brücke automatisch die IP des Host-Rechners innerhalb der WSL-Umgebung auf.

  • Transparente Aggregation: Der KI-Assistent interagiert mit einem einzigen, vereinheitlichten Schema, ohne zu wissen, dass die Daten gleichzeitig von verschiedenen Betriebssystemen abgerufen werden.

🔍 Erweiterte Beobachtbarkeit & Cypher

Die Brücke bietet tiefe Einblicke in die Art und Weise, wie das LLM mit Ihrer Graph-Datenbank interagiert.

🕸️ Automatisierte Cypher-Extraktion

Für GraphQL-Server-Implementierungen, die Abfrageausführungspläne zurückgeben (wie @neo4j/graphql), führt die Brücke automatisch Folgendes aus:

  1. Erkennt extensions.cypher in der Antwort.

  2. Bereinigt die Ausgabe durch Entfernen interner Header (wie CYPHER 5 oder leere PARAMS).

  3. Injiziert einen sauberen Cypher-Block direkt in die Ausgabe des Tools, damit die KI ihn analysieren kann.

Hinweis: Dieses Feature erfordert, dass Ihr GraphQL-Server so konfiguriert ist, dass Debug-Informationen in den Antwort-Erweiterungen enthalten sind.


🎨 Visuelles Command Center (GraphiQL)

Im Gegensatz zu Standard-MCP-Servern bietet dieser eine visuelle Schnittstelle für Menschen. Wenn Sie mit ENABLE_HTTP=true ausführen, können Sie eine voll ausgestattete GraphiQL-IDE in Ihrem Browser öffnen.

  • Endpunkt: http://localhost:6274/ (oder /graphiql)

  • Header-Synchronisierung: Alle in Ihrer Umgebung gesetzten Header (wie GitHub-Token) werden automatisch in den „Headers“-Tab von GraphiQL für sofortige Tests injiziert.

💻 HTTP / Dualer Transport

Dieser Server läuft jetzt im Dual-Transport-Modus und unterstützt sowohl die Standard-STDIO-Kommunikation (die von den meisten MCP-Clients verwendet wird) als auch einen neuen HTTP JSON-RPC-Endpunkt auf Port 6274.

Dies ermöglicht externen Systemen, Webanwendungen und direkten curl-Befehlen den Zugriff auf die Tools des Servers mit Live-Anfrage-Protokollierung in Ihrem Terminal ([HTTP-RPC]-Logs).

Endpunkt

Methode

Beschreibung

/graphiql

GET

Menschliche Schnittstelle: Die visuelle GraphQL-IDE.

/mcp

POST

Der Haupt-JSON-RPC 2.0-Endpunkt für die Tool-Ausführung.

/health

GET

Einfache Gesundheitsprüfung, gibt { status: 'ok' } zurück.

Automatische Port-Auswahl

Der Server verwendet standardmäßig Port 6274. Wenn Sie auf einen EADDRINUSE-Fehler stoßen, findet der Server automatisch den nächsten verfügbaren Port. Überprüfen Sie die Server-Logs auf den endgültig gebundenen Port (z. B. [HTTP] Started server on http://localhost:6275).

Auflösen von Port-Konflikten (EADDRINUSE) und automatische Port-Auswahl

Der Server verwendet standardmäßig Port 6274. Wenn Sie auf einen EADDRINUSE: address already in use :::6274-Fehler stoßen (häufig bei der lokalen Entwicklung aufgrund veralteter Prozesse), findet der Server automatisch den nächsten verfügbaren Port (bis zu 10 Versuche, ohne mehrere Server zu starten).

Dies stellt sicher, dass der Server erfolgreich startet, auch wenn der Standard blockiert ist. Überprüfen Sie immer die Server-Logs auf den endgültig gebundenen Port (z. B. [HTTP] Started server on http://localhost:6275), falls Ihr curl oder Client-Tool am Standard 6274 scheitert.

Um einen bestimmten Port zu erzwingen (z. B. für garantierte externe Firewall-Einstellungen), können Sie weiterhin explizit die Umgebungsvariable MCP_PORT setzen:

Testen des HTTP-Endpunkts

Sie können den Endpunkt mit curl testen, solange der Server läuft (z. B. über npm run dev):

# Test the health check (assuming the server bound to the default or found the next available port)
curl http://localhost:6274/health

# Example: Test the query tool via JSON-RPC (using port 6275 if 6274 was busy)
curl -X POST http://localhost:6275/mcp -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"query-graphql","params":{"query":"query { __typename }"},"id":1}'

## 🔍 Filtered Introspection
Avoid 50k-line schema dumps. Ask for only what you need:
`@introspect-schema typeNames ["Query", "User"]`
## 🔍 Debug & Inspect
Use the official MCP Inspector to test your server live:
```bash
npx @modelcontextprotocol/inspector \
  -e ENDPOINT=https://api.example.com/graphql \
  npx @letoribo/mcp-graphql-enhanced

Umgebungsvariablen (Breaking Change in 1.0.0)

Hinweis: Ab Version 1.0.0 wurden Befehlszeilenargumente durch Umgebungsvariablen ersetzt.

Umgebungsvariable

Beschreibung

Standard

ENDPOINT

GraphQL-Endpunkt-URL

https://mcp-neo4j-discord.vercel.app/api/graphiql

HEADERS

JSON-String mit Headern für Anfragen

{}

ALLOW_MUTATIONS

Mutationsoperationen aktivieren (standardmäßig deaktiviert)

false

NAME

Name des MCP-Servers

mcp-graphql-enhanced

SCHEMA

Pfad zu einer lokalen GraphQL-Schemadatei oder URL

-

MCP_PORT

Port für den HTTP/JSON-RPC-Server.

6274

ENABLE_HTTP

HTTP-Transport aktivieren: auto (Standard), true oder false

auto

DEBUG

Auf mcp:* für detaillierte SDK-Logs setzen

-

Hinweis zu ENABLE_HTTP:

  • auto (Standard): Aktiviert HTTP automatisch nur, wenn es im MCP Inspector läuft...

  • true: HTTP-Server immer aktivieren

  • false: HTTP-Server vollständig deaktivieren

Beispiele

# Basic usage
ENDPOINT=http://localhost:3000/graphql npx @letoribo/mcp-graphql-enhanced
# With auth header
ENDPOINT=https://api.example.com/graphql \
HEADERS='{"Authorization":"Bearer xyz"}' \
npx @letoribo/mcp-graphql-enhanced
# Enable mutations
ENDPOINT=http://localhost:3000/graphql \
ALLOW_MUTATIONS=true \
npx @letoribo/mcp-graphql-enhanced
# Use local schema file
ENDPOINT=http://localhost:3000/graphql \
SCHEMA=./schema.graphql \
npx @letoribo/mcp-graphql-enhanced
# Change the HTTP port
MCP_PORT=8080 npx @letoribo/mcp-graphql-enhanced
# Disable HTTP transport (fastest, recommended for Claude Desktop)
ENABLE_HTTP=false npx @letoribo/mcp-graphql-enhanced
# Test the surgical precision and the IDE immediately:
ENDPOINT=https://api.github.com/graphql \
HEADERS='{"Authorization":"Bearer YOUR_GITHUB_TOKEN"}' \
ENABLE_HTTP=true \
npx @letoribo/mcp-graphql-enhanced

# Then visit http://localhost:6274/graphiql

🖥️ Claude Desktop Konfigurationsbeispiele

Sie können Claude Desktop mit Ihrer GraphQL-API verbinden, entweder über das npx-Paket (empfohlen für Einfachheit) oder das Docker-Image (ideal für Reproduzierbarkeit und Isolierung).

✅ Option 1: Verwendung von npx

{
  "mcpServers": {
    "mcp-graphql-enhanced": {
      "command": "npx",
      "args": ["@letoribo/mcp-graphql-enhanced"],
      "env": {
        "ENDPOINT": "https://your-api.com/graphql"
      }
    }
  }
}

🐳 Option 2: Verwendung von Docker (Auto-Pull unterstützt)

{
  "mcpServers": {
    "mcp-graphql-enhanced": {
      "command": "sh",
      "args": [
        "-c",
        "docker run --rm -i -e ENDPOINT=$ENDPOINT -e HEADERS=$HEADERS -e ALLOW_MUTATIONS=$ALLOW_MUTATIONS ghcr.io/letoribo/mcp-graphql-enhanced:main"
      ],
      "env": {
        "ENDPOINT": "https://your-api.com/graphql",
        "HEADERS": "{\"Authorization\": \"Bearer YOUR_TOKEN\"}",
        "ALLOW_MUTATIONS": "false"
      }
    }
  }
}

🧪 Option 3: Verwendung von node mit lokalem Build (für die Entwicklung)

Wenn Sie das Repo geklont und das Projekt gebaut haben (npm run build → Ausgabe nach dist/):

{
  "mcpServers": {
    "mcp-graphql-enhanced": {
      "command": "node",
      "args": ["dist/index.js"],
      "env": {
        "ENDPOINT": "https://your-api.com/graphql",
        "ALLOW_MUTATIONS": "true"
      }
    }
  }
}

Ressourcen

  • graphql-schema: Der Server stellt das GraphQL-Schema als Ressource bereit, auf die Clients zugreifen können. Dies ist entweder die lokale Schemadatei, eine unter einer URL gehostete Schemadatei oder basiert auf einer Introspektionsabfrage.

Verfügbare Tools

Der Server bietet zwei Haupttools:

  1. introspect-schema: Dieses Tool ruft das GraphQL-Schema oder eine gefilterte Teilmenge (über typeNames) ab. Verwenden Sie dies zuerst, wenn Sie keinen Zugriff auf das Schema als Ressource haben. Dies verwendet entweder die lokale Schemadatei, eine unter einer URL gehostete Schemadatei oder eine Introspektionsabfrage. Gefilterte Introspektion (typeNames) ist nur verfügbar, wenn ein Live-GraphQL-Endpunkt verwendet wird (nicht mit SCHEMA-Datei oder URL).

  2. query-graphql: Führen Sie GraphQL-Abfragen gegen den Endpunkt aus. Standardmäßig sind Mutationen deaktiviert, sofern ALLOW_MUTATIONS nicht auf true gesetzt ist.

Sicherheitsüberlegungen

Mutationen sind standardmäßig deaktiviert, um unbeabsichtigte Datenänderungen zu verhindern. Validieren Sie HEADERS- und SCHEMA-Eingaben in der Produktion immer. Verwenden Sie nach Möglichkeit HTTPS-Endpunkte und kurzlebige Token.

Anpassen für Ihren eigenen Server

Dies ist eine sehr generische Implementierung, die eine vollständige Introspektion ermöglicht und es Ihren Benutzern erlaubt, alles zu tun (einschließlich Mutationen). Wenn Sie eine spezifischere Implementierung benötigen, würde ich vorschlagen, einfach Ihr eigenes MCP zu erstellen und den Tool-Aufruf für Clients so einzuschränken, dass nur bestimmte Abfragefelder und/oder Variablen eingegeben werden können. Sie können dies als Referenz verwenden.

Available Tools

2 tools
introspect-schemaA

Retrieve GraphQL schema details or system manifest. READ-ONLY: Non-destructive metadata discovery. Usage: 1. If 'typeNames' is provided: Returns the full SDL (Schema Definition Language) for the requested types, including fields and relations. 2. If 'typeNames' is omitted: Returns a Federated Manifest—a high-level summary of connected nodes, their capabilities, and available domain entities (not the full schema). Use this to navigate the federated graph topology before executing queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
headersNoJSON stringified object of extra HTTP headers for the introspection request (e.g. '{"Authorization": "Bearer token"}').
endpointNoOptional target GraphQL HTTP/HTTPS URL to dynamically switch endpoint before execution.
typeDepthNoDepth of nested fields to retrieve (default: 2)
typeNamesNoList of specific GraphQL type names to introspect. If provided, returns the detailed SDL definitions for these types. If omitted, returns a system-wide Federated Manifest overview.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it explicitly declares 'READ-ONLY: Non-destructive metadata discovery.' It also discloses the two distinct behavioral outcomes based on typeNames and clarifies that the manifest is 'not the full schema,' which helps set expectations. It does not mention potential errors or how headers/endpoint affect behavior, but the core safety and conditional behavior are clearly communicated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear one-line summary, an explicit READ-ONLY safety cue, and a numbered list that front-loads the two usage modes. Every sentence contributes either to behavioral transparency or invocation guidance, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderate-complexity tool with zero required parameters and no output schema, the description is largely complete: it covers both invocation modes, the manifest vs. SDL distinction, and the read-only nature. It could be more complete by explicitly routing query execution to query-graphql, but this is a minor gap given the clear 'before executing queries' framing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds meaningful behavior beyond the schema by explaining the conditional outcome for typeNames and clarifying that results include 'fields and relations.' This gives an agent a better mental model of what each parameter triggers, even though the schema already documents the parameters themselves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as retrieving GraphQL schema details or a system manifest, with a specific verb and resource. It distinguishes between two modes—full SDL for requested types versus a Federated Manifest overview—and positions it as metadata discovery before executing queries, differentiating it from the sibling query-graphql tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit conditional guidance: use typeNames to get full SDL definitions, omit it to get a manifest for navigating the federated graph. It also states to use the manifest 'before executing queries,' providing clear context. However, it does not explicitly name or exclude the sibling tool query-graphql as the alternative for actual query execution.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query-graphqlA

Execute GraphQL operations (queries and mutations) against the federated system. WARNING: This tool performs remote operations. 'Mutation' operations will modify persistent state; execute these only when a state change is intended. Prerequisites: Verify schema structure using 'introspect-schema' before executing complex queries. Security: Inherits environment-based authentication. Returns: A JSON object containing the execution result ('data') or a list of 'errors' in case of failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe GraphQL query or mutation string. Example: 'query { guilds { id name } }'.
headersNoJSON stringified object of extra HTTP headers for the request.
endpointNoOptional target GraphQL HTTP/HTTPS URL to dynamically switch endpoint before execution.
variablesNoJSON stringified object of variables. Example: '{"id": "123"}'.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does so well: it discloses that the tool performs remote operations, that mutations modify persistent state, that authentication is inherited from the environment, and that failures return an errors list. These are the key behavioral facts an agent needs beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into clear warning, prerequisite, security, and return-value statements with no filler. It is slightly longer than a minimal two-sentence description, but each section contributes a distinct piece of operational knowledge.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given four parameters and no output schema or annotations, the description covers the essential operating context: when to verify schema, mutation risk, authentication model, and expected return structure. No critical information needed to call the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description adds value by warning that the required query string may contain operations that mutate persistent state, and by noting the return shape. It does not repeat schema descriptions, but provides meaningful semantic context for the query parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action verb ('Execute') and target ('GraphQL operations ... against the federated system'), distinguishing this as the operation-execution tool while the sibling 'introspect-schema' is referenced only for schema verification. The clarification that it handles both queries and mutations further disambiguates its role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the sibling tool as a prerequisite step ('Verify schema structure using introspect-schema before executing complex queries'), and warns to execute mutations only when a state change is intended. This gives the agent clear when-to-use and when-not-to-use guidance for mutation operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv4.15.2
    • Changedintrospect-schema2 fields changed
      • addedInput schema / properties / endpoint
        Added value: +{
        +  "description": "Optional target GraphQL HTTP/HTTPS URL to dynamically switch endpoint before execution.",
        +  "type": "string"
        +}
      • addedInput schema / properties / headers
        Added value: +{
        +  "description": "JSON stringified object of extra HTTP headers for the introspection request (e.g. '{\"Authorization\": \"Bearer token\"}').",
        +  "type": "string"
        +}
    • Changedquery-graphql1 field changed
      • addedInput schema / properties / endpoint
        Added value: +{
        +  "description": "Optional target GraphQL HTTP/HTTPS URL to dynamically switch endpoint before execution.",
        +  "type": "string"
        +}
  2. 1 tool updatev4.13.1
    • Addedintrospect-schema
  3. 1 tool updatev4.12.0
    • Removedintrospect-schema
  4. 1 tool updatev4.9.2
    • Changedintrospect-schema1 field changed
      • removedInput schema / properties / typeDepth / default
        Removed value: -2
  5. 2 tool updatesv4.8.0
    • Changedintrospect-schema2 fields changed
      • addedInput schema / properties / typeDepth
        Added value: +{
        +  "default": 2,
        +  "description": "Depth of nested fields to retrieve (default: 2)",
        +  "type": "number"
        +}
      • changedInput schema / properties / typeNames / description
        Previous value: -"List of specific GraphQL type names to introspect. If omitted, the full schema is returned (use with caution on large APIs)."New value: +"List of specific GraphQL type names to introspect. If provided, returns the detailed SDL definitions for these types. If omitted, returns a system-wide Federated Manifest overview."
    • Changedquery-graphql3 fields changed
      • changedInput schema / properties / headers / description
        Previous value: -"JSON string of extra HTTP headers for the request."New value: +"JSON stringified object of extra HTTP headers for the request."
      • changedInput schema / properties / query / description
        Previous value: -"The GraphQL query or mutation string."New value: +"The GraphQL query or mutation string. Example: 'query { guilds { id name } }'."
      • changedInput schema / properties / variables / description
        Previous value: -"JSON string of variables for the operation."New value: +"JSON stringified object of variables. Example: '{\"id\": \"123\"}'."
  6. 2 tool updatesv4.2.0
    • Changedintrospect-schema1 field changed
      • changedInput schema / properties / typeNames / description
        Previous value: -"List of type names to introspect"New value: +"List of specific GraphQL type names to introspect. If omitted, the full schema is returned (use with caution on large APIs)."
    • Changedquery-graphql3 fields changed
      • changedInput schema / properties / headers / description
        Previous value: -"JSON string of extra headers"New value: +"JSON string of extra HTTP headers for the request."
      • changedInput schema / properties / query / description
        Previous value: -"The GraphQL query or mutation string"New value: +"The GraphQL query or mutation string."
      • changedInput schema / properties / variables / description
        Previous value: -"JSON string of variables"New value: +"JSON string of variables for the operation."
  7. 2 tool updatesv3.9.3
    • Addedintrospect-schema
    • Addedquery-graphql
  8. 2 tool updatesv2.0.7
    • Removedintrospect-schema
    • Removedquery-graphql
  9. 2 tool updatesv1.0.0
    • Changedintrospect-schema3 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / typeNames / description
        Previous value: -"e.g., [\"Query\", \"User\"]"New value: +"A list of specific type names to filter the introspection."
    • Changedquery-graphql2 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false

TDQS

A4.6/5.0

Scored across 2 tools

Disambiguation5/5

query-graphql handles all execution, including state-changing mutations, while introspect-schema is strictly read-only metadata discovery. Their purposes are sharply separated with no overlap.

Naming Consistency5/5

Both tools follow the same verb-noun hyphenated pattern: query-graphql and introspect-schema. The naming is predictable and consistent.

Tool Count4/5

Two tools is slightly below the typical 3-15 range, but it is a reasonable and well-scoped count for a GraphQL server: one execution tool and one schema-discovery tool. Each tool earns its place.

Completeness5/5

For a GraphQL-focused server, the pair covers the full interaction surface: schema/introspection discovery and arbitrary query/mutation execution. There are no obvious missing capabilities.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A MCP server that exposes GraphQL schema information to LLMs like Claude. This server allows an LLM to explore and understand large GraphQL schemas through a set of specialized tools, without needing to load the whole schema into the context
    35 npm
    46
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    GraphQL MCP Server that acts as a bridge allowing MCP clients (like Cursor or Claude Desktop) to interact with target GraphQL APIs through standard tools for schema introspection and operation execution.
    2
    13 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP that can proxy any GraphQL API and expose graphql operations as mcp tools.
    13 npm
    18
    Apache 2.0