nile-mcp官方
Nile数据库的MCP服务器 - 使用LLM管理和查询数据库、租户、用户和身份验证
README
<p align="center">
<a href="https://thenile.dev" target="_blank"><img width="96px" src="https://www.thenile.dev/about-logo.png" /></a>
<h2 align="center">Nile MCP 服务器
<br/>
<img src="https://img.shields.io/npm/v/@niledatabase/server"/>
</h2>
<p align="center">
<a href="https://thenile.dev/docs/ai-embeddings/nile-mcp-server"><strong>了解更多 ↗️</strong></a>
<br />
<br />
<a href="https://discord.gg/akRKRPKA">Discord</a>
🔵
<a href="https://thenile.dev">网站</a>
🔵
<a href="https://github.com/orgs/niledatabase/discussions">问题</a>
</p>
</p>
[](https://smithery.ai/server/@niledatabase/nile-mcp-server)
Nile 数据库平台的模型上下文协议 (MCP) 服务器实现。此服务器允许 LLM 应用程序通过标准化接口与 Nile 平台交互。
## 功能
- **数据库管理**:创建、列出、获取详细信息和删除数据库
- **凭证管理**:创建和列出数据库凭证
- **区域管理**:列出可用于创建数据库的可用区域
- **SQL 查询支持**:直接在 Nile 数据库上执行 SQL 查询
- **MCP 协议支持**:模型上下文协议的完整实现
- **类型安全**:使用 TypeScript 编写,具有完整的类型检查
- **错误处理**:全面的错误处理和用户友好的错误消息
- **测试覆盖率**:使用 Jest 的全面测试套件
- **环境管理**:从 .env 文件自动加载环境变量
- **输入验证**:使用 Zod 的基于模式的输入验证
## 安装
安装稳定版本:
```bash
npm install @niledatabase/nile-mcp-server
对于最新的 alpha/预览版本:
npm install @niledatabase/nile-mcp-server@alpha
这将在您的 node_modules 文件夹中安装 @niledatabase/nile-mcp-server。例如:node_modules/@niledatabase/nile-mcp-server/dist/
手动安装
# 克隆存储库
git clone https://github.com/yourusername/nile-mcp-server.git
cd nile-mcp-server
# 安装依赖项
npm install
# 构建项目
npm run build
其他 mcp 包管理器
- npx @michaellatman/mcp-get@latest install @niledatabase/nile-mcp-server
启动服务器
有几种方法可以启动服务器:
- 直接 Node 执行:
node dist/index.js
- 开发模式(自动重建):
npm run dev
服务器将启动并侦听 MCP 协议消息。您应该看到启动日志指示:
- 已加载环境变量
- 已创建服务器实例
- 已初始化工具
- 已建立传输连接
要停止服务器,请按 Ctrl+C
。
验证服务器是否正在运行
当服务器成功启动时,您应该看到类似于以下的日志:
[info] 正在启动 Nile MCP 服务器...
[info] 正在加载环境变量...
[info] 环境变量已成功加载
[info] 正在创建服务器实例...
[info] 工具已成功初始化
[info] 正在设置 stdio 传输...
[info] 服务器已成功启动
如果您看到这些日志,则服务器已准备好接受来自 Claude Desktop 的命令。
配置
在根目录中创建一个 .env
文件,其中包含您的 Nile 凭据:
NILE_API_KEY=your_api_key_here
NILE_WORKSPACE_SLUG=your_workspace_slug
要创建 Nile API 密钥,请登录到您的 Nile 帐户,单击左上角的“工作区”,选择您的工作区,然后导航到左侧菜单中的“安全”部分。
与 Claude Desktop 一起使用
设置
- 如果您尚未安装 Claude Desktop,请安装它
- 构建项目:
npm run build
- 打开 Claude Desktop
- 转到“设置”>“MCP 服务器”
- 单击“添加服务器”
- 添加以下配置:
{
"mcpServers": {
"nile-database": {
"command": "node",
"args": [
"/path/to/your/nile-mcp-server/dist/index.js"
],
"env": {
"NILE_API_KEY": "your_api_key_here",
"NILE_WORKSPACE_SLUG": "your_workspace_slug"
}
}
}
}
替换:
/path/to/your/nile-mcp-server
为您的项目目录的绝对路径your_api_key_here
为您的 Nile API 密钥your_workspace_slug
为您的 Nile 工作区 slug
与 Cursor 一起使用
设置
- 如果您尚未安装 Cursor,请安装它
- 构建项目:
npm run build
- 打开 Cursor
- 转到“设置”(⌘,)>“功能”>“MCP 服务器”
- 单击“添加新的 MCP 服务器”
- 配置服务器:
- 名称:
nile-database
(或您喜欢的任何名称) - 命令:
替换:env NILE_API_KEY=your_key NILE_WORKSPACE_SLUG=your_workspace node /absolute/path/to/nile-mcp-server/dist/index.js
your_key
为您的 Nile API 密钥your_workspace
为您的 Nile 工作区 slug/absolute/path/to
为您的项目的实际路径
- 名称:
- 单击“保存”
- 您应该看到一个绿色指示器,表明 MCP 服务器已连接
- 重新启动 Cursor 以使更改生效
服务器模式
服务器支持两种操作模式:
STDIO 模式(默认)
默认模式使用标准输入/输出进行通信,使其与 Claude Desktop 和 Cursor 集成兼容。
SSE 模式
服务器发送事件 (SSE) 模式支持通过 HTTP 进行实时、事件驱动的通信。
要启用 SSE 模式:
- 在您的
.env
文件中设置MCP_SERVER_MODE=sse
- 服务器将启动一个 HTTP 服务器(默认端口 3000)
- 连接到 SSE 端点:
http://localhost:3000/sse
- 将命令发送到:
http://localhost:3000/messages
使用 curl 的 SSE 用法示例:
# 在终端 1 中 - 侦听事件
curl -N http://localhost:3000/sse
# 在终端 2 中 - 发送命令
curl -X POST http://localhost:3000/messages \
-H "Content-Type: application/json" \
-d '{
"type": "function",
"name": "list-databases",
"parameters": {}
}'
示例提示
在 Cursor 中设置 MCP 服务器后,您可以使用自然语言与 Nile 数据库交互。以下是一些示例提示:
数据库管理
在 AWS_US_WEST_2 区域中创建一个名为“my_app”的新数据库
列出我的所有数据库
获取数据库“my_app”的详细信息
删除数据库“test_db”
创建表
在 my_app 数据库中创建一个 users 表,其中包含以下列:
- tenant_id (UUID, 引用 tenants)
- id (INTEGER)
- email (VARCHAR, 每个租户唯一)
- name (VARCHAR)
- created_at (TIMESTAMP)
在 my_app 数据库中创建一个 products 表,其中包含以下列:
- tenant_id (UUID, 引用 tenants)
- id (INTEGER)
- name (VARCHAR)
- price (DECIMAL)
- description (TEXT)
- created_at (TIMESTAMP)
查询数据
在 my_app 数据库上执行此查询:
SELECT * FROM users WHERE tenant_id = 'your-tenant-id' LIMIT 5
在 my_app 上运行此查询:
INSERT INTO users (tenant_id, id, email, name)
VALUES ('tenant-id', 1, 'user@example.com', 'John Doe')
显示 my_app 数据库中所有价格 > 100 的产品
模式管理
显示 my_app 数据库中 users 表的模式
在 my_app 数据库中向 users 表添加一个新列“status”
在 my_app 数据库中在 users 表的 email 列上创建一个索引
可用工具
服务器提供以下工具来与 Nile 数据库交互:
数据库管理
-
create-database
- 创建一个新的 Nile 数据库
- 参数:
name
(string):数据库的名称region
(string):AWS_US_WEST_2
(俄勒冈)或AWS_EU_CENTRAL_1
(法兰克福)
- 返回:数据库详细信息,包括 ID、名称、区域和状态
- 示例:“在 AWS_US_WEST_2 中创建一个名为 'my-app' 的数据库”
-
list-databases
- 列出您的工作区中的所有数据库
- 无需参数
- 返回:数据库列表,其中包含其 ID、名称、区域和状态
- 示例:“列出我的所有数据库”
-
get-database
- 获取有关特定数据库的详细信息
- 参数:
name
(string):数据库的名称
- 返回:详细的数据库信息,包括 API 主机和 DB 主机
- 示例:“获取数据库 'my-app' 的详细信息”
-
delete-database
- 删除数据库
- 参数:
name
(string):要删除的数据库的名称
- 返回:确认消息
- 示例:“删除数据库 'my-app'”
凭证管理
-
list-credentials
- 列出数据库的所有凭据
- 参数:
databaseName
(string):数据库的名称
- 返回:凭据列表,其中包含 ID、用户名和创建日期
- 示例:“列出数据库 'my-app' 的凭据”
-
create-credential
- 为数据库创建新凭据
- 参数:
databaseName
(string):数据库的名称
- 返回:新的凭据详细信息,包括用户名和一次性密码
- 示例:“为数据库 'my-app' 创建新凭据”
- 注意:显示密码时保存密码,因为它不会再次显示
区域管理
- list-regions
- 列出所有可用于创建数据库的区域
- 无需参数
- 返回:可用 AWS 区域的列表
- 示例:“有哪些区域可用于创建数据库?”
SQL 查询执行
- execute-sql
- 在 Nile 数据库上执行 SQL 查询
- 参数:
databaseName
(string):要查询的数据库的名称query
(string):要执行的 SQL 查询connectionString
(string, optional):用于查询的预先存在的连接字符串
- 返回:查询结果,格式化为带有列标题和行数的 markdown 表格
- 功能:
- 自动凭据管理(如果未指定,则创建新的凭据)
- 与数据库的安全 SSL 连接
- 结果格式化为 markdown 表格
- 带有提示的详细错误消息
- 支持使用现有连接字符串
- 示例:“在数据库 'my-app' 上执行 SELECT * FROM users LIMIT 5”
资源管理
-
read-resource
- 读取数据库资源(表、视图等)的模式信息
- 参数:
databaseName
(string):数据库的名称resourceName
(string):资源的名称(表/视图)
- 返回:详细的模式信息,包括:
- 列名和类型
- 主键和索引
- 外键关系
- 列描述和约束
- 示例:“显示 my-app 中 users 表的模式”
-
list-resources
- 列出数据库中的所有资源(表、视图)
- 参数:
databaseName
(string):数据库的名称
- 返回:所有资源的列表,其中包含其类型
- 示例:“列出 my-app 数据库中的所有表”
租户管理
-
list-tenants
- 列出数据库中的所有租户
- 参数:
databaseName
(string):数据库的名称
- 返回:租户列表,其中包含其 ID 和元数据
- 示例:“显示 my-app 数据库中的所有租户”
-
create-tenant
- 在数据库中创建一个新租户
- 参数:
databaseName
(string):数据库的名称tenantName
(string):新租户的名称
- 返回:新的租户详细信息,包括 ID
- 示例:“在 my-app 中创建一个名为 'acme-corp' 的租户”
-
delete-tenant
- 删除数据库中的租户
- 参数:
databaseName
(string):数据库的名称tenantName
(string):租户的名称
- 返回:如果租户已删除,则返回成功
- 示例:“删除 my-app 中名为 'acme-corp' 的租户”
示例用法
以下是一些可以在 Claude Desktop 中使用的示例命令:
# 数据库管理
请在 AWS_US_WEST_2 区域中创建一个名为“my-app”的新数据库。
你能列出我的所有数据库吗?
获取数据库“my-app”的详细信息。
删除名为“test-db”的数据库。
# 连接字符串管理
获取数据库“my-app”的连接字符串。
# 连接字符串格式:postgres://<user>:<password>@<region>.db.thenile.dev:5432/<database>
# 示例:postgres://cred-123:password@us-west-2.db.thenile.dev:5432/my-app
# SQL 查询
在数据库“my-app”上执行 SELECT * FROM users LIMIT 5
在 my-app 数据库上运行此查询:SELECT COUNT(*) FROM orders WHERE status = 'completed'
使用连接字符串“postgres://user:pass@host:5432/db”,在 my-app 上执行此查询:SELECT * FROM products WHERE price > 100
响应格式
所有工具都以标准化格式返回响应:
- 成功响应包括相关数据和确认消息
- 错误响应包括详细的错误消息和 HTTP 状态代码
- SQL 查询结果格式化为 markdown 表格
- 所有响应都经过格式化,以便在 Claude Desktop 中轻松阅读
错误处理
服务器处理各种错误情况:
- 无效的 API 凭据
- 网络连接问题
- 无效的数据库名称或区域
- 缺少必需的参数
- 数据库操作失败
- 带有有用提示的 SQL 语法错误
- 速率限制和 API 限制
故障排除
-
如果 Claude 说它无法访问这些工具:
- 检查配置中的服务器路径是否正确
- 确保项目已构建 (
npm run build
) - 验证您的 API 密钥和工作区 slug 是否正确
- 重新启动 Claude Desktop
-
如果数据库创建失败:
- 检查您的 API 密钥权限
- 确保数据库名称在您的工作区中是唯一的
- 验证该区域是否为受支持的选项之一
-
如果凭据操作失败:
- 验证数据库是否存在并且处于 READY 状态
- 检查您的 API 密钥是否具有必要的权限
开发
项目结构
nile-mcp-server/
├── src/
│ ├── server.ts # MCP 服务器实现
│ ├── tools.ts # 工具实现
│ ├── types.ts # 类型定义
│ ├── logger.ts # 日志记录实用程序
│ ├── index.ts # 入口点
│ └── __tests__/ # 测试文件
│ └── server.test.ts
├── dist/ # 编译后的 JavaScript
├── logs/ # 日志文件目录
├── .env # 环境配置
├── .gitignore # Git 忽略文件
├── package.json # 项目依赖项
└── tsconfig.json # TypeScript 配置
关键文件
server.ts
:主服务器实现,包含工具注册和传输处理tools.ts
:所有数据库操作和 SQL 查询执行的实现types.ts
:数据库操作和响应的 TypeScript 接口logger.ts
:具有每日轮换和调试支持的结构化日志记录index.ts
:服务器启动和环境配置server.test.ts
:所有功能的全面测试套件
开发
# 安装依赖项
npm install
# 构建项目
npm run build
# 在生产模式下启动服务器
node dist/index.js
# 使用 npm 脚本启动服务器
npm start
# 在开发模式下启动服务器,并自动重建
npm run dev
# 运行测试
npm test
开发脚本
以下 npm 脚本可用:
npm run build
:将 TypeScript 编译为 JavaScriptnpm start
:在生产模式下启动服务器npm run dev
:在开发模式下启动服务器,并自动重建npm test
:运行测试套件npm run lint
:运行 ESLint 进行代码质量检查npm run clean
:删除构建工件
测试
该项目包括一个全面的测试套件,涵盖:
- 工具注册和模式验证
- 数据库管理操作
- 连接字符串生成
- SQL 查询执行和错误处理
- 响应格式和错误情况
使用以下命令运行测试:
npm test
日志记录
服务器使用具有以下功能的结构化日志记录:
- 每日轮换日志文件
- 单独的调试日志
- 带有时间戳的 JSON 格式日志
- 用于开发的控制台输出
- 日志类别:info、error、debug、api、sql、startup
许可证
MIT 许可证 - 有关详细信息,请参阅 LICENSE。
相关链接
推荐服务器
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Playwright MCP Server
提供一个利用模型上下文协议的服务器,以实现类人浏览器的自动化,该服务器使用 Playwright,允许控制浏览器行为,例如导航、元素交互和滚动。
Apple MCP Server
通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。
contentful-mcp
在你的 Contentful Space 中更新、创建、删除内容、内容模型和资源。

Supabase MCP Server
一个模型上下文协议(MCP)服务器,它提供对 Supabase 管理 API 的编程访问。该服务器允许 AI 模型和其他客户端通过标准化的接口来管理 Supabase 项目和组织。
serper-search-scrape-mcp-server
这个 Serper MCP 服务器支持搜索和网页抓取,并且支持 Serper API 引入的所有最新参数,例如位置。
The Verge News MCP Server
提供从The Verge的RSS feed获取和搜索新闻的工具,允许用户获取今日新闻、检索过去一周的随机文章,以及在最近的Verge内容中搜索特定关键词。
MCP Server Trello
通过 Trello API 促进与 Trello 看板的交互,提供速率限制、类型安全、输入验证和错误处理等功能,以实现对卡片、列表和看板活动的无缝管理。
MCP DuckDB Knowledge Graph Memory Server
一个为 Claude 设计的记忆服务器,它使用 DuckDB 存储和检索知识图谱数据,从而增强了对话的性能和查询能力,并能持久保存用户信息。