Couchbase

официальный

Взаимодействуйте с данными, хранящимися в кластерах Couchbase, используя естественный язык.

Что можно делать с Couchbase MCP?

  • Explore cluster structure — Запросите список бакетов, областей и коллекций, а также проверьте схемы с помощью get_buckets_in_cluster, get_scopes_in_bucket и get_schema_for_collection.
  • Run SQL++ queries — Выполняйте запросы только для чтения к области с помощью run_sql_plus_plus_query или получайте планы выполнения через explain_sql_plus_plus_query.
  • Check cluster health — Проверьте подключение и статус сервисов с помощью test_cluster_connection и get_cluster_health_and_services или получите диагностику через get_cluster_diagnostics_report.
  • Analyze query performance — Выявляйте медленные или неэффективные запросы с помощью get_longest_running_queries и get_queries_using_primary_index.
  • Manage documents — Получайте или изменяйте документы по ID с помощью get_document_by_id и upsert_document_by_id (инструменты записи требуют CB_MCP_READ_ONLY_MODE=false).
  • Optimize indexes — Получайте рекомендации по индексам с помощью get_index_advisor_recommendations или просматривайте существующие индексы через list_indexes.

Документация

Couchbase MCP Server

Couchbase MCP Server — это самостоятельно размещаемый сервер Model Context Protocol (MCP), который подключает AI-агентов и ассистентов на базе LLM — Claude, Cursor, Windsurf, VS Code Copilot и другие MCP-клиенты — к данным в кластерах Couchbase, размещенных на Capella или управляемых самостоятельно. MCP — это открытый стандарт, позволяющий AI-ассистентам вызывать инструменты и запрашивать внешние источники данных; этот сервер реализует данный стандарт для Couchbase, поэтому AI-агент может проверять ваш кластер, выполнять SQL++-запросы, читать и записывать документы, а также анализировать производительность запросов на естественном языке вместо рукописного кода.

Он предоставляет инструменты по категориям, включая здоровье кластера, схему данных, Key-Value, запросы и производительность — с мерами безопасности через режим только для чтения (включен по умолчанию) и детальным отключением инструментов, что позволяет AI-агенту исследовать и запрашивать данные без риска непреднамеренных записей. Поддерживаются транспорты STDIO и Streamable HTTP.

Couchbase MCP Server распространяется как пакет Python Package Index (PyPI) и через Docker. Корпоративная поддержка Couchbase MCP Server доступна при лицензировании Couchbase AI Data Plane, что также дает право на использование и корпоративную поддержку Couchbase Agent Memory и Couchbase Agent Catalog.

Полную документацию см. на mcp-server.couchbase.com.

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

Полную документацию см. на docs.couchbase.com/mcp-server.

Couchbase Server MCP server

Содержание

Зачем нужен Couchbase MCP Server

  • Безопасен по умолчанию — операции записи (upsert/insert/delete документов и изменяющие данные SQL++-запросы) блокируются, если вы явно не установите CB_MCP_READ_ONLY_MODE=false, а отдельные инструменты можно отключить или ограничить подтверждением пользователя.
  • Работает с Capella и самостоятельно управляемыми кластерами — одна и та же конфигурация подключается к Couchbase Capella (полностью управляемый) или к самостоятельно размещенному кластеру Couchbase Server.
  • С учетом RBAC — отключение инструментов — это удобный слой для направления поведения LLM; лежащий в основе контроль доступа на основе ролей пользователя Couchbase остается авторитетной границей безопасности.
  • Продакшн-транспорты — работа через STDIO для локальных настольных клиентов или Streamable HTTP с опциональной авторизацией OAuth 2.1 (JWT/JWKS, независимо от провайдера — Auth0, Okta, Keycloak, Entra, Cognito и т. д.) для общих/удаленных развертываний.
  • Любой MCP-клиент — протестировано с Claude Desktop, Cursor, Windsurf, VS Code и JetBrains AI Assistant/Junie; работает с любым клиентом, реализующим спецификацию MCP.

Примеры запросов

После подключения сервера вы можете общаться с кластером Couchbase на естественном языке через AI-ассистента. Например:

  • "Какие buckets, scopes и collections есть в этом кластере, и какова схема коллекции orders?"
  • "Выполни SQL++-запрос, чтобы найти 10 самых последних документов в коллекции users where status = 'active'."
  • "Какие 5 самых медленных запросов в этом кластере за последний час, и отсутствует ли у каких-либо из них покрывающий индекс?"
  • "Проверь, здоров ли этот кластер, и скажи, какие службы работают."
  • "Вставь новый документ в коллекцию products с такими полями: ..." (требуется CB_MCP_READ_ONLY_MODE=false)

Возможности/Инструменты

Этот дистрибутив включает два сервера: операционный сервер (по умолчанию — таблицы непосредственно ниже) взаимодействует с обычным кластером Couchbase через SDK couchbase, а сервер Operational Insights (его собственная таблица ниже) взаимодействует с кластерами Operational Insights через SDK couchbase-operational-insights.

Инструменты настройки и здоровья кластера

Имя инструментаОписание
get_server_configuration_statusПолучить статус сервера и конфигурацию без подключения к кластеру — сообщает режим только для чтения, отключенные/требующие подтверждения инструменты, настройки OAuth и разрешенную конфигурацию логирования
test_cluster_connectionПроверить учетные данные кластера, подключившись к кластеру
get_cluster_health_and_servicesПолучить статус здоровья кластера и список всех работающих служб, опционально отфильтрованных по конкретным службам через service_types
get_cluster_diagnostics_reportПолучить кэшированную диагностику подключения SDK — были ли соединения уже разорваны и как долго, без активного сетевого зондирования
get_cluster_metricsПолучить одну или несколько статистик кластера за исторический временной интервал через конечную точку stats-range Management REST API. Только для самостоятельно управляемого Couchbase Server 7.6+ — недоступно на Capella.
discover_tool_input_valuesНайти точные входные значения, необходимые другому инструменту, из справочных данных, входящих в сервер — в настоящее время каждое имя метрики Couchbase Server (тип, единица, версия добавления, описание) для get_cluster_metrics. Просматривайте по категориям или ищите по ключевым словам с нечетким поиском. Работает офлайн, без подключения к кластеру.

Инструменты модели данных и обнаружения схемы

Имя инструментаОписание
get_buckets_in_clusterПолучить список всех buckets в кластере
get_scopes_in_bucketПолучить список всех scopes в указанном bucket
get_collections_in_scopeПолучить список всех collections в указанном scope и bucket. Обратите внимание, что этот инструмент требует наличия службы Query в кластере.
get_scopes_and_collections_in_bucketПолучить список всех scopes и collections в указанном bucket
get_schema_for_collectionПолучить структуру коллекции
create_scopeСоздать новый scope в bucket (Couchbase Server 7.6+ и Capella). Отключен по умолчанию, когда CB_MCP_READ_ONLY_MODE=true.
create_collectionСоздать новую коллекцию в существующем scope (Couchbase Server 7.6+ и Capella). Отключен по умолчанию, когда CB_MCP_READ_ONLY_MODE=true.
delete_scopeУдалить scope и все его коллекции из bucket — необратимо. Отключен по умолчанию, когда CB_MCP_READ_ONLY_MODE=true.
delete_collectionУдалить коллекцию и все ее документы из scope — необратимо. Отключен по умолчанию, когда CB_MCP_READ_ONLY_MODE=true.

Инструменты операций с документами KV

Имя инструментаОписание
get_document_by_idПолучить документ по ID из указанного scope и коллекции
lookup_subdocumentНайти части документа (конкретные поля, проверки существования или подсчеты массивов/объектов) по пути без получения всего документа
upsert_document_by_idВыполнить upsert документа по ID в указанный scope и коллекцию. Отключен по умолчанию, когда 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 из указанного scope и коллекции. Отключен по умолчанию, когда CB_MCP_READ_ONLY_MODE=true.
mutate_subdocumentИзменить части существующего документа (upsert, insert, replace, remove, операции с массивами, счетчики) по пути без перезаписи всего документа. Отключен по умолчанию, когда CB_MCP_READ_ONLY_MODE=true.

Инструменты запросов и индексации

Имя инструментаОписание
list_indexesПеречислить все индексы в кластере с их определениями, с опциональной фильтрацией по bucket, scope, коллекции и имени индекса. Установите return_raw_index_stats=true, чтобы вернуть необработанную информацию об индексах.
get_index_advisor_recommendationsПолучить рекомендации по индексам от Couchbase Index Advisor для заданного 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++-запрос в указанном scope.

Запросы автоматически ограничиваются указанным bucket и scope, поэтому используйте имена коллекций напрямую (например, SELECT * FROM users вместо SELECT * FROM bucket.scope.users).

CB_MCP_READ_ONLY_MODE по умолчанию равен true, что означает, что все операции записи (KV, Query, управление scope/коллекциями и управление индексами) отключены. Когда включено (т. е. CB_MCP_READ_ONLY_MODE=true), инструменты записи не загружаются, а SQL++-запросы, изменяющие данные, блокируются.
explain_sql_plus_plus_queryСгенерировать и оценить план EXPLAIN для SQL++-запроса. Возвращает метаданные запроса, извлеченный план и результаты оценки плана.

Инструменты полнотекстового поиска (FTS)

Требуется Couchbase Server 7.6+ и служба Search. Векторный поиск не поддерживается этими инструментами (см. отдельные инструменты векторного поиска).

Имя инструментаОписание
list_fts_indexesПеречислить индексы Search (FTS). Без фильтров перечисляет индексы уровня кластера (legacy); с bucket_name перечисляет индексы уровня scope (scoped) во всех scopes этого bucket; с bucket_name и scope_name перечисляет индексы уровня scope в этом одном scope.
get_fts_index_definitionПолучить полное определение одного индекса Search (mappings, analyzers, plan params). Передайте bucket_name и scope_name вместе для индекса уровня scope или опустите оба для индекса уровня кластера (legacy).
run_fts_queryВыполнить FTS-запрос к индексу Search или получить его план выполнения. query — это необработанное тело JSON FTS-запроса, поддерживающее любой тип запроса, не связанный с векторами (match, match_phrase, term, conjuncts, disjuncts, geo, date/numeric range, query_string, ...). Передайте explain=true, чтобы получить план выполнения вместо результатов — это все равно выполняет запрос (limit по умолчанию равен 1), поскольку служба Search предоставляет план только для каждого совпавшего результата, а не как отдельный вызов dry-run.

Инструменты анализа производительности запросов

Имя инструментаОписание
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Получить запросы, которые не являются селективными (сканирование индекса возвращает гораздо больше документов, чем конечный результат)

Инструменты Operational Insights

Регистрируются отдельным сервером operational-insights (см. Сервер Operational Insights ниже), а не сервером по умолчанию operational.

Имя инструментаОписание
get_server_configuration_statusПолучить статус и конфигурацию этого сервера без подключения к кластеру — режим только для чтения, отключенные инструменты/инструменты, требующие подтверждения, настройки OAuth и разрешенная конфигурация журналирования. Общий с операционным сервером: тот же инструмент, зарегистрированный обоими.
get_databases_in_clusterПеречислить все базы данных в кластере Operational Insights.
get_scopes_in_databaseПеречислить все области видимости (scopes) в базе данных.
get_collections_in_scopeПеречислить все коллекции (наборы данных) в области видимости. Разделяет имя с инструментом операционного сервера с тем же именем — см. примечание ниже.
get_schema_for_collectionВывести JSON-схему коллекции путем выборки документов. Разделяет имя с инструментом операционного сервера с тем же именем — см. примечание ниже.
list_indexesПеречислить вторичные индексы через каталог System.Metadata.Index (в SDK нет менеджера индексов). Разделяет имя с инструментом операционного сервера с тем же именем — см. примечание ниже.
run_query_syncВыполнить SQL++ оператор (SELECT, DML или DDL) и вернуть все строки результата. Принудительно включает режим только для чтения на стороне сервера через QueryOptions(readonly=True) — здесь нет клиентского SQL++ парсера.
explain_queryСгенерировать план запроса для SQL++ оператора через EXPLAIN, без его выполнения.
create_indexСоздать вторичный индекс через CREATE INDEX (в SDK нет менеджера индексов). Отключен по умолчанию, когда CB_MCP_READ_ONLY_MODE=true. Разделяет имя с инструментом операционного сервера с тем же именем — см. примечание ниже.
run_query_asyncЗапустить SQL++ оператор, не дожидаясь его завершения, возвращая токен query_handle. Такое же принудительное соблюдение режима только для чтения, как у run_query_sync.
get_async_query_resultsПроверить, завершился ли асинхронный запрос, и если да, вернуть его строки. Также служит проверкой статуса — вызовите снова позже, если еще не готово.
discard_async_query_resultsОсвободить буферы результатов завершенного асинхронного запроса на сервере. Обычный шаг очистки после get_async_query_results.
cancel_async_queryОстановить асинхронный запрос, который все еще выполняется. Отключен по умолчанию, когда CB_MCP_READ_ONLY_MODE=true. Завершенный запрос нельзя отменить — вместо этого отбросьте его результаты.

Инструменты Server Async Request API образуют поток запуск → опрос → отброс или отмена для длительных запросов: run_query_async возвращает query_handle, get_async_query_results опрашивается до тех пор, пока не сообщит о готовности (и возвращает строки), затем либо discard_async_query_results освобождает результаты, либо, для запроса, который все еще выполняется, cancel_async_query останавливает его.

Примечание: get_collections_in_scope, get_schema_for_collection, create_index и list_indexes существуют, с разным поведением, на обоих серверах. (get_server_configuration_status также появляется на обоих, но это намеренно один общий инструмент — та же реализация, та же форма результата — поэтому он не требует разграничения.) Каждый сервер — отдельный процесс, так что это проблема только если один MCP-клиент регистрирует одновременно и operational, и operational-insights — в этом случае разграничьте их на уровне конфигурации клиента (например, задав двум записям сервера разные имена в собственной конфигурации клиента).

Предварительные требования

  • Python 3.10 или выше.
  • Работающий кластер Couchbase. Самый простой способ начать — использовать бесплатный уровень Capella, который является полностью управляемой версией сервера Couchbase. Вы можете следовать инструкциям, чтобы импортировать один из образцов наборов данных или импортировать свои собственные.
  • Установленный uv для запуска сервера.
  • Установленный MCP-клиент, такой как Claude Desktop, для подключения сервера к Claude. Инструкции приведены для Claude Desktop и Cursor. Можно использовать и другие MCP-клиенты.

Конфигурация

MCP-сервер можно запустить либо из предварительно собранного пакета PyPI, либо из исходного кода с помощью uv.

Запуск из PyPI

Мы публикуем предварительно собранный пакет PyPI для MCP-сервера.

Конфигурация сервера с использованием предварительно собранного пакета для 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, Query, управление областями видимости/коллекциями и управление индексами). При включении инструменты записи не загружаются.true
CB_MCP_TRANSPORT--transportРежим транспорта: stdio, http, ssestdio
CB_MCP_HOST--hostХост для режимов транспорта HTTP/SSE127.0.0.1
CB_MCP_PORT--portПорт для режимов транспорта HTTP/SSE8000
CB_MCP_DISABLED_TOOLS--disabled-toolsИнструменты для отключения (см. Отключение инструментов)Нет
CB_MCP_CONFIRMATION_REQUIRED_TOOLS--confirmation-required-toolsИнструменты, требующие явного подтверждения пользователя перед выполнением через MCP elicitation (см. Инструменты, требующие подтверждения/elicitation)Нет
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Глобальный максимальный размер в МБ для каждого файла журнала до его ротации, наследуется каждым уровнем, если не переопределен. 0 недопустим и возвращается к значению по умолчанию с предупреждением при запуске1 (1 МБ)
CB_MCP_LOG_MAX_BYTES--log-max-bytesУстарело — используйте CB_MCP_LOG_ROTATION_MAX_SIZE_MB (МБ). Глобальный размер ротации в байтах, все еще поддерживается для обратной совместимости; игнорируется, когда также задан CB_MCP_LOG_ROTATION_MAX_SIZE_MBНе задано
CB_MCP_LOG_ERROR_ROTATION_MAX_SIZE_MB--log-error-rotation-max-size-mbРазмер ротации в МБ для файла журнала ERROR; переопределяет CB_MCP_LOG_ROTATION_MAX_SIZE_MB для ERRORНаследует CB_MCP_LOG_ROTATION_MAX_SIZE_MB
CB_MCP_LOG_WARNING_ROTATION_MAX_SIZE_MB--log-warning-rotation-max-size-mbРазмер ротации в МБ для файла журнала WARNING; переопределяет CB_MCP_LOG_ROTATION_MAX_SIZE_MB для WARNINGНаследует CB_MCP_LOG_ROTATION_MAX_SIZE_MB
CB_MCP_LOG_INFO_ROTATION_MAX_SIZE_MB--log-info-rotation-max-size-mbРазмер ротации в МБ для файла журнала INFO; переопределяет CB_MCP_LOG_ROTATION_MAX_SIZE_MB для INFOНаследует CB_MCP_LOG_ROTATION_MAX_SIZE_MB
CB_MCP_LOG_DEBUG_ROTATION_MAX_SIZE_MB--log-debug-rotation-max-size-mbРазмер ротации в МБ для файла журнала DEBUG; переопределяет CB_MCP_LOG_ROTATION_MAX_SIZE_MB для DEBUGНаследует 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Конечная точка JWKS поставщика удостоверений, используемая для проверки bearer JWT. Включает OAuth при задании с издателем и аудиторией (см. Авторизация OAuth 2.1)Нет
CB_MCP_OAUTH_JWT_ISSUER--oauth-issuerОжидаемое утверждение iss JWT. Требуется для включения OAuthНет
CB_MCP_OAUTH_JWT_AUDIENCE--oauth-audienceОжидаемое утверждение aud JWT. Требуется для включения OAuthНет
CB_MCP_OAUTH_JWT_ALGORITHM--oauth-algorithmАлгоритм подписи JWT: один из RS256/384/512, ES256/384/512, PS256/384/512RS256
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, Query, управление областями видимости/коллекциями и управление индексами) отключены. Все инструменты записи (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: Все инструменты записи загружаются, и 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 с использованием операторов DML SQL++ (INSERT, UPDATE, DELETE, MERGE), если только:

  • CB_MCP_READ_ONLY_MODE не установлен в true (по умолчанию), ИЛИ
  • пользователь базы данных не имеет необходимых прав RBAC для изменения данных

Рекомендация: Всегда настраивайте соответствующие права RBAC для учетных данных пользователя Couchbase в качестве основной меры безопасности. Используйте отключение инструментов как дополнительный уровень для управления поведением 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 — это глобальный размер (в МБ), при котором каждый файл уровня ротируется. Переопределите отдельные уровни с помощью CB_MCP_LOG_<LEVEL>_ROTATION_MAX_SIZE_MB (ERROR/WARNING/INFO/DEBUG), также в МБ, которые наследуют глобальное значение, если не заданы. Размер 0 (глобальный или для уровня) недопустим и возвращается к значению по умолчанию (1 МБ) с предупреждением при запуске. 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

Выполните следующие шаги, чтобы использовать MCP-сервер Couchbase с MCP-клиентом Claude Desktop:

  1. MCP-сервер теперь можно добавить в Claude Desktop, отредактировав файл конфигурации. Более подробные инструкции можно найти в кратком руководстве по MCP.

    • На Mac файл конфигурации находится по адресу ~/Library/Application Support/Claude/claude_desktop_config.json
    • На Windows файл конфигурации находится по адресу %APPDATA%\Claude\claude_desktop_config.json

    Откройте файл конфигурации и добавьте конфигурацию в раздел mcpServers.

  2. Перезапустите Claude Desktop, чтобы применить изменения.

  3. Теперь вы можете использовать сервер в Claude Desktop для выполнения запросов к кластеру Couchbase на естественном языке и выполнения операций CRUD с документами.

Журналы

Журналы Claude Desktop можно найти в следующих местах:

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

Журналы можно использовать для диагностики проблем с подключением или других проблем с конфигурацией MCP-сервера. Для получения дополнительных сведений обратитесь к официальной документации.

Cursor

Выполните следующие шаги, чтобы использовать MCP-сервер Couchbase с Cursor:

  1. Установите Cursor на свой компьютер.

  2. В Cursor перейдите в Cursor > Cursor Settings > Tools & Integrations > MCP Tools. Также ознакомьтесь с документацией по настройке конфигурации MCP-сервера от Cursor.

  3. Укажите ту же конфигурацию вручную или используйте ссылку установки в один клик Install in Cursor. Возможно, вам потребуется добавить конфигурацию сервера в родительский ключ mcpServers.

    Примечание: Ссылка установки использует значения-заполнители из примеров конфигурации выше. Обновите строку подключения и учетные данные после установки.

  4. Сохраните конфигурацию.

  5. Вы увидите couchbase как добавленный сервер в списке MCP-серверов. Обновите, чтобы проверить, включен ли сервер.

  6. Теперь вы можете использовать MCP-сервер Couchbase в Cursor для запросов к кластеру Couchbase на естественном языке и выполнения операций CRUD с документами.

Для получения дополнительных сведений об интеграции MCP с Cursor обратитесь к официальной документации Cursor MCP.

Журналы

В нижней панели Cursor нажмите «Output» и выберите «Cursor MCP» из раскрывающегося меню, чтобы просмотреть журналы сервера. Это может помочь диагностировать проблемы с подключением или другие проблемы с конфигурацией MCP-сервера.

Windsurf Editor

Выполните следующие шаги, чтобы использовать MCP-сервер Couchbase с Windsurf Editor.

  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. В конфигурации, которая откроется в редакторе, добавьте конфигурацию MCP-сервера Couchbase из приведенной выше.

  4. Сохраните конфигурацию.

  5. Вы увидите couchbase как добавленный сервер в списке MCP Servers в Advanced Settings. Обновите, чтобы проверить, включен ли сервер.

  6. Теперь вы можете использовать MCP-сервер Couchbase в Windsurf Editor для запросов к кластеру Couchbase на естественном языке и выполнения операций CRUD с документами.

Для получения дополнительных сведений об интеграции MCP с Windsurf Editor обратитесь к официальной документации Windsurf MCP.

VS Code

Выполните следующие шаги, чтобы использовать MCP-сервер Couchbase с VS Code.

  1. Установите VS Code

  2. Ниже приведены несколько способов настройки MCP-сервера.

    • Для конфигурации сервера рабочей области

      • Создайте новый файл в рабочей области как .vscode/mcp.json.
      • Добавьте конфигурацию и сохраните файл.
    • Для глобальной конфигурации сервера:

      • Выполните MCP: Open User Configuration в Command Palette (Ctrl+Shift+P или Cmd+Shift+P)
      • Добавьте конфигурацию и сохраните файл.
    • Примечание: VS Code использует servers как свойство JSON верхнего уровня в файлах mcp.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. Теперь вы можете использовать MCP-сервер Couchbase в VS Code для запросов к кластеру Couchbase на естественном языке и выполнения операций CRUD с документами.

Журналы: В Command Palette (Ctrl+Shift+P или Cmd+Shift+P),

  • выполните команду MCP: List Servers и выберите сервер couchbase
  • выберите «Show Output», чтобы просмотреть его журналы на вкладке Output.
JetBrains IDEs

Выполните следующие шаги, чтобы использовать MCP-сервер Couchbase с JetBrains IDEs

  1. Установите любую из JetBrains IDEs
  2. Установите любой из плагинов JetBrains — AI Assistant или Junie
  3. Перейдите в Settings > Tools > AI Assistant or Junie > MCP Server
  4. Нажмите «+», чтобы добавить конфигурацию MCP Couchbase, и нажмите Save.
  5. Вы увидите MCP-сервер Couchbase, добавленный в список серверов. После нажатия Apply MCP-сервер Couchbase запускается, и при наведении курсора на статус отображаются все доступные инструменты.
  6. Теперь вы можете использовать MCP-сервер Couchbase в JetBrains IDEs для запросов к кластеру Couchbase на естественном языке и выполнения операций CRUD с документами.

Журналы: Файл журнала можно просмотреть в Help > Show Log in Finder (Explorer) > mcp > couchbase

Сервер операционной аналитики

Наряду с сервером operational по умолчанию (тем, который описан в каждом разделе выше), этот дистрибутив поставляет второй сервер для кластеров Operational Insights, использующий отдельный SDK couchbase-operational-insights. Это другой продукт, чем обычный кластер Couchbase, и он работает как независимый процесс на собственном порту.

Запустите его, передав operational-insights в качестве подкоманды CLI (или добавив его как команду контейнера):

uvx couchbase-mcp-server operational-insights
# or, from source:
uv run src/mcp_server.py operational-insights
# or, via Docker:
docker run --rm -i \
  -e CB_OI_CONNECTION_STRING=http://localhost:8095 \
  -e CB_OI_USERNAME=Administrator \
  -e CB_OI_PASSWORD=password \
  couchbase/mcp-server:<version> operational-insights

--connection-string — это URL HTTP(S), а не строка подключения couchbase:// — например, http://localhost:8095 для локального сервера Operational Insights или https://<host>:18095 для Capella. Это самая частая ошибка конфигурации при направлении этого сервера на кластер.

Аргумент CLIПеременная окруженияОписаниеПо умолчанию
--connection-stringCB_OI_CONNECTION_STRINGURL конечной точки Operational Insights (HTTP/HTTPS, не couchbase://)Нет
--usernameCB_OI_USERNAMEИмя пользователя Operational InsightsНет
--passwordCB_OI_PASSWORDПароль Operational InsightsНет
--ca-cert-pathCB_OI_CA_CERT_PATHПуть к корневому сертификату сервера (PEM) для проверки самоподписанного/недоверенного сертификата сервераНет
--client-cert-pathCB_OI_CLIENT_CERT_PATHПуть к клиентскому сертификату для аутентификации mTLS — PEM-сертификат (в паре с --client-key-path) или пакет PKCS#12 (.p12/.pfx, --client-key-path не задан). Требует https:// --connection-string; переопределяет --username/--password при заданииНет
--client-key-pathCB_OI_CLIENT_KEY_PATHПуть к закрытому ключу клиентского сертификата (PEM). Оставьте незаданным, если --client-cert-path — пакет PKCS#12Нет
--client-cert-passwordCB_OI_CLIENT_CERT_PASSWORDПароль для расшифровки зашифрованного клиентского ключа или пакета PKCS#12Нет

Все остальные флаги (--read-only-mode, --transport, --host, --port, --disabled-tools, --confirmation-required-tools, --log-*, --oauth-*) идентичны флагам операционного сервера — см. Дополнительная конфигурация для MCP-сервера — за исключением значений по умолчанию для порта (8001, не 8000) и файла журнала (mcp_server_operational_insights.log, не mcp_server.log), поскольку два сервера не могут совместно использовать ни то, ни другое. OAuth использует те же метки областей (couchbase-mcp:read / couchbase-mcp:write), что и операционный сервер, поэтому существующая конфигурация IdP работает для обоих без изменений.

Пример конфигурации MCP-клиента:

{
  "mcpServers": {
    "couchbase-operational-insights": {
      "command": "uvx",
      "args": ["couchbase-mcp-server", "operational-insights"],
      "env": {
        "CB_OI_CONNECTION_STRING": "http://localhost:8095",
        "CB_OI_USERNAME": "Administrator",
        "CB_OI_PASSWORD": "password"
      }
    }
  }
}

См. Инструменты Operational Insights выше для списка инструментов и примечание о трёх именах инструментов, общих с операционным сервером.

Оба сервера используют единую запись в MCP Registry, io.github.couchbase/mcp-server-couchbase, опубликованную из server.json. В списке есть отдельная запись пакета для каждого сервера (PyPI и Docker). Каждая запись передаёт свою подкоманду (operational или operational-insights) и объявляет только аргументы и переменные окружения этого сервера.

Режим транспорта Streamable HTTP

MCP-сервер можно запустить в режиме транспорта Streamable HTTP, который позволяет нескольким клиентам подключаться к одному экземпляру сервера через HTTP. Проверьте, поддерживает ли ваш MCP-клиент транспорт streamable http, прежде чем пытаться подключиться к MCP-серверу в этом режиме.

Примечание: Авторизация 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. Это можно использовать в MCP-клиентах, поддерживающих режим транспорта streamable http, таких как Cursor.

Конфигурация MCP-клиента

{
  "mcpServers": {
    "couchbase-http": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

Режим транспорта SSE

Существует возможность запустить MCP-сервер в режиме транспорта Server-Sent Events (SSE).

Примечание: Режим 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. Это можно использовать в MCP-клиентах, поддерживающих режим транспорта SSE, таких как Cursor.

SSE: Конфигурация MCP-клиента

{
  "mcpServers": {
    "couchbase-sse": {
      "url": "http://localhost:8000/sse"
    }
  }
}

Авторизация OAuth 2.1

При работе с --transport=http MCP-сервер может действовать как сервер ресурсов OAuth 2.1: он проверяет входящие bearer JWT-токены против JWKS вашего поставщика удостоверений. Он не зависит от поставщика (любой поставщик OAuth 2.1 / OIDC, публикующий JWKS — Auth0, Okta, Keycloak, AWS Cognito, Microsoft Entra и т. д.) и не выдаёт токены и не управляет пользователями. Настройки OAuth игнорируются на stdio.

OAuth настраивается с помощью переменных CB_MCP_OAUTH_*, перечисленных в Дополнительной конфигурации:

  • OAuth активируется только когда заданы все три переменные CB_MCP_OAUTH_JWT_JWKS_URI, CB_MCP_OAUTH_JWT_ISSUER и CB_MCP_OAUTH_JWT_AUDIENCE; задание только некоторых из них приводит к ошибке при запуске.
  • Задание CB_MCP_OAUTH_MCP_BASE_URL дополнительно публикует метаданные защищённого ресурса RFC 9728, чтобы клиенты с поддержкой 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. Переменные окружения такие же, как описано в разделе Дополнительная конфигурация.

Независимый 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-транспорта, таких как http и sse.

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 собирает, защищает и обрабатывает информацию, обратитесь к Политике конфиденциальности Couchbase, доступной по адресу https://www.couchbase.com/privacy-policy.

Советы по устранению неполадок

  • Убедитесь, что путь к репозиторию вашего MCP-сервера указан правильно в конфигурации, если вы запускаете из исходного кода.
  • Проверьте, что строка подключения к Couchbase, имя пользователя базы данных, пароль или пути к сертификатам указаны правильно.
  • Если вы используете Couchbase Capella, убедитесь, что кластер доступен с машины, на которой работает MCP-сервер.
  • Проверьте, что у пользователя базы данных есть соответствующие разрешения для доступа хотя бы к одному bucket.
  • Убедитесь, что менеджер пакетов uv правильно установлен и доступен. Возможно, потребуется указать абсолютный путь к uv/uvx в поле command в конфигурации.
  • Проверьте журналы на наличие ошибок или предупреждений, которые могут указывать на проблемы с MCP-сервером. Расположение журналов зависит от вашего MCP-клиента.
  • Если вы наблюдаете проблемы при запуске MCP-сервера из исходного кода после обновления локального репозитория MCP-сервера, попробуйте выполнить uv sync для обновления зависимостей.

Интеграционное тестирование

Мы предоставляем высокоуровневые интеграционные тесты MCP для проверки того, что сервер предоставляет ожидаемые инструменты и что их можно вызывать против демонстрационного кластера Couchbase.

  1. Экспортируйте учётные данные демонстрационного кластера:
    • CB_CONNECTION_STRING
    • CB_USERNAME
    • CB_PASSWORD
    • Необязательно: CB_MCP_TEST_BUCKET (bucket для проверки во время тестов)
    • Необязательно, для собственных тестов сервера Operational Insights: CB_OI_CONNECTION_STRING / CB_OI_USERNAME / CB_OI_PASSWORD. Эти тесты автоматически пропускаются (не завершаются с ошибкой), когда переменные не заданы.
  2. Запустите тесты:
uv run --extra dev pytest tests/integration -v

Часто задаваемые вопросы

Что такое Couchbase MCP Server? Это самостоятельно размещаемая реализация Model Context Protocol, которая позволяет ИИ-ассистентам и агентам (Claude, Cursor, Windsurf, VS Code Copilot, JetBrains AI Assistant/Junie и любому другому MCP-клиенту) запрашивать и, при желании, изменять данные в кластере Couchbase с помощью естественного языка.

Как подключить Claude Desktop к Couchbase? Установите сервер с помощью uvx couchbase-mcp-server (или запустите его из исходного кода или Docker), затем добавьте его конфигурацию в claude_desktop_config.json Claude Desktop, как показано в Конфигурации. Перезапустите Claude Desktop, и он подхватит новые инструменты.

Могу ли я использовать это с Couchbase Capella? Да. Та же конфигурация CB_CONNECTION_STRING/CB_USERNAME/CB_PASSWORD (или сертификат mTLS) работает как для Couchbase Capella, так и для самостоятельно управляемых кластеров Couchbase Server.

Безопасно ли позволять ИИ-агенту записывать в мою базу данных? По умолчанию CB_MCP_READ_ONLY_MODE имеет значение true, поэтому все операции записи — upsert/insert/replace/delete документов и изменяющие данные операторы SQL++ — отключены, и инструменты записи даже не загружаются. Вы также можете отключить отдельные инструменты (см. Отключение инструментов) или требовать явного подтверждения пользователя перед выполнением конкретных инструментов (см. Запрос/Подтверждение). Контроль на уровне инструментов направляет поведение LLM; разрешения RBAC вашего пользователя Couchbase остаются реальной границей безопасности.

Могу ли я выполнять запросы на естественном языке к своим данным, не написав SQL++ самостоятельно? Да — задайте вашему ИИ-ассистенту вопрос на простом английском (например, «покажи мне 10 самых последних заказов на сумму более $100»), и он сможет перевести его в запрос SQL++ с помощью инструмента run_sql_plus_plus_query. Вы также можете попросить ассистента explain_sql_plus_plus_query запрос или обратиться к советнику по индексам за рекомендациями. В чём разница между транспортами STDIO, Streamable HTTP и SSE? STDIO предназначен для одного локального MCP-клиента (например, Claude Desktop), который запускает сервер как подпроцесс. Streamable HTTP позволяет нескольким клиентам совместно использовать один запущенный экземпляр сервера через HTTP и поддерживает OAuth 2.1. SSE — это более старый HTTP-транспорт, который теперь объявлен устаревшим в спецификации MCP в пользу Streamable HTTP — см. Streamable HTTP Transport Mode.

Официально ли это поддерживается Couchbase? Этот проект поддерживается сообществом Couchbase — см. Support Policy. Корпоративная поддержка доступна отдельно через Couchbase AI Data Plane.

Участие в разработке

Мы приветствуем вклад сообщества! Хотите ли вы исправить ошибки, добавить функции или улучшить документацию — ваша помощь ценится.

Если вам нужна помощь, вы нашли ошибку или хотите предложить улучшения, лучшее место для этого — прямо здесь, открыв issue на GitHub.

Для разработчиков

Если вы заинтересованы в написании кода или настройке среды разработки:

📖 См. 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.

Ваше сотрудничество помогает нам всем двигаться вперёд вместе — спасибо!