高级 Hasura GraphQL MCP 服务器
版本: 1.1.0
该模型上下文协议 (MCP) 服务器为 AI 代理(例如 Cursor 或 Claude Desktop 中的代理)提供了一个高级接口,用于与 Hasura GraphQL 端点交互。它使代理能够发现 API 结构、执行只读查询和变更(需谨慎操作)、预览数据、执行聚合以及检查服务运行状况。
该服务器允许他们根据自然语言请求动态利用您的 Hasura API,从而增强了 LLM 功能。
特征
该服务器公开以下 MCP 功能:
资源:
- Hasura GraphQL 架构 (
hasura:/schema
)- 提供通过标准自省获得的完整 GraphQL 模式定义。
- MIME 类型:
application/json
- 代理可以阅读此资源来了解 API 的完整结构,包括类型、字段、参数、指令等。
工具:
run_graphql_query
- **描述:**针对 Hasura 端点执行只读 GraphQL 查询。当特定工具不可用时,使用此方法获取数据。确保查询不会修改数据。示例:
query { users { id name } }
- 输入:
{ query: string, variables?: object }
- **注意:**执行基本检查以防止执行以
mutation
开头的字符串。主要依赖于查询本身是否为只读。
- **描述:**针对 Hasura 端点执行只读 GraphQL 查询。当特定工具不可用时,使用此方法获取数据。确保查询不会修改数据。示例:
run_graphql_mutation
- **描述:**执行 GraphQL 突变以插入、更新或删除数据。请谨慎使用,确保操作符合预期且安全。依赖于为提供的管理员密钥或默认角色配置的 Hasura 权限。示例:
mutation { insert_users_one(object: {name: "Test"}) { id } }
- 输入:
{ mutation: string, variables?: object }
- **安全性:**允许 Hasura 角色允许的任何变更。确保配置了适当的 Hasura 权限。
- **描述:**执行 GraphQL 突变以插入、更新或删除数据。请谨慎使用,确保操作符合预期且安全。依赖于为提供的管理员密钥或默认角色配置的 Hasura 权限。示例:
list_tables
- **描述:**列出 Hasura 管理的可用数据表(或集合),并根据自省启发式方法(查找带有“id”字段的对象类型,不包括内部/聚合类型)按模式组织,并附带描述。有助于发现可用的数据源。
- 输入:
{ schemaName?: string }
(可选模式名称,如果可能则尝试从字段描述中推断,概念上默认为“公共”)
describe_table
- **描述:**显示特定表的结构,包括其所有列(字段)及其 GraphQL 类型和描述。
- 输入:
{ tableName: string, schemaName?: string }
list_root_fields
- **描述:**列出 GraphQL 架构中可用的顶级查询、变更或订阅字段。有助于理解操作的主要入口点。
- 输入:
{ fieldType?: 'QUERY' | 'MUTATION' | 'SUBSCRIPTION' }
(可选过滤器)
describe_graphql_type
- **描述:**使用模式自省提供有关特定 GraphQL 类型(对象、输入、标量、枚举、接口、联合)的详细信息。对于理解如何构建涉及特定类型的查询或修改至关重要。
- 输入:
{ typeName: string }
(区分大小写的类型名称)
preview_table_data
- **描述:**从指定表中获取有限行样本(默认 5 行),以预览其数据结构和内容。自动选择常用标量和枚举字段。
- 输入:
{ tableName: string, limit?: number }
aggregate_data
- **描述:**对指定表执行简单聚合(计数、求和、平均、最小值、最大值),可选择应用 Hasura 的“where”过滤器。使用“list_tables”查找表名。非计数聚合需要“field”。
- 输入:
{ tableName: string, aggregateFunction: 'count'|'sum'|'avg'|'min'|'max', field?: string, filter?: object }
health_check
- **描述:**检查配置的 Hasura GraphQL 端点是否可访问并响应基本 GraphQL 查询 (
{ __typename }
)。如果已知,可以选择检查特定的 HTTP 健康端点 URL。 - 输入:
{ healthEndpointUrl?: string }
(可选具体健康 URL)
- **描述:**检查配置的 Hasura GraphQL 端点是否可访问并响应基本 GraphQL 查询 (
要求
- Node.js(建议使用 v18 或更高版本,如果指定,请检查
.nvmrc
或package.json engines
) pnpm
(或npm
/yarn
,相应调整命令)- 访问正在运行的 Hasura GraphQL 端点。
- (可选但推荐)Hasura 管理员机密用于特权访问,或正确配置的默认角色权限。
设置和安装
- 克隆存储库(如果适用):
- 安装依赖项:
- 构建服务器:这会将 TypeScript 代码编译到
dist
目录中。
运行服务器
从您的终端执行已编译的脚本,提供 Hasura 端点 URL 和可选的管理员机密:
例子:
或者
如果不需要管理员机密(使用默认角色权限):
服务器将启动,尝试进行初始模式自检,连接到 STDIO 传输,并将状态消息记录到stderr
。它会在stdin
上监听 MCP JSON-RPC 请求,并将响应发送到stdout
。
与 MCP 客户端一起使用(例如 Cursor、Claude Desktop)
要将此服务器连接到 MCP 客户端(如 Cursor):
- 查找绝对路径:
- 节点可执行文件:在终端中运行
which node
。 - 服务器脚本:导航到
mcp-hasura-advanced
目录并运行pwd
。将/dist/index.js
附加到结果中。 - 项目目录:
pwd
的输出。
- 节点可执行文件:在终端中运行
- **配置客户端:**打开客户端的配置文件(例如,Cursor 的
settings.json
、Claude Desktop 的claude_desktop_config.json
)。 - **添加服务器条目:**在适当的键下添加一个条目(例如,Cursor 的
cursor.customMcpServers
数组,Claude Desktop 的mcpServers
对象)。
示例游标settings.json
:
示例 Claude Desktop claude_desktop_config.json
:
- **替换占位符:**用您的实际值更新所有占位符(
/path/to/...
、https://YOUR...
、YOUR_ADMIN_SECRET
)。 - **重启/重新加载客户端:**保存配置并重启或重新加载您的 MCP 客户端应用程序。
- **选择服务器:**在客户端的 UI 中选择“我的高级 Hasura 服务器”(或您指定的名称)。
- **互动:**在客户的聊天中使用自然语言提示来利用服务器的工具(例如,“使用 Hasura 服务器列出表格”、“描述‘用户’表格”、“预览‘订单’表格中的数据”、“使用 Hasura 服务器运行查询
{ products { name price } }
”)。
发展
- **以开发模式运行:**使用
pnpm run dev <ENDPOINT> [SECRET]
直接通过ts-node
运行服务器以实现更快的迭代(无需构建步骤)。 - **测试:**通过手动运行服务器(
pnpm start ...
)并将 JSON-RPC 请求传送到其stdin
来测试各个工具。
This server cannot be installed
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.
模型上下文协议服务器,使 AI 代理能够通过自然语言与 Hasura GraphQL 端点动态交互,支持模式发现、数据查询/操作和聚合。
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server enabling AI agents to access and manipulate ServiceNow data through natural language interactions, allowing users to search for records, update them, and manage scripts.Last updated -9PythonMIT License
- AsecurityFlicenseAqualityA Model Context Protocol server that connects AI assistants to Bloom Growth's GraphQL API, enabling them to query data and execute operations against the Bloom Growth platform.Last updated -4Python
- -securityFlicense-qualityA Model Context Protocol server that provides AI assistants with structured access to your Logseq knowledge graph, enabling retrieval, searching, analysis, and creation of content within your personal knowledge base.Last updated -19TypeScript
- -securityFlicense-qualityA TypeScript server that provides Claude AI with seamless access to any GraphQL API through the Model Context Protocol.Last updated -JavaScript