Servidor MCP GraphQL de Hasura avanzado
Versión: 1.1.0
Este servidor de Protocolo de Contexto de Modelo (MCP) proporciona una interfaz avanzada para que los agentes de IA (como los de Cursor o Claude Desktop) interactúen con un endpoint GraphQL de Hasura. Permite a los agentes descubrir la estructura de la API, ejecutar consultas de solo lectura y mutaciones (con precaución), previsualizar datos, realizar agregaciones y comprobar el estado del servicio.
Este servidor mejora las capacidades de LLM al permitirles aprovechar su API Hasura de forma dinámica en función de solicitudes de lenguaje natural.
Características
Este servidor expone las siguientes capacidades de MCP:
Recursos:
Esquema Hasura GraphQL (
Proporciona la definición completa del esquema GraphQL obtenida mediante introspección estándar.
Tipo MIME:
application/jsonLos agentes pueden leer este recurso para comprender la estructura completa de la API, incluidos tipos, campos, argumentos, directivas, etc.
Herramientas:
run_graphql_queryDescripción: Ejecuta una consulta GraphQL de solo lectura en el endpoint de Hasura. Úselo para obtener datos cuando una herramienta específica no esté disponible. Asegúrese de que la consulta no modifique los datos. Ejemplo:
Entrada:
{ query: string, variables?: object }Nota: Realiza una comprobación básica para evitar la ejecución de cadenas que empiezan por
mutation. Se basa principalmente en que la consulta sea de solo lectura.
run_graphql_mutationDescripción: Ejecuta una mutación de GraphQL para insertar, actualizar o eliminar datos. Úselo con precaución y asegúrese de que la operación sea segura y esté diseñada para el propósito previsto. Depende de los permisos de Hasura configurados para el secreto de administrador proporcionado o el rol predeterminado. Ejemplo:
Entrada:
{ mutation: string, variables?: object }Seguridad: Permite cualquier mutación permitida por el rol de Hasura. Asegúrese de que los permisos de Hasura estén configurados correctamente.
list_tablesDescripción: Enumera las tablas (o colecciones) de datos disponibles gestionadas por Hasura, organizadas por esquema con descripciones, basándose en heurísticas de introspección (busca tipos de objeto con un campo 'id', excluyendo tipos internos/agregados). Útil para descubrir las fuentes de datos disponibles.
Entrada:
{ schemaName?: string }(nombre de esquema opcional, intenta inferir a partir de las descripciones de los campos si es posible, el valor predeterminado es 'público' conceptualmente)
describe_tableDescripción: Muestra la estructura de una tabla específica incluyendo todas sus columnas (campos) con sus tipos y descripciones GraphQL.
Entrada:
{ tableName: string, schemaName?: string }
list_root_fieldsDescripción: Enumera los campos de consulta, mutación o suscripción de nivel superior disponibles en el esquema GraphQL. Resulta útil para comprender los principales puntos de entrada de las operaciones.
Entrada:
{ fieldType?: 'QUERY' | 'MUTATION' | 'SUBSCRIPTION' }(Filtro opcional)
describe_graphql_typeDescripción: Proporciona detalles sobre un tipo específico de GraphQL (Objeto, Entrada, Escalar, Enumeración, Interfaz, Unión) mediante introspección de esquemas. Esencial para comprender cómo estructurar consultas o mutaciones que involucran tipos específicos.
Entrada:
{ typeName: string }(nombre de tipo que distingue entre mayúsculas y minúsculas)
preview_table_dataDescripción: Obtiene una muestra limitada de filas (5 por defecto) de una tabla específica para previsualizar su estructura y contenido de datos. Selecciona automáticamente campos escalares y de enumeración comunes.
Entrada:
{ tableName: string, limit?: number }
aggregate_dataDescripción: Realiza una agregación simple (conteo, suma, promedio, mínimo, máximo) en una tabla específica, aplicando opcionalmente un filtro "donde" de Hasura. Use "list_tables" para buscar nombres de tabla. Requiere "campo" para agregaciones sin conteo.
Entrada:
{ tableName: string, aggregateFunction: 'count'|'sum'|'avg'|'min'|'max', field?: string, filter?: object }
health_checkDescripción: Comprueba si el punto final de Hasura GraphQL configurado es accesible y responde a una consulta básica de GraphQL (
{ __typename }). Opcionalmente, puede comprobar la URL de un punto final de estado HTTP específico si se conoce.Entrada:
{ healthEndpointUrl?: string }(URL de salud específica opcional)
Requisitos
Node.js (se recomienda v18 o superior, verifique los motores
.nvmrcopackage.json enginessi se especifican)pnpm(onpm/yarn, ajuste los comandos según corresponda)Acceso a un punto final GraphQL de Hasura en ejecución.
(Opcional pero recomendado) Secreto de administrador de Hasura para acceso privilegiado o permisos de rol predeterminados configurados correctamente.
Configuración e instalación
Clonar el repositorio (si corresponde):
# git clone <repository_url> # cd mcp-hasura-advancedDependencias de instalación:
pnpm installConstruir el servidor:
pnpm run buildEsto compila el código TypeScript en el directorio
dist.
Ejecución del servidor
Ejecute el script compilado desde su terminal, proporcionando la URL del punto final de Hasura y, opcionalmente, el secreto de administrador:
Ejemplo:
o
Si no se necesita ningún secreto de administrador (usando los permisos de rol predeterminados):
El servidor se iniciará, intentará una introspección inicial del esquema, se conectará al transporte STDIO y registrará los mensajes de estado en stderr . Escuchará las solicitudes JSON-RPC de MCP en stdin y enviará las respuestas a stdout .
Uso con clientes MCP (por ejemplo, Cursor, Claude Desktop)
Para conectar este servidor a un cliente MCP como Cursor:
Encontrar rutas absolutas:
Nodo ejecutable: ejecuta
which nodeen tu terminal.Script del servidor: Diríjase al directorio
mcp-hasura-advancedy ejecutepwd. Añada/dist/index.jsal resultado.Directorio del proyecto: La salida de
pwd.
Configurar el cliente: abra el archivo de configuración de su cliente (por ejemplo,
settings.jsonpara Cursor,claude_desktop_config.jsonpara Claude Desktop).Agregar entrada de servidor: agregue una entrada bajo la clave apropiada (por ejemplo, matriz
cursor.customMcpServerspara Cursor, objetomcpServerspara Claude Desktop).
Ejemplo
Ejemplo de Claude Desktop
Reemplazar marcadores de posición: actualice todos los marcadores de posición (
/path/to/...,https://YOUR...,YOUR_ADMIN_SECRET) con sus valores reales.Reiniciar/Recargar cliente: guarde la configuración y reinicie o recargue su aplicación cliente MCP.
Seleccionar servidor: elija “Mi servidor Hasura avanzado” (o el nombre que especificó) en la interfaz de usuario del cliente.
Interactuar: utilice indicaciones en lenguaje natural en el chat de su cliente para aprovechar las herramientas del servidor (por ejemplo, "Enumerar tablas usando el servidor Hasura", "Describir la tabla 'usuarios'", "Obtener una vista previa de los datos de la tabla 'pedidos'", "Ejecutar la consulta
{ products { name price } }usando el servidor Hasura").
Desarrollo
Ejecutar en modo de desarrollo: use
pnpm run dev <ENDPOINT> [SECRET]para ejecutar el servidor directamente conts-nodepara una iteración más rápida (no se necesita ningún paso de compilación).Pruebas: pruebe herramientas individuales ejecutando el servidor manualmente (
pnpm start ...) y canalizando solicitudes JSON-RPC a sustdin.
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Tools
Un servidor de protocolo de contexto de modelo que permite a los agentes de IA interactuar dinámicamente con los puntos finales GraphQL de Hasura a través del lenguaje natural, lo que respalda el descubrimiento de esquemas, la consulta/manipulación de datos y las agregaciones.
Related MCP Servers
- Asecurity-licenseAqualityA Model Context Protocol server that enables AI agents to interact with local Logseq knowledge graphs, supporting operations like creating/editing pages and blocks, searching content, and managing journal entries.Last updated -1314MIT License
- -security-license-qualityA Model Context Protocol server that connects to Microsoft Graph API, allowing AI assistants to query and access data from Microsoft Entra ID (formerly Azure Active Directory).
CodeAlive MCPofficial
-security-license-qualityA Model Context Protocol server that enhances AI agents by providing deep semantic understanding of codebases, enabling more intelligent interactions through advanced code search and contextual awareness.Last updated -67MIT License- -security-license-qualityModel Context Protocol server that allows AI assistants to interact with Jira, supporting operations like creating tickets and fetching project information directly from the cursor.Last updated -1