Couchbase
官方使用自然语言与存储在Couchbase集群中的数据进行交互。
你可以用 Couchbase MCP 做什么?
让您的助手检查集群健康状况、探索模式、运行SQL++查询,并管理Couchbase集群中的文档。
- 运行SQL++查询 — 让您的助手使用
run_sql_plus_plus_query查询数据,自动限定在某个桶和集合范围内。 - 探索模式 — 通过
get_buckets_in_cluster和get_schema_for_collection发现桶、作用域和集合。 - 管理文档 — 使用
get_document_by_id和upsert_document_by_id按ID读取、更新或删除文档。 - 检查集群健康 — 使用
test_cluster_connection和get_cluster_health_and_services验证连接和服务状态。 - 优化索引 — 通过
list_indexes和get_index_advisor_recommendations列出索引并获取建议。 - 分析查询性能 — 使用
get_longest_running_queries和get_queries_using_primary_index查找慢查询或非选择性查询。
文档
Couchbase MCP Server
Couchbase MCP Server 是一个自托管的 MCP 服务器,允许 AI 代理连接并交互 Couchbase 集群中的数据,无论是在 Capella 上托管还是自管理。它提供跨类别的工具,包括集群健康、数据模式、键值、查询和性能——并通过只读模式和细粒度工具禁用提供安全控制。它支持 STDIO 和 Streamable HTTP 传输。
Couchbase MCP 服务器以 Python 包索引(PyPI)包的形式分发,也可通过 Docker 分发。 通过许可 Couchbase AI Data Plane 可获得 Couchbase MCP 服务器的企业支持,该许可还包含 Couchbase Agent Memory 和 Couchbase Agent Catalog 的使用权和企业支持。
如需完整文档,请访问 mcp-server.couchbase.com。
功能/工具
集群设置与健康工具
| 工具名称 | 描述 |
|---|---|
get_server_configuration_status | 在不连接集群的情况下获取服务器状态和配置——报告只读模式、已禁用/需要确认的工具、OAuth 设置以及解析后的日志配置 |
test_cluster_connection | 通过连接集群检查集群凭据 |
get_cluster_health_and_services | 获取集群健康状态和所有正在运行的服务的列表 |
数据模型与模式发现工具
| 工具名称 | 描述 |
|---|---|
get_buckets_in_cluster | 获取集群中所有桶的列表 |
get_scopes_in_bucket | 获取指定桶中所有作用域的列表 |
get_collections_in_scope | 获取指定作用域和桶中所有集合的列表。请注意,此工具要求集群具有查询服务。 |
get_scopes_and_collections_in_bucket | 获取指定桶中所有作用域和集合的列表 |
get_schema_for_collection | 获取集合的结构 |
create_scope | 在桶中创建新的作用域(Couchbase Server 7.6+ 和 Capella)。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
create_collection | 在现有作用域中创建新的集合(Couchbase Server 7.6+ 和 Capella)。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
delete_scope | 从桶中删除作用域及其所有集合——永久操作。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
delete_collection | 从作用域中删除集合及其所有文档——永久操作。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
文档 KV 操作工具
| 工具名称 | 描述 |
|---|---|
get_document_by_id | 从指定的作用域和集合中按 ID 获取文档 |
lookup_subdocument | 按路径查找文档的部分内容(特定字段、存在性检查或数组/对象计数),而无需获取整个文档 |
upsert_document_by_id | 按 ID 将文档插入或更新到指定的作用域和集合。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
insert_document_by_id | 按 ID 插入新文档(如果文档已存在则失败)。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
replace_document_by_id | 按 ID 替换现有文档(如果文档不存在则失败)。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
delete_document_by_id | 从指定的作用域和集合中按 ID 删除文档。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
mutate_subdocument | 按路径修改现有文档的部分内容(插入或更新、插入、替换、移除、数组操作、计数器),而无需重写整个文档。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
查询与索引工具
| 工具名称 | 描述 |
|---|---|
list_indexes | 列出集群中所有索引及其定义,可按桶、作用域、集合和索引名称进行可选过滤。设置 return_raw_index_stats=true 以返回未处理的索引信息。 |
get_index_advisor_recommendations | 从 Couchbase 索引顾问获取针对给定 SQL++ 查询的索引建议,以优化查询性能 |
create_index | 在集合上创建标量(非向量)GSI 二级索引。默认延迟——之后调用 build_index 来构建它。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
build_index | 触发集合上所有延迟索引的构建。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
drop_index | 从集合中删除 GSI 索引(标量或向量)。当 CB_MCP_READ_ONLY_MODE=true 时默认禁用。 |
run_sql_plus_plus_query | 在指定的作用域上运行 SQL++ 查询。 查询会自动限定到指定的桶和作用域,因此请直接使用集合名称(例如, SELECT * FROM users 而不是 SELECT * FROM bucket.scope.users)。CB_MCP_READ_ONLY_MODE 默认情况下为 true,这意味着**所有写操作(KV、查询、作用域/集合管理和索引管理)**均被禁用。启用后,KV、集合管理和索引写入工具将不会加载,修改数据的 SQL++ 查询也将被阻止。 |
explain_sql_plus_plus_query | 为 SQL++ 查询生成并评估 EXPLAIN 计划。返回查询元数据、提取的计划和计划评估结果。 |
查询性能分析工具
| 工具名称 | 描述 |
|---|---|
get_longest_running_queries | 按平均服务时间获取运行时间最长的查询 |
get_most_frequent_queries | 获取执行最频繁的查询 |
get_queries_with_largest_response_sizes | 获取响应大小最大的查询 |
get_queries_with_large_result_count | 获取结果数最多的查询 |
get_queries_using_primary_index | 获取使用主索引的查询(潜在性能问题) |
get_queries_not_using_covering_index | 获取未使用覆盖索引的查询 |
get_queries_not_selective | 获取选择性差的查询(索引扫描返回的文档远多于最终结果) |
前提条件
- Python 3.10 或更高版本。
- 一个正在运行的 Couchbase 集群。最简单的入门方式是使用 Capella 免费层,它是 Couchbase 服务器的完全托管版本。您可以按照说明导入示例数据集之一或导入您自己的数据。
- 安装 uv 以运行服务器。
- 安装 MCP 客户端(例如 Claude Desktop)以将服务器连接到 Claude。说明针对 Claude Desktop 和 Cursor 提供。也可以使用其他 MCP 客户端。
配置
MCP 服务器可以从预构建的 PyPI 包或使用 uv 从源代码运行。
从 PyPI 运行
我们为 MCP 服务器发布了预构建的 PyPI 包。
使用预构建包为 MCP 客户端配置服务器
基本认证
{
"mcpServers": {
"couchbase": {
"command": "uvx",
"args": ["couchbase-mcp-server"],
"env": {
"CB_CONNECTION_STRING": "couchbases://connection-string",
"CB_USERNAME": "username",
"CB_PASSWORD": "password"
}
}
}
}
或
mTLS
{
"mcpServers": {
"couchbase": {
"command": "uvx",
"args": ["couchbase-mcp-server"],
"env": {
"CB_CONNECTION_STRING": "couchbases://connection-string",
"CB_CLIENT_CERT_PATH": "/path/to/client-certificate.pem",
"CB_CLIENT_KEY_PATH": "/path/to/client.key"
}
}
}
}
注意:如果客户端中已在运行其他 MCP 服务器,可以将其添加到现有的
mcpServers对象中。
从源代码运行
MCP 服务器可以使用此仓库从源代码运行。
将仓库克隆到本地机器
git clone https://github.com/couchbase/mcp-server-couchbase.git
使用源代码为 MCP 客户端配置服务器
这是 MCP 客户端(如 Claude Desktop、Cursor、Windsurf Editor)的通用配置。
{
"mcpServers": {
"couchbase": {
"command": "uv",
"args": [
"--directory",
"path/to/cloned/repo/mcp-server-couchbase/",
"run",
"src/mcp_server.py"
],
"env": {
"CB_CONNECTION_STRING": "couchbases://connection-string",
"CB_USERNAME": "username",
"CB_PASSWORD": "password"
}
}
}
}
注意:
path/to/cloned/repo/mcp-server-couchbase/应为本地机器上克隆仓库的路径。别忘了末尾的斜杠!
注意:如果客户端中已在运行其他 MCP 服务器,可以将其添加到现有的
mcpServers对象中。
MCP 服务器的附加配置
服务器可以使用环境变量或命令行参数进行配置:
| 环境变量 | CLI 参数 | 描述 | 默认值 |
|---|---|---|---|
CB_CONNECTION_STRING | --connection-string | 连接到 Couchbase 集群的连接字符串 | 必需 |
CB_USERNAME | --username | 用于基本认证、具有所需存储桶访问权限的用户名 | 必需(或需要客户端证书和密钥以用于 mTLS) |
CB_PASSWORD | --password | 用于基本认证的密码 | 必需(或需要客户端证书和密钥以用于 mTLS) |
CB_CLIENT_CERT_PATH | --client-cert-path | mTLS 认证的客户端证书文件路径 | 如果使用 mTLS 则为必需(或需要用户名和密码) |
CB_CLIENT_KEY_PATH | --client-key-path | mTLS 认证的客户端密钥文件路径 | 如果使用 mTLS 则为必需(或需要用户名和密码) |
CB_CA_CERT_PATH | --ca-cert-path | 如果服务器配置了自签名/不受信任的证书,则为 TLS 提供服务器根证书路径。如果连接到 Capella,则不需要此项 | |
CB_MCP_READ_ONLY_MODE | --read-only-mode | 阻止所有数据修改(KV、查询、作用域/集合管理和索引管理)。启用后,KV、集合管理和索引写入工具将不会被加载。 | true |
CB_MCP_TRANSPORT | --transport | 传输模式:stdio、http、sse | stdio |
CB_MCP_HOST | --host | HTTP/SSE 传输模式的主机 | 127.0.0.1 |
CB_MCP_PORT | --port | HTTP/SSE 传输模式的端口 | 8000 |
CB_MCP_DISABLED_TOOLS | --disabled-tools | 要禁用的工具(参见禁用工具) | 无 |
CB_MCP_CONFIRMATION_REQUIRED_TOOLS | --confirmation-required-tools | 需要通过 MCP 提示在执行前获得用户明确确认的工具(参见需要提示/确认的工具) | 无 |
CB_MCP_LOG_LEVEL | --log-level | MCP 服务器的日志级别:off、debug、info、warning、error(参见日志) | info |
CB_MCP_LOG_SINKS | --log-sinks | 逗号分隔的日志目标:stderr、file 或两者(参见日志) | stderr |
CB_MCP_LOG_FILE | --log-file | 各级别日志文件的基础路径(仅在启用 file 接收器时使用) | mcp_server.log |
CB_MCP_LOG_ROTATION_MAX_SIZE_MB | --log-rotation-max-size-mb | 每个日志文件轮转前的全局最大大小(以 MB 为单位),除非被覆盖,否则每个级别都继承该值。0 无效,将回退到默认值并发出启动警告 | 1(1 MB) |
CB_MCP_LOG_MAX_BYTES | --log-max-bytes | 已弃用 — 请使用 CB_MCP_LOG_ROTATION_MAX_SIZE_MB(MB)。全局轮转大小(以字节为单位),为向后兼容仍会生效;当同时设置 CB_MCP_LOG_ROTATION_MAX_SIZE_MB 时将被忽略 | 未设置 |
CB_MCP_LOG_ERROR_ROTATION_MAX_SIZE_MB | --log-error-rotation-max-size-mb | ERROR 日志文件的轮转大小(以 MB 为单位);覆盖 ERROR 的 CB_MCP_LOG_ROTATION_MAX_SIZE_MB | 继承 CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_WARNING_ROTATION_MAX_SIZE_MB | --log-warning-rotation-max-size-mb | WARNING 日志文件的轮转大小(以 MB 为单位);覆盖 WARNING 的 CB_MCP_LOG_ROTATION_MAX_SIZE_MB | 继承 CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_INFO_ROTATION_MAX_SIZE_MB | --log-info-rotation-max-size-mb | INFO 日志文件的轮转大小(以 MB 为单位);覆盖 INFO 的 CB_MCP_LOG_ROTATION_MAX_SIZE_MB | 继承 CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_DEBUG_ROTATION_MAX_SIZE_MB | --log-debug-rotation-max-size-mb | DEBUG 日志文件的轮转大小(以 MB 为单位);覆盖 DEBUG 的 CB_MCP_LOG_ROTATION_MAX_SIZE_MB | 继承 CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_RETENTION_BACKUP_COUNT | --log-retention-backup-count | 每个级别日志文件保留的轮转备份文件数(不包括活动文件),除非被覆盖,否则应用于每个级别。0 仅保留活动文件(参见日志) | 1 |
CB_MCP_LOG_ERROR_RETENTION_BACKUP_COUNT | --log-error-retention-backup-count | ERROR 日志文件保留的轮转备份数;覆盖 ERROR 的全局计数 | 继承 CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_LOG_WARNING_RETENTION_BACKUP_COUNT | --log-warning-retention-backup-count | WARNING 日志文件保留的轮转备份数;覆盖 WARNING 的全局计数 | 继承 CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_LOG_INFO_RETENTION_BACKUP_COUNT | --log-info-retention-backup-count | INFO 日志文件保留的轮转备份数;覆盖 INFO 的全局计数 | 继承 CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_LOG_DEBUG_RETENTION_BACKUP_COUNT | --log-debug-retention-backup-count | DEBUG 日志文件保留的轮转备份数;覆盖 DEBUG 的全局计数 | 继承 CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_OAUTH_JWT_JWKS_URI | --oauth-jwks-uri | 用于验证 bearer JWT 的身份提供商的 JWKS 端点。与 issuer 和 audience 一起设置时启用 OAuth(参见 OAuth 2.1 授权) | 无 |
CB_MCP_OAUTH_JWT_ISSUER | --oauth-issuer | 预期的 JWT iss 声明。启用 OAuth 所必需 | 无 |
CB_MCP_OAUTH_JWT_AUDIENCE | --oauth-audience | 预期的 JWT aud 声明。启用 OAuth 所必需 | 无 |
CB_MCP_OAUTH_JWT_ALGORITHM | --oauth-algorithm | JWT 签名算法:RS256/384/512、ES256/384/512、PS256/384/512 之一 | RS256 |
CB_MCP_OAUTH_MCP_BASE_URL | --oauth-mcp-base-url | 此服务器的公共基础 URL。设置后,将发布 RFC 9728 受保护资源元数据,以便支持 PRM 的客户端可以发现 IdP | 无 |
CB_MCP_OAUTH_SCOPE_READ_LABEL | --oauth-scope-read-label | 覆盖被视为"读取"访问的 OAuth 范围标签(在 PRM 中公布,并与令牌的 scope/scp 声明匹配)。当您的 IdP 无法发出规范形式时使用 | couchbase-mcp:read |
CB_MCP_OAUTH_SCOPE_WRITE_LABEL | --oauth-scope-write-label | 覆盖被视为"写入"访问的 OAuth 范围标签;与读取标签语义相同 | couchbase-mcp:write |
只读模式配置
CB_MCP_READ_ONLY_MODE 是控制写入操作的唯一开关:
- 当
true(默认)时:所有写入操作(KV、查询、作用域/集合管理和索引管理)均被禁用。KV 写入工具(upsert、insert、replace、delete、sub-document mutate)、作用域/集合管理写入工具(create_scope、create_collection、delete_scope、delete_collection)和索引写入工具(create_index、build_index、drop_index)不会被加载,也不会对 LLM 可用,并且修改数据或结构的 SQL++ 查询将被阻止。 - 当
false时:KV、作用域/集合管理和索引写入工具会被加载,并允许 SQL++ 数据/结构修改查询。
这是推荐的默认安全设置,可防止 LLM 意外修改数据。
注意:对于认证,您需要提供用户名和密码,或客户端证书和密钥路径。可选地,您可以指定用于验证服务器证书的 CA 根证书路径。 如果同时指定了客户端证书和密钥路径以及用户名和密码,则将使用客户端证书进行认证。
禁用工具
您可以禁用特定工具,以防止它们被加载并暴露给 MCP 客户端。被禁用的工具不会出现在工具发现中,也无法被 LLM 调用。
支持的格式
逗号分隔列表:
# Environment variable
CB_MCP_DISABLED_TOOLS="upsert_document_by_id, delete_document_by_id"
# Command line
uvx couchbase-mcp-server --disabled-tools upsert_document_by_id, delete_document_by_id
文件路径(每行一个工具名称):
# Environment variable
CB_MCP_DISABLED_TOOLS=disabled_tools.txt
# Command line
uvx couchbase-mcp-server --disabled-tools disabled_tools.txt
文件格式(例如 disabled_tools.txt):
# Write operations
upsert_document_by_id
delete_document_by_id
# Index advisor
get_index_advisor_recommendations
以 # 开头的行将被视为注释并被忽略。
MCP 客户端配置示例
使用逗号分隔列表:
{
"mcpServers": {
"couchbase": {
"command": "uvx",
"args": ["couchbase-mcp-server"],
"env": {
"CB_CONNECTION_STRING": "couchbases://connection-string",
"CB_USERNAME": "username",
"CB_PASSWORD": "password",
"CB_MCP_DISABLED_TOOLS": "upsert_document_by_id,delete_document_by_id"
}
}
}
}
使用文件路径(推荐用于大量工具):
{
"mcpServers": {
"couchbase": {
"command": "uvx",
"args": ["couchbase-mcp-server"],
"env": {
"CB_CONNECTION_STRING": "couchbases://connection-string",
"CB_USERNAME": "username",
"CB_PASSWORD": "password",
"CB_MCP_DISABLED_TOOLS": "/path/to/disabled_tools.txt"
}
}
}
}
重要安全说明
警告: 仅禁用工具并不能保证某些操作无法执行。底层数据库用户的 RBAC(基于角色的访问控制)权限才是权威的安全控制。
例如,即使您禁用了
upsert_document_by_id和delete_document_by_id,数据修改仍然可以通过run_sql_plus_plus_query工具使用 SQL++ DML 语句(INSERT、UPDATE、DELETE、MERGE)进行,除非:
CB_MCP_READ_ONLY_MODE设置为true(默认),或者- 数据库用户缺乏数据修改所需的 RBAC 权限
最佳实践: 始终在您的 Couchbase 用户凭据上配置适当的 RBAC 权限作为主要安全措施。将工具禁用作为引导 LLM 行为和减少攻击面的附加层,而不是唯一的安全控制。
工具调用的提示/确认
您可以要求特定工具在执行前获得用户的明确确认(当 MCP 客户端支持提示时)。
CB_MCP_CONFIRMATION_REQUIRED_TOOLS / --confirmation-required-tools 支持以下格式:
- 逗号分隔列表
- 文件路径(每行一个工具名称,支持
#注释)
示例:
# Environment variable
CB_MCP_CONFIRMATION_REQUIRED_TOOLS="delete_document_by_id,replace_document_by_id"
# Command line
uvx couchbase-mcp-server --confirmation-required-tools delete_document_by_id,replace_document_by_id
当列出的工具被调用时:
- 如果客户端支持提示,则会提示用户确认。
- 如果客户端不支持提示,则工具会在没有确认的情况下执行,以保持向后兼容。
您还可以使用以下命令检查服务器的版本:
uvx couchbase-mcp-server --version
日志
MCP 服务器默认记录日志到 stderr。日志通过 附加配置 中列出的 CB_MCP_LOG_* 变量进行配置:
CB_MCP_LOG_LEVEL— 记录多少内容:info(默认)记录生命周期事件和工具调用,debug添加详细的内部信息,off禁用所有日志记录。CB_MCP_LOG_SINKS— 日志输出位置:stderr(默认)、按级别轮转的文件(file)或两者。使用file时,每个级别写入一个文件(例如mcp_server.info.log和mcp_server.error.log),路径由CB_MCP_LOG_FILE设置。- 轮转大小 —
CB_MCP_LOG_ROTATION_MAX_SIZE_MB是每个级别文件轮转的全局大小(以 MB 为单位)。使用CB_MCP_LOG_<LEVEL>_ROTATION_MAX_SIZE_MB(ERROR/WARNING/INFO/DEBUG)覆盖各个级别,同样以 MB 为单位,未设置时继承全局值。大小为0(全局或按级别)无效,将回退到默认值(1 MB)并发出启动警告。CB_MCP_LOG_MAX_BYTES(字节)已弃用,但为向后兼容仍会生效;当同时设置CB_MCP_LOG_ROTATION_MAX_SIZE_MB时将被忽略,并在启动时打印弃用警告。 - 保留 —
CB_MCP_LOG_RETENTION_BACKUP_COUNT设置每个级别保留的轮转备份数量(不包括活动文件);默认值1保留之前的行为。使用CB_MCP_LOG_<LEVEL>_RETENTION_BACKUP_COUNT(ERROR/WARNING/INFO/DEBUG)覆盖各个级别,未设置时继承全局值。将计数设置为0以仅保留该级别的活动文件 — 它仍然受轮转大小限制(轮转时重置而不是备份)。 - 服务器配置快照 — 当
file接收器处于活动状态时,一次性记录(操作系统、Python、依赖版本、传输方式、解析后的日志配置和脱敏后的服务器配置)将以 JSON 格式写入专用的mcp_server_config.log.json文件(从CB_MCP_LOG_FILE基础路径派生)。每次启动时都会被覆盖,因此支持人员始终拥有当前配置,并且它永远不会从轮转日志中滚出。
# Enable debug logging to both stderr and rotating per-level files
uvx couchbase-mcp-server --log-level=debug --log-sinks=stderr,file
# Keep 30 rotated ERROR backups but only the live DEBUG file
uvx couchbase-mcp-server --log-level=debug --log-sinks=file \
--log-error-retention-backup-count=30 --log-debug-retention-backup-count=0
有关更多详细信息,请参阅文档。
客户端特定配置
Claude Desktop
按照以下步骤将 Couchbase MCP 服务器与 Claude Desktop MCP 客户端一起使用
-
现在可以通过编辑配置文件将 MCP 服务器添加到 Claude Desktop。更详细的说明可以在 MCP 快速入门指南 中找到。
- 在 Mac 上,配置文件位于
~/Library/Application Support/Claude/claude_desktop_config.json - 在 Windows 上,配置文件位于
%APPDATA%\Claude\claude_desktop_config.json打开配置文件,将 configuration 添加到mcpServers部分。
- 在 Mac 上,配置文件位于
-
重启 Claude Desktop 以应用更改。
-
现在你可以在 Claude Desktop 中使用该服务器,通过自然语言在 Couchbase 集群上运行查询,并对文档执行 CRUD 操作。
日志
Claude Desktop 的日志位于以下位置:
- MacOS: ~/Library/Logs/Claude
- Windows: %APPDATA%\Claude\Logs
日志可用于诊断连接问题或 MCP 服务器配置的其他问题。有关更多详细信息,请参阅 官方文档。
Cursor
按照以下步骤在 Cursor 中使用 Couchbase MCP 服务器:
-
在你的机器上安装 Cursor。
-
在 Cursor 中,前往 Cursor > Cursor Settings > Tools & Integrations > MCP Tools。另请查看 Cursor 关于设置 MCP 服务器配置的文档。
-
手动指定相同的 configuration,或使用一键式 Install in Cursor 链接。你可能需要在
mcpServers父键下添加服务器配置。注意:安装链接使用上方配置示例中的占位值。安装后请更新连接字符串和凭据。
-
保存配置。
-
你将在 MCP 服务器列表中看到 couchbase 作为已添加的服务器。刷新以查看服务器是否已启用。
-
现在你可以在 Cursor 中使用 Couchbase MCP 服务器,通过自然语言查询你的 Couchbase 集群,并对文档执行 CRUD 操作。
有关 Cursor 的 MCP 集成的更多详细信息,请参阅 Cursor MCP 官方文档。
日志
在 Cursor 的底部面板中,点击 "Output" 并从下拉菜单中选择 "Cursor MCP" 以查看服务器日志。这有助于诊断连接问题或 MCP 服务器配置的其他问题。
Windsurf Editor
按照以下步骤在 Windsurf Editor 中使用 Couchbase MCP 服务器。
-
在你的机器上安装 Windsurf Editor。
-
在 Windsurf Editor 中,导航到 Command Palette > Windsurf MCP Configuration Panel 或 Windsurf - Settings > Advanced > Cascade > Model Context Protocol (MCP) Servers。有关配置的更多详细信息,请参阅官方文档。
-
点击 Add Server,然后点击 Add custom server。在编辑器中打开的配置中,添加上面的 Couchbase MCP Server configuration。
-
保存配置。
-
你将在 Advanced Settings 下的 MCP Servers 列表中看到 couchbase 作为已添加的服务器。刷新以查看服务器是否已启用。
-
现在你可以在 Windsurf Editor 中使用 Couchbase MCP 服务器,通过自然语言查询你的 Couchbase 集群,并对文档执行 CRUD 操作。
有关 Windsurf Editor 的 MCP 集成的更多详细信息,请参阅官方 Windsurf MCP 文档。
VS Code
按照以下步骤在 VS Code 中使用 Couchbase MCP 服务器。
-
安装 VS Code
-
以下是配置 MCP 服务器的几种方式。
-
工作区服务器配置
- 在工作区中创建一个新文件 .vscode/mcp.json。
- 添加 configuration 并保存文件。
-
全局服务器配置:
- 在命令面板中运行 MCP: Open User Configuration(
Ctrl+Shift+P或Cmd+Shift+P) - 添加 configuration 并保存文件。
- 在命令面板中运行 MCP: Open User Configuration(
-
注意:VS Code 使用
servers作为 mcp.json 文件中的顶级 JSON 属性来定义 MCP(Model Context Protocol)服务器,而 Cursor 使用mcpServers作为等效配置。查看 VS Code 客户端配置 以了解任何进一步的更改或详细信息。以下提供了 VS Code 配置示例。{ "servers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password" } } } }
-
-
保存文件后,服务器将启动,并出现一个包含
Running|Stop|n Tools|More..的小操作列表。 -
从选项列表中点击选项以
Start/Stop/管理服务器。 -
现在你可以在 VS Code 中使用 Couchbase MCP 服务器,通过自然语言查询你的 Couchbase 集群,并对文档执行 CRUD 操作。
日志:
在命令面板中(Ctrl+Shift+P 或 Cmd+Shift+P),
- 运行 MCP: List Servers 命令并选择 couchbase 服务器
- 选择 "Show Output" 以在 Output 选项卡中查看其日志。
JetBrains IDEs
按照以下步骤在 JetBrains IDEs 中使用 Couchbase MCP 服务器。
- 安装任意一个 JetBrains IDEs
- 安装任意一个 JetBrains 插件 - AI Assistant 或 Junie
- 导航到 Settings > Tools > AI Assistant or Junie > MCP Server
- 点击 "+" 添加 Couchbase MCP configuration,然后点击 Save。
- 你将看到 Couchbase MCP 服务器已添加到服务器列表中。点击 Apply 后,Couchbase MCP 服务器启动,将鼠标悬停在状态上会显示所有可用的工具。
- 现在你可以在 JetBrains IDEs 中使用 Couchbase MCP 服务器,通过自然语言查询你的 Couchbase 集群,并对文档执行 CRUD 操作。
日志: 日志文件可以在 Help > Show Log in Finder (Explorer) > mcp > couchbase 中查看。
Streamable HTTP 传输模式
MCP 服务器可以以 Streamable HTTP 传输模式运行,该模式允许多个客户端通过 HTTP 连接到同一服务器实例。 在尝试以该模式连接 MCP 服务器之前,请检查你的 MCP 客户端 是否支持 streamable http 传输。
注意:此传输支持 OAuth 2.1 授权。请参阅 OAuth 2.1 授权。如果未配置 OAuth,HTTP 端点将无需身份验证。
用法
默认情况下,MCP 服务器将在 8000 端口上运行,但可以使用 --port 或 CB_MCP_PORT 环境变量进行配置。
uvx couchbase-mcp-server \
--connection-string='<couchbase_connection_string>' \
--username='<database_username>' \
--password='<database_password>' \
--read-only-mode=true \
--transport=http
服务器将在 http://localhost:8000/mcp 上可用。这可用于支持 streamable http 传输模式的 MCP 客户端,例如 Cursor。
MCP 客户端配置
{
"mcpServers": {
"couchbase-http": {
"url": "http://localhost:8000/mcp"
}
}
}
SSE 传输模式
可以选择以 Server-Sent Events (SSE) 传输模式运行 MCP 服务器。
注意:SSE 模式已被 MCP 弃用。我们支持 Streamable HTTP。
SSE:用法
默认情况下,MCP 服务器将在 8000 端口上运行,但可以使用 --port 或 CB_MCP_PORT 环境变量进行配置。
uvx couchbase-mcp-server \
--connection-string='<couchbase_connection_string>' \
--username='<database_username>' \
--password='<database_password>' \
--read-only-mode=true \
--transport=sse
服务器将在 http://localhost:8000/sse 上可用。这可用于支持 SSE 传输模式的 MCP 客户端,例如 Cursor。
SSE:MCP 客户端配置
{
"mcpServers": {
"couchbase-sse": {
"url": "http://localhost:8000/sse"
}
}
}
OAuth 2.1 授权
当使用 --transport=http 运行时,MCP 服务器可以充当 OAuth 2.1 资源服务器:它会根据你的身份提供商的 JWKS 验证传入的 bearer JWT。它与提供商无关(任何发布 JWKS 的 OAuth 2.1 / OIDC 提供商 — Auth0、Okta、Keycloak、AWS Cognito、Microsoft Entra 等),并且不签发令牌或管理用户。OAuth 设置在 stdio 上被忽略。
OAuth 使用 Additional Configuration 中列出的 CB_MCP_OAUTH_* 变量进行配置:
- 仅当
CB_MCP_OAUTH_JWT_JWKS_URI、CB_MCP_OAUTH_JWT_ISSUER和CB_MCP_OAUTH_JWT_AUDIENCE全部设置时,OAuth 才会激活;仅设置其中一部分将在启动时失败。 - 设置
CB_MCP_OAUTH_MCP_BASE_URL还会发布 RFC 9728 Protected Resource Metadata,以便支持 PRM 的客户端可以发现授权服务器。 - 访问权限由从令牌的
scope/scp声明中读取的两个范围控制:couchbase-mcp:read(读取工具,包括 SQL++)和couchbase-mcp:write(写入工具:KV 变更、作用域/集合管理和索引管理)。完全访问需要两者。如果你的 IdP 无法发出这些规范标签,请使用CB_MCP_OAUTH_SCOPE_READ_LABEL/CB_MCP_OAUTH_SCOPE_WRITE_LABEL覆盖它们。
uvx couchbase-mcp-server \
--connection-string='<couchbase_connection_string>' \
--username='<database_username>' \
--password='<database_password>' \
--transport=http \
--oauth-jwks-uri='https://auth.example.com/.well-known/jwks.json' \
--oauth-issuer='https://auth.example.com/' \
--oauth-audience='couchbase-mcp-server' \
--oauth-mcp-base-url='<public_base_url_of_this_server>'
有关完整详细信息,请参阅文档。
Docker 镜像
MCP 服务器也可以作为 Docker 容器构建和运行。预构建镜像可以在 DockerHub 上找到,或通过 docker pull docker.io/couchbase/mcp-server:latest 拉取。
或者,我们是 Docker MCP Catalog 的一部分。
构建镜像
docker build -t mcp/couchbase-src .
使用参数构建
如果你想使用提交哈希和构建时间的构建参数进行构建,可以使用以下方式构建:docker build --build-arg GIT_COMMIT_HASH=$(git rev-parse HEAD) \
--build-arg BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
-t mcp/couchbase-src .
或者,使用提供的构建脚本:
# Build with default image name (mcp/couchbase-src)
./build.sh
# Build with custom image name
./build.sh my-custom/image-name
该脚本会自动:
- 接受可选的镜像名称参数(默认为
mcp/couchbase-src) - 生成 git 提交哈希和构建时间戳
- 创建多个有用的标签(
latest、<short-commit>) - 显示构建信息和结果
- 使用与 CI/CD 构建相同的参数
验证镜像标签:
# View git commit hash in image
docker inspect --format='{{index .Config.Labels "org.opencontainers.image.revision"}}' mcp/couchbase-src:latest
# View all metadata labels
docker inspect --format='{{json .Config.Labels}}' mcp/couchbase-src:latest
运行
MCP 服务器可以使用环境变量来配置 Couchbase 设置。环境变量与 Additional Configuration section 中描述的相同。
独立 Docker 容器
docker run --rm -i \
-e CB_CONNECTION_STRING='<couchbase_connection_string>' \
-e CB_USERNAME='<database_user>' \
-e CB_PASSWORD='<database_password>' \
-e CB_MCP_TRANSPORT='<http|sse|stdio>' \
-e CB_MCP_READ_ONLY_MODE='<true|false>' \
-e CB_MCP_CONFIRMATION_REQUIRED_TOOLS='delete_document_by_id' \
-e CB_MCP_PORT=9001 \
-e CB_MCP_HOST=0.0.0.0 \
-p 9001:9001 \
mcp/couchbase-src
CB_MCP_PORT 和 CB_MCP_HOST 环境变量仅适用于 http 和 sse 等 HTTP 传输模式。
Docker:MCP 客户端配置
Docker 镜像可以在 stdio 传输模式下使用,配置如下。
{
"mcpServers": {
"couchbase-mcp-docker": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CB_CONNECTION_STRING=<couchbase_connection_string>",
"-e",
"CB_USERNAME=<database_user>",
"-e",
"CB_PASSWORD=<database_password>",
"mcp/couchbase-src"
]
}
}
}
注意事项
couchbase_connection_string的值取决于 Couchbase 服务器是运行在同一台主机、另一个 Docker 容器中,还是在远程主机上。如果你的 Couchbase 服务器运行在主机上,你的连接字符串可能类似于couchbase://host.docker.internal。有关详细信息,请参阅 docker 文档。- 你可以使用
--network=<your_network>选项指定容器的网络。你选择的网络取决于你的环境;默认值为bridge。有关详细信息,请参阅 docker 中的网络驱动程序。
与 LLM 相关的风险
- 使用大型语言模型和类似技术涉及风险,包括可能产生不准确或有害的输出。
- Couchbase 不审查或评估此类输出的质量或准确性,此类输出可能不反映 Couchbase 的观点。
- 你自行负责决定是否使用大型语言模型和相关技术,并遵守适用于你使用这些技术的任何许可条款、使用条款以及你所在组织的政策。
使用数据收集
本产品自动收集使用和性能数据(例如产品名称和版本)以及浏览器信息(例如 IP 地址)(统称为"使用数据")。Couchbase 使用使用数据以及你可能向 Couchbase 提供的其他数据(例如你的用户名或电子邮件地址)来开发和改进我们的产品,并为我们的销售和营销计划提供信息。我们不会访问或收集你存储在 Couchbase 产品中的任何数据。我们使用使用数据来了解总体使用模式,并使我们的产品对你更有用。有关 Couchbase 如何收集、保护和处理信息的更多信息,请参阅可在 https://www.couchbase.com/privacy-policy. 查看的 Couchbase 隐私政策。
故障排除提示
- 如果从源代码运行,请确保配置中 MCP 服务器仓库的路径正确。
- 请验证您的 Couchbase 连接字符串、数据库用户名、密码或证书路径是否正确。
- 如果使用 Couchbase Capella,请确保集群可从运行 MCP 服务器的机器访问。
- 检查数据库用户是否具有访问至少一个存储桶的适当权限。
- 确认
uv包管理器已正确安装且可访问。您可能需要在配置的command字段中提供uv/uvx的绝对路径。 - 检查日志中是否有任何可能表明 MCP 服务器存在问题的错误或警告。日志的位置取决于您的 MCP 客户端。
- 如果在更新本地 MCP 服务器仓库后从源代码运行 MCP 服务器时遇到问题,请尝试运行
uv sync来更新依赖项。
集成测试
我们提供高级 MCP 集成测试,以验证服务器是否公开了预期的工具,以及这些工具是否可以针对演示 Couchbase 集群调用。
- 导出演示集群凭据:
CB_CONNECTION_STRINGCB_USERNAMECB_PASSWORD- 可选:
CB_MCP_TEST_BUCKET(测试期间要探测的存储桶)
- 运行测试:
uv run pytest tests/ -v
👩💻 贡献
我们欢迎社区的贡献!无论您想修复错误、添加功能还是改进文档,我们都非常感谢您的帮助。
如果您需要帮助、发现了错误或想贡献改进,最好的地方就是这里——通过打开 GitHub issue。
面向开发者
如果您有兴趣贡献代码或搭建开发环境:
📖 请参阅 CONTRIBUTING.md 获取全面的开发者设置说明,包括:
- 使用
uv搭建开发环境 - 使用 Ruff 进行代码检查和格式化
- 安装 pre-commit 钩子
- 项目结构概览
- 开发工作流程和实践
贡献者快速入门
# Clone and setup
git clone https://github.com/couchbase/mcp-server-couchbase.git
cd mcp-server-couchbase
# Install with development dependencies
uv sync --extra dev
# Install pre-commit hooks
uv run pre-commit install
# Run linting
./scripts/lint.sh
📢 支持政策
我们衷心感谢您对这个项目的关注! 这个项目由 Couchbase 社区维护,这意味着我们的支持团队不提供官方支持。不过,我们的工程师正在积极监控和维护此仓库,并将尽最大努力解决问题。
我们的支持门户无法处理与此项目相关的请求,因此我们恳请所有咨询都留在 GitHub 内。
您的协作帮助我们共同前进——谢谢!