这是一个用于 Nile 数据库平台的 Model Context Protocol (MCP) 服务器实现。该服务器允许 LLM 应用程序通过标准化接口与 Nile 平台进行交互。
安装稳定版:
npm install @niledatabase/nile-mcp-server
对于最新 alpha/预览版:
npm install @niledatabase/nile-mcp-server@alpha
这将安装 @niledatabase/nile-mcp-server 到你的 node_modules 文件夹中。例如: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
有几种方法可以启动服务器:
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 账户,点击左上角的工作区,选择你的工作区,并导航到左侧菜单的安全部分。
npm run build
{
"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 工作区 slugnpm run build
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 为实际的项目路径服务器支持两种操作模式:
默认模式使用标准输入/输出进行通信,使其与 Claude Desktop 和 Cursor 集成兼容。
Server-Sent Events (SSE) 模式启用实时、事件驱动的 HTTP 通信。
要启用 SSE 模式:
.env 文件中设置 MCP_SERVER_MODE=ssehttp://localhost:3000/ssehttp://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
name (字符串):数据库名称region (字符串):要么是 AWS_US_WEST_2 (俄勒冈) 或 AWS_EU_CENTRAL_1 (法兰克福)list-databases
get-database
name (字符串):数据库名称delete-database
name (字符串):要删除的数据库名称list-credentials
databaseName (字符串):数据库名称create-credential
databaseName (字符串):数据库名称databaseName (字符串):要查询的数据库名称query (字符串):要执行的 SQL 查询connectionString (字符串,可选):用于查询的现有连接字符串read-resource
databaseName (字符串):数据库名称resourceName (字符串):资源名称(表/视图)list-resources
databaseName (字符串):数据库名称list-tenants
databaseName (字符串):数据库名称create-tenant
databaseName (字符串):数据库名称tenantName (字符串):新租户的名称delete-tenant
databaseName (字符串):数据库名称tenantName (字符串):租户名称这里有一些可以在 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
所有工具返回响应的标准格式:
服务器处理各种错误场景:
如果 Claude 说无法访问工具:
npm run build)如果数据库创建失败:
如果凭证操作失败:
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:移除构建产物该项目包含一个全面