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.couchbase.com/mcp-server.
Содержание
- Зачем нужен Couchbase MCP Server
- Примеры запросов
- Возможности/Инструменты
- Предварительные требования
- Конфигурация
- Сервер Operational Insights
- Режим транспорта Streamable HTTP
- Режим транспорта SSE
- Авторизация OAuth 2.1
- Docker-образ
- Сбор данных об использовании
- Советы по устранению неполадок
- Интеграционное тестирование
- FAQ
- Участие в разработке
- Политика поддержки
Зачем нужен 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 самых последних документов в коллекции
userswhere 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, 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 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/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, 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:
-
MCP-сервер теперь можно добавить в Claude Desktop, отредактировав файл конфигурации. Более подробные инструкции можно найти в кратком руководстве по MCP.
- На Mac файл конфигурации находится по адресу
~/Library/Application Support/Claude/claude_desktop_config.json - На Windows файл конфигурации находится по адресу
%APPDATA%\Claude\claude_desktop_config.json
Откройте файл конфигурации и добавьте конфигурацию в раздел
mcpServers. - На Mac файл конфигурации находится по адресу
-
Перезапустите Claude Desktop, чтобы применить изменения.
-
Теперь вы можете использовать сервер в Claude Desktop для выполнения запросов к кластеру Couchbase на естественном языке и выполнения операций CRUD с документами.
Журналы
Журналы Claude Desktop можно найти в следующих местах:
- MacOS: ~/Library/Logs/Claude
- Windows: %APPDATA%\Claude\Logs
Журналы можно использовать для диагностики проблем с подключением или других проблем с конфигурацией MCP-сервера. Для получения дополнительных сведений обратитесь к официальной документации.
Cursor
Выполните следующие шаги, чтобы использовать MCP-сервер Couchbase с Cursor:
-
Установите Cursor на свой компьютер.
-
В Cursor перейдите в Cursor > Cursor Settings > Tools & Integrations > MCP Tools. Также ознакомьтесь с документацией по настройке конфигурации MCP-сервера от Cursor.
-
Укажите ту же конфигурацию вручную или используйте ссылку установки в один клик Install in Cursor. Возможно, вам потребуется добавить конфигурацию сервера в родительский ключ
mcpServers.Примечание: Ссылка установки использует значения-заполнители из примеров конфигурации выше. Обновите строку подключения и учетные данные после установки.
-
Сохраните конфигурацию.
-
Вы увидите couchbase как добавленный сервер в списке MCP-серверов. Обновите, чтобы проверить, включен ли сервер.
-
Теперь вы можете использовать MCP-сервер Couchbase в Cursor для запросов к кластеру Couchbase на естественном языке и выполнения операций CRUD с документами.
Для получения дополнительных сведений об интеграции MCP с Cursor обратитесь к официальной документации Cursor MCP.
Журналы
В нижней панели Cursor нажмите «Output» и выберите «Cursor MCP» из раскрывающегося меню, чтобы просмотреть журналы сервера. Это может помочь диагностировать проблемы с подключением или другие проблемы с конфигурацией MCP-сервера.
Windsurf Editor
Выполните следующие шаги, чтобы использовать MCP-сервер Couchbase с Windsurf Editor.
-
Установите Windsurf Editor на свой компьютер.
-
В Windsurf Editor перейдите в Command Palette > Windsurf MCP Configuration Panel или Windsurf - Settings > Advanced > Cascade > Model Context Protocol (MCP) Servers. Для получения дополнительных сведений о конфигурации обратитесь к официальной документации.
-
Нажмите Add Server, а затем Add custom server. В конфигурации, которая откроется в редакторе, добавьте конфигурацию MCP-сервера Couchbase из приведенной выше.
-
Сохраните конфигурацию.
-
Вы увидите couchbase как добавленный сервер в списке MCP Servers в Advanced Settings. Обновите, чтобы проверить, включен ли сервер.
-
Теперь вы можете использовать MCP-сервер Couchbase в Windsurf Editor для запросов к кластеру Couchbase на естественном языке и выполнения операций CRUD с документами.
Для получения дополнительных сведений об интеграции MCP с Windsurf Editor обратитесь к официальной документации Windsurf MCP.
VS Code
Выполните следующие шаги, чтобы использовать MCP-сервер Couchbase с VS Code.
-
Установите VS Code
-
Ниже приведены несколько способов настройки MCP-сервера.
-
Для конфигурации сервера рабочей области
- Создайте новый файл в рабочей области как .vscode/mcp.json.
- Добавьте конфигурацию и сохраните файл.
-
Для глобальной конфигурации сервера:
- Выполните MCP: Open User Configuration в Command Palette (
Ctrl+Shift+PилиCmd+Shift+P) - Добавьте конфигурацию и сохраните файл.
- Выполните MCP: Open User Configuration в Command Palette (
-
Примечание: 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" } } } }
-
-
После сохранения файла сервер запускается, и появляется небольшой список действий с
Running|Stop|n Tools|More... -
Нажмите на параметры из списка, чтобы
Start/Stop/управлять сервером. -
Теперь вы можете использовать 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
- Установите любую из JetBrains IDEs
- Установите любой из плагинов JetBrains — AI Assistant или Junie
- Перейдите в Settings > Tools > AI Assistant or Junie > MCP Server
- Нажмите «+», чтобы добавить конфигурацию MCP Couchbase, и нажмите Save.
- Вы увидите MCP-сервер Couchbase, добавленный в список серверов. После нажатия Apply MCP-сервер Couchbase запускается, и при наведении курсора на статус отображаются все доступные инструменты.
- Теперь вы можете использовать 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-string | CB_OI_CONNECTION_STRING | URL конечной точки Operational Insights (HTTP/HTTPS, не couchbase://) | Нет |
--username | CB_OI_USERNAME | Имя пользователя Operational Insights | Нет |
--password | CB_OI_PASSWORD | Пароль Operational Insights | Нет |
--ca-cert-path | CB_OI_CA_CERT_PATH | Путь к корневому сертификату сервера (PEM) для проверки самоподписанного/недоверенного сертификата сервера | Нет |
--client-cert-path | CB_OI_CLIENT_CERT_PATH | Путь к клиентскому сертификату для аутентификации mTLS — PEM-сертификат (в паре с --client-key-path) или пакет PKCS#12 (.p12/.pfx, --client-key-path не задан). Требует https:// --connection-string; переопределяет --username/--password при задании | Нет |
--client-key-path | CB_OI_CLIENT_KEY_PATH | Путь к закрытому ключу клиентского сертификата (PEM). Оставьте незаданным, если --client-cert-path — пакет PKCS#12 | Нет |
--client-cert-password | CB_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.
- Экспортируйте учётные данные демонстрационного кластера:
CB_CONNECTION_STRINGCB_USERNAMECB_PASSWORD- Необязательно:
CB_MCP_TEST_BUCKET(bucket для проверки во время тестов) - Необязательно, для собственных тестов сервера Operational Insights:
CB_OI_CONNECTION_STRING/CB_OI_USERNAME/CB_OI_PASSWORD. Эти тесты автоматически пропускаются (не завершаются с ошибкой), когда переменные не заданы.
- Запустите тесты:
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.
Ваше сотрудничество помогает нам всем двигаться вперёд вместе — спасибо!