使用说明
MCP RethinkDB服务器
一种模型上下文协议(MCP)服务器,提供对RethinkDB数据库的访问。该服务器使Claude等AI助手能够查询、探索和写入RethinkDB数据。
特性
- 九种可用工具:
list_databases-列出所有数据库list_tables-列出数据库中的表query_table-使用过滤、排序、限制和执行时间查询数据table_info-获取表元数据(主键、索引、文档计数)write_data-插入、更新、追加销售或删除文档aggregate-计数、总和、平均值、最小值、最大值和组聚合advanced_query-eq_join、between、contains和map操作schema_inspector-从采样文档推断字段类型和关系index_info-查看二级索引详细信息和状态
- 易于集成 使用Claude Desktop和其他MCP客户端
- 安全连接 支持用户名/密码身份验证
- Docker支持 -Docker Hub上提供预构建映像
先决条件
- 达到1.23或更高 - 下载Go (从源头建设)
- RethinkDB -正在运行的实例(本地或远程)
- RethinkDB安装指南
- 默认连接:
localhost:28015
- MCP客户端 (测试可选):
- 克劳德桌面应用程序,或
- MCP检查员:
npx @modelcontextprotocol/inspector
安装
选项1:使用Docker(推荐)
docker pull finn13/mcp-rethinkdb-server
# Run with default settings (connects to localhost:28015)
docker run -e RETHINKDB_HOST=host.docker.internal finn13/mcp-rethinkdb-server
# Run with custom settings
docker run \
-e RETHINKDB_HOST=your-host \
-e RETHINKDB_PORT=28015 \
-e RETHINKDB_USER=admin \
-e RETHINKDB_PASSWORD=secret \
finn13/mcp-rethinkdb-server
选项2:从源代码构建
# Clone the repository
git clone https://github.com/finn13/mcp-rethinkdb-server.git
cd mcp-rethinkdb-server
# Install dependencies
go mod tidy
# Build the binary
go build -o mcp-rethinkdb-server .
配置
环境变量:
| 变量 | 默认值 | 描述 |
|---|---|---|
RETHINKDB_HOST |
localhost |
RethinkDB主机 |
RETHINKDB_PORT |
28015 |
RethinkDB端口 |
RETHINKDB_USER |
(无) | 可选用户名 |
RETHINKDB_PASSWORD |
(无) | 可选密码 |
用法
Claude桌面配置
添加到您的Claude Desktop配置中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
使用Docker镜像(推荐):
{
"mcpServers": {
"rethinkdb": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"RETHINKDB_HOST=host.docker.internal",
"finn13/mcp-rethinkdb-server"
]
}
}
}
使用本地二进制:
{
"mcpServers": {
"rethinkdb": {
"command": "/absolute/path/to/mcp-rethinkdb-server",
"env": {
"RETHINKDB_HOST": "localhost",
"RETHINKDB_PORT": "28015"
}
}
}
}
重要:更新配置后,完全重新启动Claude Desktop。
VS代码配置
安装 GitHub Copilot 扩展(v1.99+),其中包括MCP支持。
添加到您的VS代码 settings.json (Cmd+Shift+P → “打开用户设置JSON”):
使用Docker镜像(推荐):
{
"mcp": {
"servers": {
"rethinkdb": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"RETHINKDB_HOST=host.docker.internal",
"finn13/mcp-rethinkdb-server"
]
}
}
}
}
使用本地二进制:
{
"mcp": {
"servers": {
"rethinkdb": {
"command": "/absolute/path/to/mcp-rethinkdb-server",
"env": {
"RETHINKDB_HOST": "localhost",
"RETHINKDB_PORT": "28015"
}
}
}
}
}
重要:更新设置后,运行 MCP: Restart Server 从命令选项板。
Zed编辑器配置
添加到您的Zed settings.json (Cmd+, 或 ~/.config/zed/settings.json):
使用Docker镜像(推荐):
{
"context_servers": {
"rethinkdb": {
"command": {
"path": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"RETHINKDB_HOST=10.20.1.10",
"finn13/mcp-rethinkdb-server"
]
}
}
}
}
使用本地二进制:
{
"context_servers": {
"rethinkdb": {
"command": {
"path": "/absolute/path/to/mcp-rethinkdb-server",
"env": {
"RETHINKDB_HOST": "localhost",
"RETHINKDB_PORT": "28015"
}
}
}
}
}
重要:更新设置后,重新启动Zed或运行 agent: restart context server 从命令选项板。
直接运行
# Default connection (localhost:28015)
./mcp-rethinkdb-server
# Custom host/port
RETHINKDB_HOST=myhost RETHINKDB_PORT=28015 ./mcp-rethinkdb-server
# With authentication
RETHINKDB_HOST=myhost RETHINKDB_USER=admin RETHINKDB_PASSWORD=secret ./mcp-rethinkdb-server
工具示例
列表_数据库
列出RethinkDB中的所有数据库。
{
"name": "list_databases"
}
答复:
{
"databases": ["test", "production", "analytics"]
}
list_tables
列出特定数据库中的所有表。
{
"name": "list_tables",
"arguments": {
"database": "test"
}
}
答复:
{
"database": "test",
"tables": ["users", "orders", "products"]
}
查询表
使用可选的筛选、排序和限制从表中查询数据。
{
"name": "query_table",
"arguments": {
"database": "test",
"table": "users",
"filter": {"status": "active"},
"limit": 50,
"order_by": "created_at"
}
}
答复:
{
"database": "test",
"table": "users",
"count": 50,
"results": [...]
}
参数:
database(必填):数据库名称table(必填):表名filter(可选):筛选匹配文档的对象limit(可选):最大结果(默认值:100,最大值:1000)order_by(可选):排序依据的字段
table_info
获取表元数据,包括主键、索引和文档计数。
{
"name": "table_info",
"arguments": {
"database": "test",
"table": "users"
}
}
答复:
{
"database": "test",
"table": "users",
"primary_key": "id",
"indexes": ["email", "created_at"],
"doc_count": 15420
}
write_data
将数据写入表。支持 insert, update, upsert,以及 delete 操作。数据可以是单个文档或一组文档。
{
"name": "write_data",
"arguments": {
"database": "test",
"table": "users",
"operation": "insert",
"data": {"id": "abc123", "name": "Alice", "status": "active"}
}
}
答复:
{
"database": "test",
"table": "users",
"operation": "insert",
"inserted": 1,
"replaced": 0,
"unchanged": 0,
"deleted": 0,
"errors": 0
}
参数:
database(必填):数据库名称table(必填):表名data(必填):单个文档或一组文档。对于delete,仅包含以下内容的文档id按主键删除;任何其他字段都用作匹配多个文档的过滤器。operation(可选):其中之一insert(默认),update,upsert,delete
操作:
| 操作 | 行为 |
|---|---|
insert |
插入文件;重复密钥错误 |
update |
插入冲突策略 update --将字段合并到现有文档中 |
upsert |
插入冲突策略 replace --如果缺失则创建,如果存在则完全替换 |
delete |
按主键删除(当数据只有 id)或通过过滤器(任何其他字段) |
发展
项目结构
mcp-rethinkdb-server/
├── main.go # Entry point: config, connection, MCP wiring
├── server/
│ ├── server.go # RethinkDBServer struct with all tool handlers
│ └── server_test.go # Integration tests (TDD)
├── docker-compose.yml # Test RethinkDB instance (port 28016)
└── Dockerfile
运行测试
测试需要RethinkDB实例。从Docker Compose开始:
docker compose up -d
go test ./server/ -v
测试套件使用端口 28016 默认情况下,为了避免与其他正在运行的RethinkDB实例发生冲突。用环境变量覆盖:
RETHINKDB_TEST_HOST=localhost RETHINKDB_TEST_PORT=28016 go test ./server/ -v
测试自动创建和删除 mcp_test_db 数据库。
发布新的Docker镜像
仅限维护人员 --需要推送访问
finn13/mcp-rethinkdb-server在Docker Hub上。
1.提交并标记发布:
git add -A
git commit -m "feat: describe your changes"
git push origin master
git tag v1.x.0
git push origin v1.x.0
2.登录Docker Hub:
docker login -u finn13
3.打造多拱门形象并推送:
docker buildx build \
--builder multiarch-builder \
--platform linux/amd64,linux/arm64 \
-t finn13/mcp-rethinkdb-server:1.x.0 \
-t finn13/mcp-rethinkdb-server:latest \
--push .
这 --push 标志构建两者 amd64 和 arm64 分层并将其作为单个多拱形清单进行推送。如果 multiarch-builder 尚未设置:
docker buildx create --name multiarch-builder --use
docker buildx inspect --bootstrap
使用MCP检查员进行测试
go build -o mcp-rethinkdb-server .
npx @modelcontextprotocol/inspector ./mcp-rethinkdb-server
打开浏览器到显示的URL(通常http://localhost:5173)与服务器交互。
路线图
高级查询支持
- [x] 连接:支持
eqJoin通过操作advanced_query工具 - [x] 聚合:
group,ungroup,count,sum,avg,min,max通过aggregate工具 - [x] 映射:支持
map(田间采摘)通过advanced_query工具 - [x] 高级过滤:支持
between,contains通过advanced_query工具 - [ ] 地理空间查询:支持
getIntersecting地理空间索引
其他工具
- [x] 写入数据:通过插入、更新、追加销售和删除文档
write_data工具 - [x] 架构检查器:通过以下方式探索表模式
schema_inspector工具(示例文档、推断字段类型、报告主键和索引) - [x] 索引管理:通过查看索引详细信息
index_info工具(就绪状态、多、地理、过时标志) - [ ] 查询生成器:交互式查询构造和验证
- [ ] 更改订阅源:实时数据监控(只读订阅)
性能和特点
- [ ] 查询缓存:缓存频繁访问的查询
- [ ] 并行查询:支持多个同时查询
- [ ] 结果流:高效地流式传输大型结果集
- [x] 查询统计信息:返回的执行时间
query_table答复(execution_time_ms)
开发者体验
- [ ] 互动示例:更全面的示例查询
- [ ] 查询验证:更好的错误消息和查询语法验证
- [ ] 连接池:改进了连接管理
- [ ] TLS/SSL支持:与RethinkDB的安全连接
故障排除
连接问题
问题:服务器无法连接到RethinkDB 解决方案:
- 验证RethinkDB是否正在运行:
rethinkdb --version - 检查主机和端口设置
- 手动测试连接
Claude桌面集成
问题:服务器未显示在Claude中 解决方案:
- 验证配置中的path/docker命令是否正确
- 完全重新启动克劳德桌面
- 检查克劳德日志:
~/Library/Logs/Claude/(macOS)
问题:执行二进制文件时权限被拒绝 解决方案:
chmod +x /path/to/mcp-rethinkdb-server
查询限制
问题:查询返回的结果比预期的少 解决方案:
- 默认限制为100个文档
- 最大限制为1000份文件
- 使用
limit要调整的参数
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支:
git checkout -b feature-name - 通过测试进行更改:
go test ./... - 承诺:
git commit -am 'Add feature' - 推:
git push origin feature-name - 创建拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。