使用说明
CockroachDB MCP服务器
概述
CockroachDB MCP服务器是 自然语言界面 专为LLM和代理应用程序设计,用于管理、监视和查询CockroachDB中的数据。它与 MCP(模型内容协议) 客户端,如Claude Desktop或Cursor,使AI驱动的工作流能够直接与您的数据库交互。
目录
特性
- 自然语言查询:AI代理可以通过自然语言进行查询和交易。
- 集群监控:群集状态、节点运行状况、复制、慢速查询、争用、索引建议。
- 数据库操作:列出、创建、删除和切换数据库。
- 桌位管理:创建、删除、更改(添加/删除/重命名列)、截断、重命名、描述;大宗进口;索引、视图、模式。
- 查询引擎:具有json/csv/表输出、多语句事务、解释、历史的参数化SQL。
- 用户和权限管理:配置SQL用户和角色,授予/撤销权限。允许您在作用域非root用户下运行代理。
- 向量搜索:使用余弦/L2/内积度量进行相似性搜索(从索引操作类自动检测),C-SPANN ANN索引管理(v25.2+)。
- 作业管理:观察和控制异步作业(BACKUP、RESTORE、IMPORT、CHANGEFEED、SCHEMA CHANGE)。
- 备份与恢复:针对s3、gs、azure、nodelocal、userfile进行完整/数据库/表备份和还原。
- 统计:创建并显示优化器统计信息。
- 多区域:区域、生存目标、地点(REGIONAL_BY_ROW等)、区域配置。
- 更改订阅源:通过汇聚方案验证,将CDC管道连接到Kafka/webhook/云存储。
- 群集管理:集群设置,停用/排水(门控)。
- 诊断:跟踪跨度、语句诊断包。
- 安全第一:严格的标识符验证、参数化值、,
--read-only模式,明确confirm=True对于破坏性操作,编辑DSN响应。 - 无缝MCP集成:适用于任何MCP客户端(Claude Desktop、Cursor、VS代码副本、OpenAI代理SDK等)。
- 多个传输:stdio(默认)和可流式传输的HTTP。
工具
CockroachDB MCP服务器将Cockroach数据库作为一组MCP工具公开。请求从任何MCP客户端通过传输流到安全层,然后流到十三个工具类别之一,最后通过asyncpg连接池流到CockroachDB。
flowchart LR
subgraph Clients["MCP Clients"]
direction TB
C1["Claude Desktop"]
C2["Cursor"]
C3["VS Code Copilot"]
C4["OpenAI Agents SDK"]
C5["Augment"]
end
subgraph Transport["Transport"]
direction TB
T1["stdio"]
T2["streamable HTTP"]
end
subgraph Server["CockroachDB MCP Server (FastMCP)"]
direction TB
subgraph Safety["Safety Layer"]
direction TB
S1["Identifier validation<br/>(strict regex)"]
S2["Parameterized values<br/>($1, $2, ...)"]
S3["--read-only gate"]
S4["--allow-destructive<br/>+ confirm=True"]
S5["DSN redaction"]
end
subgraph Tools["Tool Categories (13)"]
direction TB
subgraph Obs["Observe & Diagnose"]
O1["Cluster Monitoring"]
O2["Diagnostics"]
O3["Statistics"]
end
subgraph Data["Data & Schema"]
D1["Database Operations"]
D2["Table Management"]
D3["Query Engine"]
D4["Vector Search (C-SPANN)"]
end
subgraph Ops["Data Movement"]
P1["Job Management"]
P2["Backup & Restore"]
P3["Changefeeds (CDC)"]
end
subgraph Adm["Admin & Topology"]
A1["User & Privilege Management"]
A2["Multi-Region"]
A3["Cluster Admin"]
end
end
Pool["asyncpg connection pool"]
end
DB[("CockroachDB<br/>single- or multi-region cluster")]
Clients --> Transport
Transport --> Safety
Safety --> Tools
Tools --> Pool
Pool --> DB
这些工具按关注点分为十三类。每个书写工具都由 --read-only每种破坏性工具都需要 --allow-destructive 加上每次通话的费用 confirm=True 参数;看 安全模型 部分。
集群监控
目的: 提供用于监视和管理CockroachDB集群的工具。
摘要:
- 获取群集运行状况和节点状态。
- 显示当前正在运行的查询。
- 分析查询性能统计数据。
- 检索表或整个数据库的复制和分发状态。
- 通过可选的关键字过滤获得查询执行见解。
- 使用可选的关键字过滤从语句统计中查找慢速查询。
- 通过可选的关键字过滤获得交易执行见解。
- 使用可选的表筛选查看争用事件。
- 从查询洞察中获取索引建议。
数据库操作
目的: 处理数据库级操作和连接管理。
摘要:
- 连接到CockroachDB数据库。
- 列出、创建、删除和切换数据库。
- 获取连接状态和活动会话。
- 检索数据库设置。
桌位管理
目的: 提供用于管理CockroachDB中的表、索引、视图、模式和关系的工具。
摘要:
- 创建、删除、描述、重命名和截断表(破坏性操作门控)。
alter_table_add_column,alter_table_drop_column,alter_table_rename_column.- 将数据批量导入到表中(CSV/Avro来自s3/gs/azure/http(s))。
- 管理索引(创建/删除)。
- 管理视图(创建/删除、列表)。
- 管理架构(
list_schemas,create_schema,drop_schema). - 列出表格和表格关系;分析模式结构和元数据。
查询引擎
目的: 执行和管理SQL查询和事务。
摘要:
- 使用格式化选项(JSON、CSV、表)执行SQL查询。
- 运行多对账单交易。
- 解释优化的查询计划。
- 跟踪和检索查询历史记录。
用户和权限管理
目的: 管理SQL用户、角色和权限。从管理代理使用此功能 配置代理自己的作用域(非root)用户。
摘要:
list_users,create_user,drop_user,alter_user_password.create_role,drop_role,grant_role,revoke_role.show_grants,grant_privileges,revoke_privileges.
特权针对满配主义者进行验证(SELECT, INSERT, UPDATE,
DELETE, ALL, BACKUP, RESTORE, MODIFYCLUSTERSETTING, ...).标识符
使用与其他地方相同的严格正则表达式。
向量搜索
目的: 使用CockroachDB的相似性运算符(v25.2+)搜索VECTOR列 管理C-SPANN ANN索引。
摘要:
vector_similarity_search与metric的cosine(默认),l2,ip, 或auto(与现有索引操作类匹配)。退货distance和一个 衍生的similarity现场。create_cspann_index使用公制→ 操作类映射 (vector_cosine_ops/vector_l2_ops/vector_ip_ops).drop_cspann_index(破坏性)。
查询向量始终作为 $1::VECTOR 参数;标识符与
optional where 子句值被验证。对于标准化嵌入(例如。
Takara DS1、OpenAI文本嵌入-3)所有三个指标的排名相同;这个
默认 cosine 是最安全的,因为它忽略了震级。
作业管理
目的: 观察和控制长时间运行的CockroachDB作业(BACKUP、RESTORE、IMPORT、, 模式更改、CHANGEFEED)。
摘要:
list_jobs(按状态和类型过滤),get_job_status.pause_job,resume_job,cancel_job(破坏性)。
备份与恢复
目的: 进行并恢复群集、数据库和表备份。
摘要:
create_backup到s3/gs/azure/nodelocal/userfile目标。list_backups枚举存储URI处的备份。restore_backup(破坏性)可选new_db_name.list_scheduled_backups.
URI方案根据满列表进行验证;标识符目标是 标识符已验证。
统计
目的: 计算并检查基于成本的优化器所依赖的表统计信息。
摘要:
create_statistics(创建统计数据)。show_statistics(显示表中的统计数据)。
多区域
目的: 配置多区域行为:区域、生存目标、表位置、, 区域配置。
摘要:
show_regions,show_database_regions.add_database_region,drop_database_region(破坏性)。set_survival_goal(ZONE或REGION).set_table_locality(REGIONAL,REGIONAL_BY_ROW,REGIONAL_BY_TABLE,GLOBAL).show_zone_config用于数据库/表/索引。
更改订阅源
目的: 设置和操作CDC到Kafka、webhooks或云存储的管道。
摘要:
create_changefeed使用sink方案验证(kafka、webhook http(s)、s3、, gs、azure blob、外部、null)、JSON或Avro格式、信封选择。list_changefeeds,pause_changefeed,resume_changefeed.cancel_changefeed(破坏性)。
群集管理
目的: 群集范围的管理:群集设置和节点生命周期。
摘要:
show_cluster_setting,set_cluster_setting,reset_cluster_setting(破坏性)。设置名称将根据严格的正则表达式进行验证。decommission_node,drain_node请注意,SQL启动了停用 仅标记意图;对于整个生命周期,请使用cockroach nodeCLI。
诊断
目的: 检查跟踪跨度和请求语句诊断包。
摘要:
get_recent_traces来自crdb_internal.cluster_inflight_traces.list_statement_diagnostics_requests.request_statement_diagnostics用于声明指纹。
安装
CockroachDB MCP服务器支持 stdio 运输 和那个 streamable-http 运输。
快速开始使用uvx
使用CockroachDB MCP服务器的最简单方法是 uvx,这允许您直接从GitHub(从分支或使用标记的版本)运行它。建议使用带标签的版本。这 main 分支正在积极开发中,可能包含突破性的变化。例如,您可以执行以下命令来运行 0.1.0 释放:
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git@0.1.0 cockroachdb-mcp-server --url postgresql://localhost:26257/defaultdb
请查看最新版本的发行说明 发布 部分。 下面提供了其他示例。
# Run with CockroachDB URI
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server --url postgresql://localhost:26257/defaultdb
# Run with individual parameters
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server --host localhost --port 26257 --database defaultdb --user root --password mypassword
# See all options
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server --help
# Run with streamable HTTP transport
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server \
--url postgresql://localhost:26257/defaultdb \
--transport http \
--http-host 0.0.0.0 \
--http-port 8000 \
--http-path /mcp
开发安装
对于开发,或者如果您更喜欢克隆存储库:
# Clone the repository
git clone https://github.com/amineelkouhen/mcp-cockroachdb.git
cd mcp-cockroachdb
# Install dependencies using uv
uv venv
source .venv/bin/activate
uv sync
# Run with CLI interface
uv run cockroachdb-mcp-server --help
# Or run the main file directly (uses environment variables)
uv run src/main.py
克隆存储库、安装依赖项并验证可以运行服务器后,您可以配置Claude Desktop或任何其他MCP客户端直接使用此MCP服务器运行主文件(它使用环境变量)。这通常是开发的首选。 以下示例适用于Claude Desktop,但同样适用于任何其他MCP客户端。
- 指定您的CockroachDB凭据和TLS配置
- 取回您的
uv命令完整路径(例如。which uv) - 编辑
claude_desktop_config.json配置文件 -在MacOS上~/Library/Application Support/Claude/
{
"mcpServers": {
"cockroach": {
"command": "<full_path_uv_command>",
"args": [
"--directory",
"<your_mcp_server_directory>",
"run",
"src/main.py"
],
"env": {
"CRDB_HOST": "<your_cockroachdb_hostname>",
"CRDB_PORT": "<your_cockroachdb_port>",
"CRDB_DATABASE": "<your_cockroach_database>",
"CRDB_USERNAME": "<your_cockroachdb_user>",
"CRDB_PWD": "<your_cockroachdb_password>",
"CRDB_SSL_MODE": "disable|allow|prefer|require|verify-ca|verify-full",
"CRDB_SSL_CA_PATH": "<your_cockroachdb_ca_path>",
"CRDB_SSL_KEYFILE": "<your_cockroachdb_keyfile_path>",
"CRDB_SSL_CERTFILE": "<your_cockroachdb_certificate_path>",
}
}
}
}
您可以通过跟踪日志文件来解决问题。
tail -f ~/Library/Logs/Claude/mcp-server-cockroach.log
使用Docker Compose(本地开发)
对于本地开发和测试,请使用提供的 docker-compose.yaml 启动CockroachDB和MCP服务器:
# Start CockroachDB and MCP server
docker compose up -d
# The MCP server is available at http://localhost:8000/mcp/
# CockroachDB UI is available at http://localhost:8080
# View logs
docker compose logs -f mcp-server
# Stop and clean up
docker compose down -v
使用Docker
您可以使用此服务器的停靠部署。您可以建立自己的形象或使用官方 CockroachDB MCP Docker 图像。
如果你想构建你的镜像,CockroachDB MCP服务器提供了一个Dockerfile。使用以下命令构建此服务器的映像:
docker build -t mcp-cockroachdb .
最后,配置客户端以在启动时创建容器。下面提供了一个Claude Desktop的示例。编辑 claude_desktop_config.json 并添加:
{
"mcpServers": {
"cockroach": {
"command": "docker",
"args": ["run",
"--rm",
"--name",
"cockroachdb-mcp-server",
"-e", "CRDB_HOST=<cockroachdb_host>",
"-e", "CRDB_PORT=<cockroachdb_port>",
"-e", "CRDB_DATABASE=<cockroachdb_database>",
"-e", "CRDB_USERNAME=<cockroachdb_user>",
"mcp-cockroachdb"]
}
}
}
要使用 CockroachDB MCP Docker image,只需替换您的图像名称(mcp-cockroachdb 在上述示例中) mcp/cockroachdb.
作为MCPB捆绑包(Smithery/Claude Desktop)
存储库提供 2甲4氯丁酸 舱单下 mcpb/manifest.json.MCPB(.mcpb)是一个单文件存档,客户端如Claude Desktop,目录如 铁匠铺 可以作为本地stdio服务器安装,通过UI提示用户输入连接详细信息,而不是手动编辑JSON。
舱单上写着六 user_config 领域: url (标记 sensitive,因此客户端将其存储在OS密钥链中,而不是明文配置中), read_only (默认值 true), allow_destructive (默认值 false),可选 ssl_ca_cert / ssl_cert / ssl_key 文件拾取器。值通过env变量传递给服务器(CRDB_URL, MCP_READ_ONLY, MCP_ALLOW_DESTRUCTIVE, CRDB_SSL_*).
构建捆绑包:
npm install -g @anthropic-ai/mcpb
cp mcpb/manifest.json ./manifest.json
mcpb pack . cockroachdb-mcp-server.mcpb
在Claude Desktop中本地安装: 双击结果 .mcpb 文件。Claude Desktop将显示基于以下内容构建的配置表单 user_config.
发布到Smithery:
smithery mcp publish ./cockroachdb-mcp-server.mcpb -n amineelkouhen/cockroachdb-mcp-server
配置
CockroachDB MCP服务器可以通过两种方式配置:通过命令行参数或通过环境变量。 优先级为:CLI参数>环境变量>默认值。
通过命令行参数进行配置
使用CLI界面时,可以使用命令行参数配置服务器:
# Basic CockroachDB connection
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server \
--host localhost \
--port 26257 \
--db defaultdb \
--user root \
--password mypassword
# Using CockroachDB URI (simpler)
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server \
--url postgresql://root@localhost:26257/defaultdb
# SSL connection
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server \
--url postgresql://user:pass@cockroach.example.com:26257/defaultdb?sslmode=verify-full&sslrootcert=path/to/ca.crt&sslcert=path/to/client.username.crt&sslkey=path/to/client.username.key
# See all available options
uvx --from git+https://github.com/amineelkouhen/mcp-cockroachdb.git cockroachdb-mcp-server --help
可用CLI选项:
--url-CockroachDB连接URI(postgresql://user:pass@主机:端口/db)--host-CockroachDB主机名--port-CockroachDB端口(默认值:26257)--db-CockroachDB数据库名称(默认值:defaultdb)--username-CockroachDB用户名(默认:root)--password-cockroachdb密码--ssl-mode-SSL模式-可能的值:禁用(默认)、允许、首选、要求、验证ca、验证完整--ssl-key-SSL客户端密钥文件的路径--ssl-cert-SSL客户端证书文件的路径--ssl-ca-cert-CA(根)证书文件的路径--transport-要使用的MCP传输(stdio或http)--http-host-绑定HTTP主机以进行流式HTTP传输--http-port-绑定HTTP端口以进行流式HTTP传输--http-path-用于流式HTTP传输的HTTP路径(例如。,/mcp)--stateless-http-启用无状态HTTP模式进行水平扩展--use-env-使用环境变量进行CockroachDB配置--read-only-拒绝所有DDL和编写工具;建议用于助手式部署--allow-destructive-需要drop_database,drop_table,drop_index,drop_view。即使有这面旗帜,每一次破坏性的召唤都必须包括confirm=True.--version-显示服务器版本并退出
安全模型
此服务器专为与LLM驱动的代理一起使用而设计,在这种情况下,对代理的快速注入攻击可能会变成SQL注入或数据破坏。内置三层防御:
- 标识符验证。 所有数据库、模式、表、列、索引和视图名称都会根据以下内容进行验证
^[A-Za-z_][A-Za-z0-9_]{0,62}$在插入SQL之前。 - 值始终是参数化的。 过滤器、限制和间隔使用asyncpg占位符(
$1,$2, ...).SQL中没有用户控制的值。 - 服务器级策略。
--read-only禁用所有DDL和写形工具(drop_*,create_*,execute_query插入/更新等。,bulk_import, ...).--allow-destructive是必需的drop_*工具。即便如此,来电者也必须通过confirm=True每次通话。- 回复中对DSN进行了编辑;密码从不出现在
connect()结果。
生产助理风格使用的推荐默认值: --read-only。对于需要管理架构的管理代理,请设置 --allow-destructive 但切勿禁用 confirm=True 要求。
日志记录
日志记录是通过环境变量配置的:
MCP_LOG_LEVEL(默认值INFO)--标准Python日志级别(调试/信息/警告/错误)。MCP_LOG_JSON=1--发出JSON结构化日志行,建议在与一起运行时使用--transport http.
连接池调优
CRDB_POOL_MIN(默认值1)CRDB_POOL_MAX(默认值10)CRDB_COMMAND_TIMEOUT(默认值60秒)
通过环境变量进行配置
如果需要,可以使用环境变量。为所有变量提供默认值。
| 名称 | 描述 | 默认值 |
|---|---|---|
CRDB_HOST |
CockroachDB节点或负载平衡器的主机名或地址。 | 127.0.0.1 |
CRDB_PORT |
CockroachDB节点或负载均衡器的SQL接口的端口号。 | 26257 |
CRDB_DATABASE |
用作当前数据库的数据库名称。 | defaultdb |
CRDB_USERNAME |
将拥有客户端会话的SQL用户。 | 根 |
CRDB_PWD |
用户的密码。 | 无 |
CRDB_SSL_MODE |
使用哪种类型的安全连接。 | 禁用 |
CRDB_SSL_CA_PATH |
当sslmode不存在时,CA证书的路径 disable。 |
无 |
CRDB_SSL_CERTFILE |
当sslmode不存在时,客户端证书的路径 disable。 |
无 |
CRDB_SSL_KEYFILE |
当sslmode不存在时,客户端私钥的路径 disable。 |
无 |
有几种方法可以设置环境变量:
- 使用a
.env文件: 放一个.env项目目录中的文件,其中包含每个环境变量的键值对。工具如python-dotenv,pipenv,以及uv可以在运行应用程序时自动加载这些变量。这是一种方便且安全的配置管理方式,因为它可以将敏感数据从shell历史记录和版本控制中删除(如果.env在...里.gitignore). 例如,创建一个.env包含以下内容的文件.env.example存储库中提供的文件:
cp .env.example .env
然后编辑 .env 设置CockroachDB配置的文件:
或者,
- 在Shell中设置变量: 在运行应用程序之前,您可以直接在shell中导出环境变量。例如:
export CRDB_URL= postgresql://root@127.0.0.1:26257/defaultdb
此方法有助于临时覆盖或快速测试。
集成
以下部分将介绍如何将此MCP服务器与OpenAI代理SDK等开发框架集成,或使用Claude Desktop、VS Code或Augment等工具进行集成。
OpenAI代理SDK
将此MCP服务器与OpenAI代理SDK集成。阅读 文件 了解更多关于SDK与MCP集成的信息。
安装Python SDK。
pip install openai-agents
配置OpenAI令牌:
export OPENAI_API_KEY="<openai_token>"
然后跑 应用.
python3 examples/cockroachdb_assistant.py
您可以使用以下工具对代理工作流进行故障排除 OpenAI仪表板.
增强
您可以通过JSON导入服务器,在Augment中配置CockroachDB MCP服务器:
{
"mcpServers": {
"CockroachDB MCP Server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/amineelkouhen/mcp-cockroachdb.git",
"cockroachdb-mcp-server",
"--url",
"postgresql://root@localhost:26257/defaultdb",
"--read-only"
]
}
}
}
Claude 桌面版
配置MCP客户端的最简单方法是使用 uvx.将以下JSON添加到您的 claude_desktop_config.json,记得提供完整的路径 uvx.
{
"mcpServers": {
"cockroach-mcp-server": {
"type": "stdio",
"command": "/opt/homebrew/bin/uvx",
"args": [
"--from", "git+https://github.com/amineelkouhen/mcp-cockroachdb.git",
"cockroachdb-mcp-server",
"--url", "postgresql://localhost:26257/defaultdb"
]
}
}
}
请按照提示并提供配置服务器和连接到CockroachDB的详细信息(例如,使用托管的Cockroach数据库实例)。
该程序将在 claude_desktop_config.json 配置文件。
VS代码与GitHub Copilot
要使用带有VS代码的CockroachDB MCP服务器,您必须启用 代理模式 工具。将以下内容添加到您的 settings.json:
{
"chat.agent.enabled": true
}
您可以使用以下命令启动GitHub所需版本的CockroachDB MCP服务器 uvx 通过将以下JSON添加到您的 settings.json:
"mcp": {
"servers": {
"CockroachDB MCP Server": {
"type": "stdio",
"command": "uvx",
"args": [
"--from", "git+https://github.com/amineelkouhen/mcp-cockroachdb.git",
"cockroachdb-mcp-server",
"--url", "postgresql://root@localhost:26257/defaultdb"
]
},
}
},
或者,您可以使用以下命令启动服务器 uv 并配置您的 mcp.json 或 settings.json这通常是开发所需要的。
{
"servers": {
"cockroach": {
"type": "stdio",
"command": "<full_path_uv_command>",
"args": [
"--directory",
"<your_mcp_server_directory>",
"run",
"src/main.py"
],
"env": {
"CRDB_HOST": "<your_cockroachdb_hostname>",
"CRDB_PORT": "<your_cockroachdb_port>",
"CRDB_DATABASE": "<your_cockroach_database>",
"CRDB_USERNAME": "<your_cockroachdb_user>",
"CRDB_PWD": "<your_cockroachdb_password>"
}
}
}
}
有关更多信息,请参阅 VS代码文档.
光标
阅读配置选项 这里 并使用此链接输入您的选择:
测试
单元测试
该存储库附带了一个pytest套件,涵盖了SQL标识符验证器、类型序列化器、DSN解析、URL帮助器、输出格式和策略门控(只读模式、破坏性操作门控、注入拒绝)。
uv sync --extra dev
uv run pytest -v
CI在Python 3.12和3.13上运行相同的套件。看 .github/workflows/test.yml.
代码检查
uv run ruff check src tests
uv run ruff format --check src tests
MCP检查员
对于实时服务器的交互式调试,请使用 MCP检查员:
npx @modelcontextprotocol/inspector uv run src/main.py
贡献
- 分叉存储库
- 创建新分支(
feature-branch) - 提交您的更改
- 推送到您的分支机构并提交拉取请求。
许可证
该项目根据 MIT 许可证.
质量徽章
联系
如果您有任何问题或需要支持,请随时通过以下方式与我们联系 GitHub Issues.