Skip to main content
Glama
letoribo

mcp-graphql-enhanced

mcp-graphql-enhanced

Glama Un servidor MCP (Model Context Protocol) mejorado para GraphQL que soluciona problemas de interoperabilidad del mundo real entre LLMs y APIs de GraphQL.

Reemplazo directo para mcp-graphql — con cabeceras dinámicas, análisis robusto de variables y sin cambios disruptivos.

💬 Comunidad y Soporte

¡Únete a la conversación! Si tienes preguntas sobre el uso de este puente con Neo4j, grafos de datos de Discord o GraphQL en general, ven a pasar el rato con nosotros:

Este es el mejor lugar para compartir tus comentarios, informar de problemas o sugerir nuevas funciones "mejoradas" para el puente.

Related MCP server: mcp-graphql-schema

✨ Mejoras clave

  • ✅ IDE GraphiQL integrado — Entorno visual en http://localhost:MCP_PORT/ (o /graphiql) con cabeceras preconfiguradas.

  • ✅ Transporte dual — Soporta tanto STDIO (para herramientas CLI/cliente locales) como HTTP/JSON-RPC (para clientes externos/navegador).

  • ✅ Cabeceras dinámicas — pasa Authorization, X-API-Key, etc., mediante argumentos de herramienta (sin reinicios de configuración)

  • ✅ Análisis robusto de variables — soluciona el error “Query variables must be a null or an object”

  • ✅ Introspección filtrada — solicita solo tipos específicos (p. ej., typeNames: ["Query", "User"]) para reducir el ruido en el contexto del LLM

  • ✅ Compatibilidad total con MCP — funciona con Claude Desktop, Cursor, Glama

  • ✅ Seguro por defecto — mutaciones deshabilitadas a menos que se habiliten explícitamente

  • ✅ Evolución dinámica del esquema — Diagnósticos inteligentes y análisis de brechas para servidores que regeneran tipos de GraphQL sobre la marcha (como Neo4j).

  • ✅ Observabilidad profunda — Extracción y limpieza automática de Cypher desde extensiones de GraphQL.

🚀 Difusión multi-endpoint (Experimental en v3.9.0+)

A partir de la versión v3.9.0, el servidor admite realizar consultas a múltiples endpoints de GraphQL simultáneamente. Esto se diseñó originalmente para sincronizar mutaciones en diferentes entornos (p. ej., backends de Node.js y Python), pero abre posibilidades poderosas para la agregación de datos.

  • Sin cambios disruptivos: Si proporcionas una única URL en ENDPOINT, el servidor se comporta exactamente igual que antes.

  • Agregación inteligente: Cuando se proporcionan múltiples URLs separadas por comas, el servidor difunde la consulta a todas ellas y fusiona los arrays resultantes.

  • Evitar límites de nivel gratuito: Perfecto para usuarios de bases de datos en la nube de "Nivel Gratuito" (como Neo4j Aura). Puedes dividir tus datos en múltiples instancias gratuitas y usar este puente para consultarlos como un único grafo unificado, evitando eficazmente las limitaciones de recuento de entidades.

  • Deduplicación: El puente elimina automáticamente los objetos duplicados basándose en sus campos únicos para mantener limpio el contexto de la IA.

⚠️ Úsalo bajo tu propia responsabilidad: Esta función asume que todos los endpoints comparten el mismo esquema de GraphQL (o uno muy similar). La introspección se realiza contra el primer endpoint de la lista.

💡 Caso de uso: Conectar WSL y Windows (PowerShell)

Un desafío común para los desarrolladores de Windows es el aislamiento de red entre el Subsistema de Windows para Linux (WSL) y el SO anfitrión. Esta función te permite conectar estos dos mundos en un "Sistema Nervioso Unificado".

Configuración de ejemplo para Claude Desktop:

{
  "ENDPOINT": "http://DESKTOP-NAME.local:2311/graphql,http://127.0.0.1:4000/graphql"
}
  • Ecosistema híbrido: Consulta y agrega datos sin problemas entre procesos nativos de Windows (PowerShell) y entornos basados en Linux (WSL).

  • Soporte mDNS: Al usar direcciones .local, el puente resuelve automáticamente la IP de la máquina anfitriona desde dentro del entorno WSL.

  • Agregación transparente: El asistente de IA interactúa con un esquema unificado único, sin saber que los datos se están obteniendo de diferentes sistemas operativos simultáneamente.

🔍 Observabilidad avanzada y Cypher

El puente proporciona información detallada sobre cómo el LLM interactúa con tu base de datos de grafos.

🕸️ Extracción automatizada de Cypher

Para implementaciones de servidores GraphQL que devuelven planes de ejecución de consultas (como @neo4j/graphql), el puente automáticamente:

  1. Detecta extensions.cypher en la respuesta.

  2. Sanea la salida eliminando cabeceras internas (como CYPHER 5 o PARAMS vacíos).

  3. Inyecta un bloque de Cypher limpio directamente en la salida de la herramienta para que la IA lo analice.

Nota: Esta función requiere que tu servidor GraphQL esté configurado para incluir información de depuración en las extensiones de respuesta.


🎨 Centro de comando visual (GraphiQL)

A diferencia de los servidores MCP estándar, este proporciona una interfaz visual para humanos. Al ejecutarlo con ENABLE_HTTP=true, puedes abrir un IDE GraphiQL completo en tu navegador.

  • Endpoint: http://localhost:6274/ (o /graphiql)

  • Sincronización de cabeceras: Cualquier cabecera configurada en tu entorno (como tokens de GitHub) se inyecta automáticamente en la pestaña "Headers" de GraphiQL para pruebas inmediatas.

💻 HTTP / Transporte dual

Este servidor ahora se ejecuta en modo de transporte dual, soportando tanto la comunicación STDIO estándar (utilizada por la mayoría de los clientes MCP) como un nuevo endpoint HTTP JSON-RPC en el puerto 6274.

Esto permite que sistemas externos, aplicaciones web y comandos curl directos accedan a las herramientas del servidor con registro de solicitudes en vivo en tu terminal (registros [HTTP-RPC]).

Endpoint

Método

Descripción

/graphiql

GET

Interfaz humana: El IDE visual de GraphQL.

/mcp

POST

El endpoint principal JSON-RPC 2.0 para la ejecución de herramientas.

/health

GET

Verificación de estado simple, devuelve { status: 'ok' }.

Selección automática de puerto

El servidor utiliza por defecto el puerto 6274. Si encuentras un error EADDRINUSE, el servidor encontrará automáticamente el siguiente puerto disponible. Revisa los registros del servidor para ver el puerto final vinculado (p. ej., [HTTP] Started server on http://localhost:6275).

Resolución de conflictos de puerto (EADDRINUSE) y selección automática

El servidor utiliza por defecto el puerto 6274. Si encuentras un error EADDRINUSE: address already in use :::6274 (común en el desarrollo local debido a procesos antiguos), el servidor encontrará automáticamente el siguiente puerto disponible (hasta 10 intentos, sin generar múltiples servidores).

Esto asegura que el servidor se inicie correctamente incluso cuando el puerto predeterminado está bloqueado. Revisa siempre los registros del servidor para ver el puerto final vinculado (p. ej., [HTTP] Started server on http://localhost:6275) si tu curl o herramienta cliente falla en el 6274 predeterminado.

Para forzar un puerto específico (p. ej., para configuraciones de firewall externo garantizadas), aún puedes establecer explícitamente la variable de entorno MCP_PORT:

Prueba del endpoint HTTP

Puedes probar el endpoint usando curl siempre que el servidor esté ejecutándose (p. ej., mediante 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

Variables de entorno (Cambio disruptivo en 1.0.0)

Nota: A partir de la versión 1.0.0, los argumentos de línea de comandos han sido reemplazados por variables de entorno.

Variable de entorno

Descripción

Predeterminado

ENDPOINT

URL del endpoint de GraphQL

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

HEADERS

Cadena JSON que contiene cabeceras para las solicitudes

{}

ALLOW_MUTATIONS

Habilitar operaciones de mutación (deshabilitado por defecto)

false

NAME

Nombre del servidor MCP

mcp-graphql-enhanced

SCHEMA

Ruta a un archivo de esquema GraphQL local o URL

-

MCP_PORT

Puerto para el servidor HTTP/JSON-RPC.

6274

ENABLE_HTTP

Habilitar transporte HTTP: auto (predeterminado), true o false

auto

DEBUG

Establecer en mcp:* para registros detallados del SDK

-

Nota sobre ENABLE_HTTP:

  • auto (predeterminado): Habilita automáticamente HTTP solo cuando se ejecuta en el Inspector MCP...

  • true: Habilitar siempre el servidor HTTP

  • false: Deshabilitar completamente el servidor HTTP

Ejemplos

# 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

🖥️ Ejemplos de configuración de Claude Desktop

Puedes conectar Claude Desktop a tu API de GraphQL usando el paquete npx (recomendado por simplicidad) o la imagen de Docker (ideal para reproducibilidad y aislamiento).

✅ Opción 1: Usando npx

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

🐳 Opción 2: Usando Docker (soporta auto-pull)

{
  "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"
      }
    }
  }
}

🧪 Opción 3: Usando node con compilación local (para desarrollo)

Si has clonado el repositorio y compilado el proyecto (npm run build → genera en dist/):

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

Recursos

  • graphql-schema: El servidor expone el esquema de GraphQL como un recurso al que los clientes pueden acceder. Esto es el archivo de esquema local, un archivo de esquema alojado en una URL o basado en una consulta de introspección.

Herramientas disponibles

El servidor proporciona dos herramientas principales:

  1. introspect-schema: Esta herramienta recupera el esquema de GraphQL o un subconjunto filtrado (mediante typeNames). Úsala primero si no tienes acceso al esquema como recurso. Esto utiliza el archivo de esquema local, un archivo de esquema alojado en una URL o una consulta de introspección. La introspección filtrada (typeNames) solo está disponible cuando se utiliza un endpoint de GraphQL en vivo (no con archivo SCHEMA o URL).

  2. query-graphql: Ejecuta consultas de GraphQL contra el endpoint. Por defecto, las mutaciones están deshabilitadas a menos que ALLOW_MUTATIONS se establezca en true.

Consideraciones de seguridad

Las mutaciones están deshabilitadas por defecto para evitar cambios de datos no deseados. Valida siempre las entradas de HEADERS y SCHEMA en producción. Usa endpoints HTTPS y tokens de corta duración siempre que sea posible.

Personaliza para tu propio servidor

Esta es una implementación muy genérica que permite una introspección completa y que tus usuarios hagan lo que quieran (incluyendo mutaciones). Si necesitas una implementación más específica, te sugeriría crear tu propio MCP y restringir la llamada a herramientas para que los clientes solo ingresen campos de consulta y/o variables específicos. Puedes usar esto como referencia.

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