注:此仓库已弃用,开发已迁移至 https://github.com/nhost/nhost/tree/main/cli
mcp-nhost 可以翻译为“MCP无主机(或无主节点)”或根据具体上下文可能意为“多控制平面无主机配置”等,这里提供一个较为通用的翻译:“MCP无主机配置”。不过,具体翻译还需结合实际应用场景来确定
一个用于与Nhost Cloud项目和服务交互的模型上下文协议(MCP)服务器实现。
概述
MCP-Nhost旨在通过模型上下文协议(Model Context Protocol)为管理Nhost项目提供一个统一的接口。它使用户能够与Nhost云服务实现无缝交互,并提供了一套强大的工具用于项目管理和配置。
可用工具
以下工具目前通过MCP接口提供:
- 获取GraphQL模式(云端)
- 为Nhost Cloud平台提供GraphQL模式 - 提供对云管理可用查询和变异操作的访问权限
- 云GraphQL查询
- 在Nhost云平台上执行GraphQL查询和突变操作 - 支持项目和组织管理 - 允许查询和更新项目配置 - 在启动服务器时需要启用突变功能
- 获取本地GraphQL模式
- 获取本地Nhost开发项目的GraphQL模式 - 提供对项目特定查询和变异的操作访问 - 帮助理解可用于本地开发的操作,从而辅助生成代码 - 除非另有说明,否则使用“用户”角色
- 本地GraphQL查询
- 在本地Nhost开发项目中执行GraphQL查询 - 支持项目特定操作的测试与开发 - 支持本地开发中的查询和变异操作 - 除非另有说明,否则使用“用户”角色
- 本地配置服务器获取模式(或架构)
- 检索本地配置服务器的GraphQL模式 - 帮助了解本地项目的可用配置选项
- 本地配置服务器查询
- 在本地配置服务器上执行GraphQL查询 - 支持查询和修改本地项目配置 - 更改需要运行 'nhost up' 命令才能生效
- 本地获取管理GraphQL模式
- 检索本地项目的GraphQL管理架构 - 有助于理解如何管理Hasura的元数据、迁移和权限 - 在使用管理工具之前,提供有关可用管理操作的深入见解
- 本地管理GraphQL
- 与GraphQL的本地项目管理端点进行交互 - 管理Hasura的元数据、迁移、权限和远程模式 - 创建并应用数据库迁移 - 通过适当的迁移工作流程处理数据和模式变更 - 管理角色和权限
- 获取GraphQL模式的项目
- 检索Nhost Cloud项目的GraphQL模式 - 提供针对特定项目的查询和突变操作访问权限 - 除非另有说明,否则使用“用户”角色
- 项目-GraphQL查询
- 针对Nhost Cloud项目执行GraphQL查询 - 实现与实时项目数据的交互 - 支持查询和突变(需被允许) - 除非另有说明,否则使用“用户”角色
- 搜索
- 查阅Nhost的官方文档 - 提供有关Nhost功能、API和指南的信息 - 帮助查找实施功能或解决问题的相关文档 - 返回详细文档页面的链接
截图和示例
您可以在……中找到当前功能和工具的截图及示例 屏幕截图 文件。
安装
要安装mcp-nhost,您可以使用以下命令:
sudo curl -L https://raw.githubusercontent.com/nhost/mcp-nhost/main/get.sh | bash配置
安装mcp-nhost后,您需要对其进行配置。您可以通过运行以下命令来完成此操作: mcp-nhost config 在你的终端中。参见 CONFIG.md(配置文件说明/配置文件) 了解更多详情。
配置客户端
光标
- 前往“光标设置”
- 点击“MCP”
- 点击“+ 添加新的全局MCP服务器”
- 在内部添加以下对象
"mcpServers":
"mcp-nhost": {
"command": "/usr/local/bin/mcp-nhost",
"args": [
"start",
],
}CLI 使用方法
如需了解如何使用命令行界面(CLI),您可以运行:
mcp-nhost --help或者检查 USAGE.md(文件名,可翻译为“使用说明.md”或保持原样,因为文件名通常不翻译,直接保留原英文) 如需更多详情。
故障排除
如果你在使用MCP服务器时遇到问题,可以尝试自己运行工具。例如:
# cloud-get-graphql-schema
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"cloud-get-graphql-schema","arguments":{}},"id":1}' | mcp-nhost start
# cloud-graphql-query
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"cloud-graphql-query","arguments":{"query":"{ apps { id subdomain name } }"}},"id":1}' | mcp-nhost start
# local-get-graphql-schema
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"local-get-graphql-schema","arguments":{"role":"user"}},"id":1}' | mcp-nhost start
# local-graphql-query
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"local-graphql-query","arguments":{"query":"{ users { id } }", "role":"admin"}},"id":1}' | mcp-nhost start
# local-config-server-get-schema
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"local-config-server-get-schema","arguments":{}},"id":1}' | mcp-nhost start
# local-config-server-query
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"local-config-server-query","arguments":{"query":"{ config(appID: \"00000000-0000-0000-0000-000000000000\", resolve: true) { postgres { version } } }"}},"id":1}' | mcp-nhost start
# local-get-management-graphql-schema
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"local-get-management-graphql-schema","arguments":{}},"id":1}' | mcp-nhost start
# local-manage-graphql
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"local-manage-graphql","arguments":{"body":"{\"type\":\"export_metadata\",\"args\":{}}","endpoint":"https://local.hasura.local.nhost.run/v1/metadata"}},"id":1}' | mcp-nhost start
# project-get-graphql-schema - set projectSubdomain to your own project
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"project-get-graphql-schema","arguments":{"projectSubdomain":"replaceMe", "role": "user"}},"id":1}' | mcp-nhost start
# project-graphql-query - set projectSubdomain to your own project
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"project-graphql-query","arguments":{"projectSubdomain":"replaceMe","query":"{ users { id } }", "role":"admin"}},"id":1}' | mcp-nhost start
# search
echo '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"search","arguments":{"query":"how to enable magic links"}},"id":1}' | mcp-nhost start路线图
- ✅ 云平台:基本项目和组织管理
- ✅ 云项目:配置管理
- ✅ 本地项目:配置管理
- ✅ 本地项目:GraphQL模式感知与查询执行
- ✅ 云项目:模式感知与查询执行
- ✅ 本地项目:创建迁移
- ✅ 本地项目:管理权限和关系
- ✅ 文档:集成或记录mintlify的mcp服务器的使用方法
- ✅ 本地项目:认证和存储架构感知(可能通过mintlify实现?)
- ✅ 云项目:身份验证和存储架构感知(可能通过mintlify实现?)
- 🔄 本地项目:管理更多元数据
如果您有任何建议或功能需求,请随时提出问题以供讨论。
安全与隐私
增强保护层
MCP服务器以安全为核心进行设计,在您现有的GraphQL权限之上提供了额外的保护层。其关键安全特性包括:
- 身份验证强制执行 对于所有请求
- 权限和角色尊重 基于您现有的授权系统和所提供的凭证
- 查询/变异过滤 进一步限制允许的操作
细粒度访问控制
MCP服务器的关键安全优势之一在于,它能够精确指定哪些操作可以被允许通过,即便是对于已认证的用户也是如此:
[[projects]]
subdomain = "my-blog"
region = "eu-central-1"
pat = "nhp_project_specific_pat"
allow_queries = ["getBlogs", "getCommends"]
allow_mutations = ["insertBlog", "insertComment"]通过上述配置,即使用户在Nhost项目中拥有更广泛的权限,大型语言模型(LLM)也只能代表用户执行上述查询和突变操作。
贡献
我们欢迎为mcp-nhost做出贡献!如果您有任何建议、错误报告或功能请求,请打开一个议题或提交一个拉取请求。
