Nile MCP Server
Learn more ↗️
Discord 🔵 Website 🔵 Issues
](https://smithery.ai/server/@niledatabase/nile-mcp-server)
Nile数据库平台的模型上下文协议(MCP)服务器实现。该服务器允许LLM应用程序通过标准化接口与Nile平台进行交互。
特性
- 数据库管理:创建、列出、获取详细信息和删除数据库
- 凭据管理:创建并列出数据库凭据
- 区域管理:列出可用于创建数据库的区域
- SQL查询支持:直接在Nile数据库上执行SQL查询
- MCP协议支持:全面实施模型上下文协议
- 类型安全:用TypeScript编写,带有完整的类型检查
- 错误处理:全面的错误处理和用户友好的错误消息
- 测试覆盖率:使用Jest的全面测试套件
- 环境管理:从.env文件自动加载环境变量
- 输入验证:使用Zod进行基于模式的输入验证
安装
安装稳定版本:
npm install @niledatabase/nile-mcp-server对于最新的alpha/预览版本:
npm install @niledatabase/nile-mcp-server@alpha这将在node_modules文件夹中安装@niledatabase/nile-mcp服务器。例如:node_modules/@niledatabase/nile-mcp服务器/dist/
手动安装
# Clone the repository
git clone https://github.com/yourusername/nile-mcp-server.git
cd nile-mcp-server
# Install dependencies
npm install
# Build the project
npm run build其他mcp包管理器
- npx@michaellatman/mcp-get@latest安装@niledatabase/nile mcp服务器
启动服务器
有几种方法可以启动服务器:
- 直接节点执行:
node dist/index.js- 发展模式 (带自动重建功能):
npm run dev服务器将启动并监听MCP协议消息。您应该看到启动日志显示:
- 已加载环境变量
- 已创建服务器实例
- 工具已初始化
- 已建立传输连接
要停止服务器,请按 Ctrl+C.
验证服务器是否正在运行
当服务器成功启动时,您应该看到类似以下内容的日志:
[info] Starting Nile MCP Server...
[info] Loading environment variables...
[info] Environment variables loaded successfully
[info] Creating server instance...
[info] Tools initialized successfully
[info] Setting up stdio transport...
[info] Server started successfully如果您看到这些日志,则服务器已准备好接受来自Claude Desktop的命令。
配置
创建一个 .env 根目录中的文件,其中包含您的Nile凭据:
NILE_API_KEY=your_api_key_here
NILE_WORKSPACE_SLUG=your_workspace_slug若要创建Nile API密钥,请登录您的 尼罗河帐户,单击左上角的“工作区”,选择您的工作区,然后导航到左侧菜单中的“安全”部分。
与Claude Desktop一起使用
设置
- 安装 克劳德桌面 如果你还没有
- 构建项目:
npm run build- 打开克劳德桌面
- 前往“设置”>“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工作空间蛞蝓
与光标一起使用
设置
- 安装 光标 如果你还没有
- 构建项目:
npm run build- 打开的游标
- 转到设置(⌘,)>功能>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工作空间蛞蝓 - /absolute/path/to 与项目的实际路径
- 点击“保存”
- 您应该看到一个绿色指示灯,显示MCP服务器已连接
- 重新启动Cursor以使更改生效
服务器模式
服务器支持两种操作模式:
STDIO模式(默认)
默认模式使用标准输入/输出进行通信,使其与Claude Desktop和Cursor集成兼容。
SSE模式
服务器发送事件(SSE)模式支持通过HTTP进行实时、事件驱动的通信。
要启用SSE模式:
- 集
MCP_SERVER_MODE=sse在你的.env文件 - 服务器将启动HTTP服务器(默认端口3000)
- 连接到SSE端点:
http://localhost:3000/sse - 向以下对象发送命令:
http://localhost:3000/messages
使用curl的SSE示例用法:
# In terminal 1 - Listen for events
curl -N http://localhost:3000/sse
# In terminal 2 - Send commands
curl -X POST http://localhost:3000/messages \
-H "Content-Type: application/json" \
-d '{
"type": "function",
"name": "list-databases",
"parameters": {}
}'示例提示
在Cursor中设置MCP服务器后,您可以使用自然语言与Nile数据库进行交互。以下是一些示例提示:
数据库管理
Create a new database named "my_app" in AWS_US_WEST_2 region
List all my databases
Get details for database "my_app"
Delete database "test_db"创建表格
Create a users table in my_app database with columns:
- tenant_id (UUID, references tenants)
- id (INTEGER)
- email (VARCHAR, unique per tenant)
- name (VARCHAR)
- created_at (TIMESTAMP)
Create a products table in my_app database with columns:
- tenant_id (UUID, references tenants)
- id (INTEGER)
- name (VARCHAR)
- price (DECIMAL)
- description (TEXT)
- created_at (TIMESTAMP)查询数据
Execute this query on my_app database:
SELECT * FROM users WHERE tenant_id = 'your-tenant-id' LIMIT 5
Run this query on my_app:
INSERT INTO users (tenant_id, id, email, name)
VALUES ('tenant-id', 1, 'user@example.com', 'John Doe')
Show me all products in my_app database with price > 100模式管理
Show me the schema for the users table in my_app database
Add a new column 'status' to the users table in my_app database
Create an index on the email column of the users table in my_app可用工具
服务器提供以下工具用于与Nile数据库交互:
数据库管理
- 创建数据库
- 创建新的Nile数据库 - 参数: - name (string):数据库的名称 - region (string):要么 AWS_US_WEST_2 (俄勒冈州)或 AWS_EU_CENTRAL_1 (法兰克福) - 返回:数据库详细信息,包括ID、名称、地区和状态 - 示例:“在AWS_US_WEST_2中创建一个名为'my app'的数据库”
- 列表数据库
- 列出工作区中的所有数据库 - 无需参数 - 返回:数据库及其ID、名称、区域和状态的列表 - 示例:“列出我的所有数据库”
- 获取数据库
- 获取特定数据库的详细信息 - 参数: - name (string):数据库的名称 - 返回:详细的数据库信息,包括API主机和DB主机 - 示例:“获取数据库'my app'的详细信息”
- 删除数据库
- 删除数据库 - 参数: - name (string):要删除的数据库的名称 - 返回:确认消息 - 示例:“删除数据库‘我的应用’”
凭据管理
- 列出凭据
- 列出数据库的所有凭据 - 参数: - databaseName (string):数据库的名称 - 返回:包含ID、用户名和创建日期的凭据列表 - 示例:“列出数据库'my app'的凭据”
- 创建凭据
- 为数据库创建新凭据 - 参数: - databaseName (string):数据库的名称 - 返回:新的凭据详细信息,包括用户名和一次性密码 - 示例:“为数据库'my app'创建新凭据” - 注意:显示密码时保存密码,因为它不会再次显示
区域管理
- 列出地区
- 列出创建数据库的所有可用区域 - 无需参数 - 返回:可用AWS区域列表 - 示例:“哪些地区可用于创建数据库?”
SQL查询执行
- 执行sql
- 在Nile数据库上执行SQL查询 - 参数: - databaseName (string):要查询的数据库的名称 - query (string):要执行的SQL查询 - connectionString (string,可选):用于查询的预先存在的连接字符串 - 返回:查询结果格式为带有列标题和行数的markdown表 - 特征: - 自动凭证管理(如果未指定,则创建新凭证) - 与数据库的安全SSL连接 - 结果格式为markdown表 - 带有提示的详细错误消息 - 支持使用现有连接字符串 - 示例:“在数据库'my app'上执行SELECT\*FROM用户LIMIT 5”
资源管理
- 读取资源
- 读取数据库资源(表、视图等)的模式信息 - 参数: - databaseName (string):数据库的名称 - resourceName (string):资源的名称(表/视图) - 返回:详细的架构信息,包括: - 列名和类型 - 主键和索引 - 外键关系 - 列描述和约束 - 示例:“在我的应用程序中显示用户表的架构”
- 列出资源
- 列出数据库中的所有资源(表、视图) - 参数: - databaseName (string):数据库的名称 - 返回:所有资源及其类型的列表 - 示例:“列出我的应用数据库中的所有表”
租户管理
- 列出租户
- 列出数据库中的所有租户 - 参数: - databaseName (string):数据库的名称 - 返回:租户列表及其ID和元数据 - 示例:“显示我的应用程序数据库中的所有租户”
- 创建租户
- 在数据库中创建新租户 - 参数: - databaseName (string):数据库的名称 - tenantName (string):新租户的名称 - 返回:新租户详细信息,包括ID - 示例:“在我的应用程序中创建一个名为‘acme corp’的租户”
- 删除租户
- 删除数据库中的租户 - 参数: - databaseName (string):数据库的名称 - tenantName (string):租户的名称 - 返回:如果租户被删除,则成功 - 示例:“在我的应用程序中删除名为‘acme corp’的租户”
示例用法
以下是您可以在Claude Desktop中使用的一些示例命令:
# Database Management
Please create a new database named "my-app" in the AWS_US_WEST_2 region.
Can you list all my databases?
Get the details for database "my-app".
Delete the database named "test-db".
# Connection String Management
Get a connection string for database "my-app".
# Connection string format: postgres://:
@.db.thenile.dev:5432/
# Example: postgres://cred-123:password@us-west-2.db.thenile.dev:5432/my-app
# SQL Queries
Execute SELECT * FROM users LIMIT 5 on database "my-app"
Run this query on my-app database: SELECT COUNT(*) FROM orders WHERE status = 'completed'
Using connection string "postgres://user:pass@host:5432/db", execute this query on my-app: SELECT * FROM products WHERE price > 100响应格式
所有工具都以标准格式返回响应:
- 成功响应包括相关数据和确认消息
- 错误响应包括详细的错误消息和HTTP状态代码
- SQL查询结果的格式为markdown表
- 所有回复均已格式化,便于在Claude Desktop中阅读
错误处理
服务器处理各种错误情况:
- API凭据无效
- 网络连接问题
- 数据库名称或区域无效
- 缺少必要参数
- 数据库操作失败
- SQL语法错误及有用提示
- 利率限制和API限制
故障排除
- 如果克劳德说它无法访问这些工具:
- 检查配置中的服务器路径是否正确 - 确保项目建成(npm run build) - 验证API密钥和工作区段塞是否正确 - 重新启动克劳德桌面
- 如果数据库创建失败:
- 检查您的API密钥权限 - 确保数据库名称在您的工作区中是唯一的 - 验证该区域是否为支持的选项之一
- 如果凭据操作失败:
- 验证数据库是否存在并且处于就绪状态 - 检查您的API密钥是否具有必要的权限
发展
项目结构
nile-mcp-server/
├── src/
│ ├── server.ts # MCP server implementation
│ ├── tools.ts # Tool implementations
│ ├── types.ts # Type definitions
│ ├── logger.ts # Logging utilities
│ ├── index.ts # Entry point
│ └── __tests__/ # Test files
│ └── server.test.ts
├── dist/ # Compiled JavaScript
├── logs/ # Log files directory
├── .env # Environment configuration
├── .gitignore # Git ignore file
├── package.json # Project dependencies
└── tsconfig.json # TypeScript configuration关键文件
server.ts:主服务器实现,包括工具注册和传输处理tools.ts:执行所有数据库操作和SQL查询types.ts:用于数据库操作和响应的TypeScript接口logger.ts:结构化日志记录,支持每日轮换和调试index.ts:服务器启动和环境配置server.test.ts:所有功能的全面测试套件
发展
# Install dependencies
npm install
# Build the project
npm run build
# Start the server in production mode
node dist/index.js
# Start the server using npm script
npm start
# Start in development mode with auto-rebuild
npm run dev
# Run tests
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格式日志
- 控制台输出用于开发
- 日志类别:信息、错误、调试、api、sql、启动
许可证
MIT许可证-请参阅 许可证 了解详情。
