Couchbase

官方

使用自然语言与存储在Couchbase集群中的数据进行交互。

你可以用 Couchbase MCP 做什么?

让您的助手检查集群健康状况、探索模式、运行SQL++查询,并管理Couchbase集群中的文档。

  • 运行SQL++查询 — 让您的助手使用run_sql_plus_plus_query查询数据,自动限定在某个桶和集合范围内。
  • 探索模式 — 通过get_buckets_in_clusterget_schema_for_collection发现桶、作用域和集合。
  • 管理文档 — 使用get_document_by_idupsert_document_by_id按ID读取、更新或删除文档。
  • 检查集群健康 — 使用test_cluster_connectionget_cluster_health_and_services验证连接和服务状态。
  • 优化索引 — 通过list_indexesget_index_advisor_recommendations列出索引并获取建议。
  • 分析查询性能 — 使用get_longest_running_queriesget_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 的使用权和企业支持。

Docs License Python 3.10+ PyPI version Install in Cursor Verified on MseeP Trust Score

如需完整文档,请访问 mcp-server.couchbase.com

Couchbase Server MCP server

功能/工具

集群设置与健康工具

工具名称描述
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-pathmTLS 认证的客户端证书文件路径如果使用 mTLS 则为必需(或需要用户名和密码)
CB_CLIENT_KEY_PATH--client-key-pathmTLS 认证的客户端密钥文件路径如果使用 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传输模式:stdiohttpssestdio
CB_MCP_HOST--hostHTTP/SSE 传输模式的主机127.0.0.1
CB_MCP_PORT--portHTTP/SSE 传输模式的端口8000
CB_MCP_DISABLED_TOOLS--disabled-tools要禁用的工具(参见禁用工具
CB_MCP_CONFIRMATION_REQUIRED_TOOLS--confirmation-required-tools需要通过 MCP 提示在执行前获得用户明确确认的工具(参见需要提示/确认的工具
CB_MCP_LOG_LEVEL--log-levelMCP 服务器的日志级别:offdebuginfowarningerror(参见日志info
CB_MCP_LOG_SINKS--log-sinks逗号分隔的日志目标:stderrfile 或两者(参见日志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-mbERROR 日志文件的轮转大小(以 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-mbWARNING 日志文件的轮转大小(以 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-mbINFO 日志文件的轮转大小(以 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-mbDEBUG 日志文件的轮转大小(以 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-countERROR 日志文件保留的轮转备份数;覆盖 ERROR 的全局计数继承 CB_MCP_LOG_RETENTION_BACKUP_COUNT
CB_MCP_LOG_WARNING_RETENTION_BACKUP_COUNT--log-warning-retention-backup-countWARNING 日志文件保留的轮转备份数;覆盖 WARNING 的全局计数继承 CB_MCP_LOG_RETENTION_BACKUP_COUNT
CB_MCP_LOG_INFO_RETENTION_BACKUP_COUNT--log-info-retention-backup-countINFO 日志文件保留的轮转备份数;覆盖 INFO 的全局计数继承 CB_MCP_LOG_RETENTION_BACKUP_COUNT
CB_MCP_LOG_DEBUG_RETENTION_BACKUP_COUNT--log-debug-retention-backup-countDEBUG 日志文件保留的轮转备份数;覆盖 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-algorithmJWT 签名算法:RS256/384/512ES256/384/512PS256/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_iddelete_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.logmcp_server.error.log),路径由 CB_MCP_LOG_FILE 设置。
  • 轮转大小CB_MCP_LOG_ROTATION_MAX_SIZE_MB 是每个级别文件轮转的全局大小(以 MB 为单位)。使用 CB_MCP_LOG_<LEVEL>_ROTATION_MAX_SIZE_MBERROR/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_COUNTERROR/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 客户端一起使用

  1. 现在可以通过编辑配置文件将 MCP 服务器添加到 Claude Desktop。更详细的说明可以在 MCP 快速入门指南 中找到。

    • 在 Mac 上,配置文件位于 ~/Library/Application Support/Claude/claude_desktop_config.json
    • 在 Windows 上,配置文件位于 %APPDATA%\Claude\claude_desktop_config.json 打开配置文件,将 configuration 添加到 mcpServers 部分。
  2. 重启 Claude Desktop 以应用更改。

  3. 现在你可以在 Claude Desktop 中使用该服务器,通过自然语言在 Couchbase 集群上运行查询,并对文档执行 CRUD 操作。

日志

Claude Desktop 的日志位于以下位置:

  • MacOS: ~/Library/Logs/Claude
  • Windows: %APPDATA%\Claude\Logs

日志可用于诊断连接问题或 MCP 服务器配置的其他问题。有关更多详细信息,请参阅 官方文档

Cursor

按照以下步骤在 Cursor 中使用 Couchbase MCP 服务器:

  1. 在你的机器上安装 Cursor

  2. 在 Cursor 中,前往 Cursor > Cursor Settings > Tools & Integrations > MCP Tools。另请查看 Cursor 关于设置 MCP 服务器配置的文档。

  3. 手动指定相同的 configuration,或使用一键式 Install in Cursor 链接。你可能需要在 mcpServers 父键下添加服务器配置。

    注意:安装链接使用上方配置示例中的占位值。安装后请更新连接字符串和凭据。

  4. 保存配置。

  5. 你将在 MCP 服务器列表中看到 couchbase 作为已添加的服务器。刷新以查看服务器是否已启用。

  6. 现在你可以在 Cursor 中使用 Couchbase MCP 服务器,通过自然语言查询你的 Couchbase 集群,并对文档执行 CRUD 操作。

有关 Cursor 的 MCP 集成的更多详细信息,请参阅 Cursor MCP 官方文档

日志

在 Cursor 的底部面板中,点击 "Output" 并从下拉菜单中选择 "Cursor MCP" 以查看服务器日志。这有助于诊断连接问题或 MCP 服务器配置的其他问题。

Windsurf Editor

按照以下步骤在 Windsurf Editor 中使用 Couchbase MCP 服务器。

  1. 在你的机器上安装 Windsurf Editor

  2. 在 Windsurf Editor 中,导航到 Command Palette > Windsurf MCP Configuration Panel 或 Windsurf - Settings > Advanced > Cascade > Model Context Protocol (MCP) Servers。有关配置的更多详细信息,请参阅官方文档

  3. 点击 Add Server,然后点击 Add custom server。在编辑器中打开的配置中,添加上面的 Couchbase MCP Server configuration

  4. 保存配置。

  5. 你将在 Advanced Settings 下的 MCP Servers 列表中看到 couchbase 作为已添加的服务器。刷新以查看服务器是否已启用。

  6. 现在你可以在 Windsurf Editor 中使用 Couchbase MCP 服务器,通过自然语言查询你的 Couchbase 集群,并对文档执行 CRUD 操作。

有关 Windsurf Editor 的 MCP 集成的更多详细信息,请参阅官方 Windsurf MCP 文档

VS Code

按照以下步骤在 VS Code 中使用 Couchbase MCP 服务器。

  1. 安装 VS Code

  2. 以下是配置 MCP 服务器的几种方式。

    • 工作区服务器配置

      • 在工作区中创建一个新文件 .vscode/mcp.json。
      • 添加 configuration 并保存文件。
    • 全局服务器配置:

      • 在命令面板中运行 MCP: Open User ConfigurationCtrl+Shift+PCmd+Shift+P
      • 添加 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"
              }
            }
          }
        }
      
  3. 保存文件后,服务器将启动,并出现一个包含 Running|Stop|n Tools|More.. 的小操作列表。

  4. 从选项列表中点击选项以 Start/Stop/管理服务器。

  5. 现在你可以在 VS Code 中使用 Couchbase MCP 服务器,通过自然语言查询你的 Couchbase 集群,并对文档执行 CRUD 操作。

日志: 在命令面板中(Ctrl+Shift+PCmd+Shift+P),

  • 运行 MCP: List Servers 命令并选择 couchbase 服务器
  • 选择 "Show Output" 以在 Output 选项卡中查看其日志。
JetBrains IDEs

按照以下步骤在 JetBrains IDEs 中使用 Couchbase MCP 服务器。

  1. 安装任意一个 JetBrains IDEs
  2. 安装任意一个 JetBrains 插件 - AI AssistantJunie
  3. 导航到 Settings > Tools > AI Assistant or Junie > MCP Server
  4. 点击 "+" 添加 Couchbase MCP configuration,然后点击 Save。
  5. 你将看到 Couchbase MCP 服务器已添加到服务器列表中。点击 Apply 后,Couchbase MCP 服务器启动,将鼠标悬停在状态上会显示所有可用的工具。
  6. 现在你可以在 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 端口上运行,但可以使用 --portCB_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 端口上运行,但可以使用 --portCB_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_URICB_MCP_OAUTH_JWT_ISSUERCB_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_PORTCB_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 集群调用。

  1. 导出演示集群凭据:
    • CB_CONNECTION_STRING
    • CB_USERNAME
    • CB_PASSWORD
    • 可选:CB_MCP_TEST_BUCKET(测试期间要探测的存储桶)
  2. 运行测试:
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 内。

您的协作帮助我们共同前进——谢谢!