MCP RethinkDB服务器
 ](https://golang.org/dl/)  ](https://hub.docker.com/r/finn13/mcp-rethinkdb-server)
一种模型上下文协议(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代码配置
安装 扩展(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.02.登录Docker Hub:
docker login -u finn133.打造多拱门形象并推送:
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许可证获得许可-请参阅 许可证 文件以获取详细信息。
