Couchbase
oficialInteractúa con los datos almacenados en clústeres de Couchbase usando lenguaje natural.
¿Qué puedes hacer con Couchbase MCP?
- Explorar la estructura del clúster — Solicita listar buckets, scopes y colecciones, e inspecciona esquemas mediante
get_buckets_in_cluster,get_scopes_in_bucketyget_schema_for_collection. - Ejecutar consultas SQL++ — Ejecuta consultas de solo lectura contra un scope con
run_sql_plus_plus_query, u obtén planes de ejecución medianteexplain_sql_plus_plus_query. - Verificar la salud del clúster — Verifica la conexión y el estado de los servicios con
test_cluster_connectionyget_cluster_health_and_services, o extrae diagnósticos medianteget_cluster_diagnostics_report. - Analizar el rendimiento de las consultas — Identifica consultas lentas o ineficientes usando
get_longest_running_queriesyget_queries_using_primary_index. - Gestionar documentos — Recupera o modifica documentos por ID con
get_document_by_idyupsert_document_by_id(las herramientas de escritura requierenCB_MCP_READ_ONLY_MODE=false). - Optimizar índices — Obtén recomendaciones de índices con
get_index_advisor_recommendationso lista los índices existentes mediantelist_indexes.
Documentación
Servidor MCP de Couchbase
El Servidor MCP de Couchbase es un servidor autoalojado de Model Context Protocol (MCP) que conecta agentes de IA y asistentes impulsados por LLM — Claude, Cursor, Windsurf, VS Code Copilot y otros clientes MCP — con datos en clústeres de Couchbase, ya sea alojados en Capella o autogestionados. MCP es un estándar abierto que permite a los asistentes de IA llamar herramientas y consultar fuentes de datos externas; este servidor implementa ese estándar para Couchbase, de modo que un agente de IA pueda inspeccionar tu clúster, ejecutar consultas SQL++, leer y escribir documentos, y analizar el rendimiento de las consultas usando lenguaje natural en lugar de código escrito a mano.
Proporciona herramientas en categorías que incluyen Salud del Clúster, Esquema de Datos, Clave-Valor, Consulta y Rendimiento — con controles de seguridad mediante el modo de solo lectura (activado por defecto) y la desactivación fina de herramientas, para que puedas permitir que un agente de IA explore y consulte tus datos sin arriesgar escrituras no intencionadas. Admite transportes STDIO y HTTP Streamable.
El servidor MCP de Couchbase se distribuye como un paquete del Python Package Index (PyPI) y mediante Docker. El soporte empresarial para el Servidor MCP de Couchbase está disponible mediante la licencia de Couchbase AI Data Plane, que también incluye el uso y soporte empresarial de Couchbase Agent Memory y Couchbase Agent Catalog.
Para documentación completa, visita mcp-server.couchbase.com.
Para documentación completa, visita docs.couchbase.com/mcp-server.
Tabla de Contenidos
- Por qué el Servidor MCP de Couchbase
- Ejemplos de Prompts
- Características/Herramientas
- Requisitos Previos
- Configuración
- Servidor de Información Operativa
- Modo de Transporte HTTP Streamable
- Modo de Transporte SSE
- Autorización OAuth 2.1
- Imagen Docker
- Recopilación de Datos de Uso
- Consejos de Solución de Problemas
- Pruebas de Integración
- Preguntas Frecuentes
- Contribuciones
- Política de Soporte
Por qué el Servidor MCP de Couchbase
- Seguro por defecto — las operaciones de escritura (upserts/inserciones/eliminaciones de documentos y consultas SQL++ que modifican datos) están bloqueadas a menos que establezcas explícitamente
CB_MCP_READ_ONLY_MODE=false, y las herramientas individuales pueden desactivarse o protegerse tras la confirmación del usuario. - Funciona con Capella y clústeres autogestionados — la misma configuración se conecta a Couchbase Capella (totalmente gestionado) o a un clúster de Couchbase Server autoalojado.
- Consciente de RBAC — la desactivación de herramientas es una capa de conveniencia para guiar el comportamiento del LLM; el control de acceso basado en roles del usuario subyacente de Couchbase sigue siendo el límite de seguridad autoritativo.
- Transportes de producción — ejecútalo sobre STDIO para clientes de escritorio locales, o HTTP Streamable con OAuth 2.1 opcional (JWT/JWKS, independiente del proveedor — Auth0, Okta, Keycloak, Entra, Cognito, etc.) para despliegues compartidos/remotos.
- Cualquier cliente MCP — probado con Claude Desktop, Cursor, Windsurf, VS Code y JetBrains AI Assistant/Junie; funciona con cualquier cliente que implemente la especificación MCP.
Ejemplos de Prompts
Una vez que el servidor esté conectado, puedes hablar con tu clúster de Couchbase en lenguaje natural a través de tu asistente de IA. Por ejemplo:
- "¿Qué buckets, scopes y colecciones tengo en este clúster, y cuál es el esquema de la colección
orders?" - "Ejecuta una consulta SQL++ para encontrar los 10 documentos más recientes en la colección
userswhere status = 'active'." - "¿Cuáles son las 5 consultas más lentas en este clúster en la última hora, y alguna de ellas carece de un índice de cobertura?"
- "Comprueba si este clúster está sano y dime qué servicios están en ejecución."
- "Inserta un nuevo documento en la colección
productscon estos campos: ..." (requiereCB_MCP_READ_ONLY_MODE=false)
Características/Herramientas
Esta distribución incluye dos servidores: el servidor operativo (por defecto —
las tablas inmediatamente siguientes) se comunica con un clúster de Couchbase regular mediante el
SDK couchbase, y el servidor Operational Insights
(su propia tabla más abajo) se comunica con clústeres de Operational Insights mediante
el SDK couchbase-operational-insights.
Herramientas de configuración y salud del clúster
| Nombre de la Herramienta | Descripción |
|---|---|
get_server_configuration_status | Obtén el estado y la configuración del servidor sin conectarte al clúster — informa sobre el modo de solo lectura, herramientas desactivadas/que requieren confirmación, ajustes de OAuth y la configuración de registro resuelta |
test_cluster_connection | Verifica las credenciales del clúster conectándote a él |
get_cluster_health_and_services | Obtén el estado de salud del clúster y la lista de todos los servicios en ejecución, opcionalmente filtrados a servicios específicos mediante service_types |
get_cluster_diagnostics_report | Obtén los diagnósticos de conexión en caché del SDK — si las conexiones ya estaban rotas y durante cuánto tiempo, sin sondeo activo de red |
get_cluster_metrics | Obtén una o más estadísticas del clúster en una ventana de tiempo histórica mediante el endpoint de rango de estadísticas de la API REST de Gestión. Solo Couchbase Server 7.6+ autogestionado — no disponible en Capella. |
discover_tool_input_values | Busca los valores de entrada exactos que otra herramienta necesita, a partir de datos de referencia incluidos con el servidor — actualmente cada nombre de métrica de Couchbase Server (tipo, unidad, versión añadida, descripción) para get_cluster_metrics. Navega por categoría o busca difusamente por palabra clave. Funciona sin conexión, sin conexión al clúster. |
Herramientas de descubrimiento de modelo de datos y esquema
| Nombre de la Herramienta | Descripción |
|---|---|
get_buckets_in_cluster | Obtén una lista de todos los buckets del clúster |
get_scopes_in_bucket | Obtén una lista de todos los scopes en el bucket especificado |
get_collections_in_scope | Obtén una lista de todas las colecciones en un scope y bucket especificados. Ten en cuenta que esta herramienta requiere que el clúster tenga el servicio Query. |
get_scopes_and_collections_in_bucket | Obtén una lista de todos los scopes y colecciones en el bucket especificado |
get_schema_for_collection | Obtén la estructura de una colección |
create_scope | Crea un nuevo scope en un bucket (Couchbase Server 7.6+ y Capella). Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
create_collection | Crea una nueva colección en un scope existente (Couchbase Server 7.6+ y Capella). Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
delete_scope | Elimina un scope y todas sus colecciones de un bucket — permanente. Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
delete_collection | Elimina una colección y todos sus documentos de un scope — permanente. Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
Herramientas de operaciones KV de documentos
| Nombre de la Herramienta | Descripción |
|---|---|
get_document_by_id | Obtén un documento por ID de un scope y colección especificados |
lookup_subdocument | Consulta partes de un documento (campos específicos, comprobaciones de existencia o recuentos de arrays/objetos) por ruta sin recuperar todo el documento |
upsert_document_by_id | Inserta o actualiza un documento por ID en un scope y colección especificados. Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
insert_document_by_id | Inserta un nuevo documento por ID (falla si el documento existe). Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
replace_document_by_id | Reemplaza un documento existente por ID (falla si el documento no existe). Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
delete_document_by_id | Elimina un documento por ID de un scope y colección especificados. Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
mutate_subdocument | Modifica partes de un documento existente (upsert, insert, replace, remove, operaciones de arrays, contadores) por ruta sin reescribir todo el documento. Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
Herramientas de consulta e indexación
| Nombre de la Herramienta | Descripción |
|---|---|
list_indexes | Lista todos los índices del clúster con sus definiciones, con filtrado opcional por bucket, scope, colección y nombre de índice. Establece return_raw_index_stats=true para devolver la información de índice sin procesar. |
get_index_advisor_recommendations | Obtén recomendaciones de índices del Asesor de Índices de Couchbase para una consulta SQL++ dada y optimiza el rendimiento de la consulta |
create_index | Crea un índice secundario GSI escalar (no vectorial) en una colección. Diferido por defecto — llama a build_index después para construirlo. Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
build_index | Activa la construcción de todos los índices diferidos en una colección. Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
drop_index | Elimina un índice GSI (escalar o vectorial) de una colección. Desactivada por defecto cuando CB_MCP_READ_ONLY_MODE=true. |
run_sql_plus_plus_query | Ejecuta una consulta SQL++ en un scope especificado. Las consultas se limitan automáticamente al bucket y scope especificados, así que usa nombres de colección directamente (p. ej., SELECT * FROM users en lugar de SELECT * FROM bucket.scope.users).CB_MCP_READ_ONLY_MODE es true por defecto, lo que significa que todas las operaciones de escritura (KV, Query, gestión de scope/colección y gestión de índices) están desactivadas. Cuando está habilitado (es decir, CB_MCP_READ_ONLY_MODE=true), las herramientas de escritura no se cargan y las consultas SQL++ que modifican datos están bloqueadas. |
explain_sql_plus_plus_query | Genera y evalúa un plan EXPLAIN para una consulta SQL++. Devuelve metadatos de la consulta, el plan extraído y los hallazgos de la evaluación del plan. |
Herramientas de búsqueda de texto completo (FTS)
Requiere Couchbase Server 7.6+ y el servicio Search. La búsqueda vectorial no es compatible con estas herramientas (consulta las herramientas de búsqueda vectorial por separado).
| Nombre de la Herramienta | Descripción |
|---|---|
list_fts_indexes | Lista los índices de Search (FTS). Sin filtros, lista los índices a nivel de clúster (heredados); con bucket_name, lista los índices a nivel de scope (con ámbito) en cada scope de ese bucket; con bucket_name y scope_name, lista los índices a nivel de scope en ese único scope. |
get_fts_index_definition | Obtén la definición completa de un único índice de Search (mapeos, analizadores, parámetros de plan). Pasa bucket_name y scope_name juntos para un índice a nivel de scope, u omite ambos para un índice a nivel de clúster (heredado). |
run_fts_query | Ejecuta una consulta FTS contra un índice de Search, u obtén su plan de ejecución. query es el cuerpo JSON de la consulta FTS sin procesar, que admite cualquier tipo de consulta no vectorial (match, match_phrase, term, conjuncts, disjuncts, geo, rango de fecha/número, query_string, ...). Pasa explain=true para obtener el plan de ejecución en lugar de los resultados — esto aún ejecuta la consulta (limit con valor predeterminado 1) ya que el servicio Search solo expone el plan por coincidencia encontrada, no como una llamada separada de prueba en seco. |
Herramientas de análisis de rendimiento de consultas
| Nombre de la Herramienta | Descripción |
|---|---|
get_longest_running_queries | Obtén las consultas de mayor duración por tiempo de servicio promedio |
get_most_frequent_queries | Obtén las consultas ejecutadas con más frecuencia |
get_queries_with_largest_response_sizes | Obtén las consultas con los tamaños de respuesta más grandes |
get_queries_with_large_result_count | Obtén las consultas con los recuentos de resultados más grandes |
get_queries_using_primary_index | Obtén las consultas que usan un índice primario (posible problema de rendimiento) |
get_queries_not_using_covering_index | Obtén las consultas que no usan un índice de cobertura |
get_queries_not_selective | Obtén las consultas que no son selectivas (los escaneos de índice devuelven muchos más documentos que el resultado final) |
Herramientas de Operational Insights
Registradas por el servidor operational-insights separado (consulta
Servidor de Información Operativa más abajo), no por el
servidor operational predeterminado.
| Nombre de la herramienta | Descripción |
|---|---|
get_server_configuration_status | Obtener el estado y la configuración de este servidor sin conectarse a un clúster — modo de solo lectura, herramientas deshabilitadas/que requieren confirmación, configuración de OAuth y la configuración de registro resuelta. Compartido con el servidor operativo: la misma herramienta, registrada por ambos. |
get_databases_in_cluster | Listar todas las bases de datos en el clúster de Operational Insights. |
get_scopes_in_database | Listar todos los scopes en una base de datos. |
get_collections_in_scope | Listar todas las colecciones (conjuntos de datos) en un scope. Comparte su nombre con la herramienta del mismo nombre del servidor operativo — consulte la nota a continuación. |
get_schema_for_collection | Inferir el esquema JSON de una colección muestreando documentos. Comparte su nombre con la herramienta del mismo nombre del servidor operativo — consulte la nota a continuación. |
list_indexes | Listar índices secundarios a través del catálogo System.Metadata.Index (el SDK no tiene administrador de índices). Comparte su nombre con la herramienta del mismo nombre del servidor operativo — consulte la nota a continuación. |
run_query_sync | Ejecutar una declaración SQL++ (SELECT, DML o DDL) y devolver todas las filas de resultados. Aplica el modo de solo lectura en el lado del servidor mediante QueryOptions(readonly=True) — no hay un analizador SQL++ del lado del cliente aquí. |
explain_query | Generar el plan de consulta para una declaración SQL++ mediante EXPLAIN, sin ejecutarla. |
create_index | Crear un índice secundario mediante CREATE INDEX (el SDK no tiene administrador de índices). Deshabilitado por defecto cuando CB_MCP_READ_ONLY_MODE=true. Comparte su nombre con la herramienta del mismo nombre del servidor operativo — consulte la nota a continuación. |
run_query_async | Iniciar una declaración SQL++ sin esperar a que termine, devolviendo un token query_handle. Misma aplicación de solo lectura que run_query_sync. |
get_async_query_results | Verificar si una consulta asíncrona ha terminado y, si es así, devolver sus filas. También funciona como verificación de estado — llame de nuevo más tarde si aún no está lista. |
discard_async_query_results | Liberar los búferes de resultados de una consulta asíncrona terminada en el servidor. Paso de limpieza normal después de get_async_query_results. |
cancel_async_query | Detener una consulta asíncrona que aún se está ejecutando. Deshabilitado por defecto cuando CB_MCP_READ_ONLY_MODE=true. Una consulta terminada no se puede cancelar — descarte sus resultados en su lugar. |
Las herramientas de la API de Solicitud Asíncrona del Servidor forman un flujo de inicio → sondeo → descartar-o-cancelar
para consultas de larga duración: run_query_async devuelve un query_handle,
get_async_query_results se sondea hasta que informa que está lista (y devuelve
las filas), luego discard_async_query_results libera los resultados o,
para una consulta aún en ejecución, cancel_async_query la detiene.
Nota:
get_collections_in_scope,get_schema_for_collection,create_indexylist_indexesexisten, con comportamiento diferente, en ambos servidores. (get_server_configuration_statustambién aparece en ambos, pero es deliberadamente una herramienta compartida — misma implementación, misma forma de resultado — por lo que no necesita desambiguación.) Cada servidor es un proceso separado, por lo que esto solo es una preocupación si un solo cliente MCP registra tantooperationalcomooperational-insightssimultáneamente — en ese caso, desambigüe en la capa de configuración del cliente (por ejemplo, dando a las dos entradas del servidor nombres distintos en la configuración del propio cliente).
Requisitos previos
- Python 3.10 o superior.
- Un clúster de Couchbase en ejecución. La forma más fácil de comenzar es usar el nivel gratuito de Capella, que es la versión totalmente administrada del servidor de Couchbase. Puede seguir las instrucciones para importar uno de los conjuntos de datos de muestra o importar los suyos propios.
- uv instalado para ejecutar el servidor.
- Un cliente MCP como Claude Desktop instalado para conectar el servidor a Claude. Las instrucciones se proporcionan para Claude Desktop y Cursor. También se pueden usar otros clientes MCP.
Configuración
El servidor MCP se puede ejecutar desde el paquete PyPI precompilado o desde el código fuente usando uv.
Ejecución desde PyPI
Publicamos un paquete PyPI precompilado para el servidor MCP.
Configuración del servidor usando el paquete precompilado para clientes MCP
Autenticación básica
{
"mcpServers": {
"couchbase": {
"command": "uvx",
"args": ["couchbase-mcp-server"],
"env": {
"CB_CONNECTION_STRING": "couchbases://connection-string",
"CB_USERNAME": "username",
"CB_PASSWORD": "password"
}
}
}
}
o
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"
}
}
}
}
Nota: Si tiene otros servidores MCP en uso en el cliente, puede agregarlo al objeto
mcpServersexistente.
Ejecución desde el código fuente
El servidor MCP se puede ejecutar desde el código fuente usando este repositorio.
Clonar el repositorio en su máquina local
git clone https://github.com/couchbase/mcp-server-couchbase.git
Configuración del servidor usando el código fuente para clientes MCP
Esta es la configuración común para los clientes MCP como 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"
}
}
}
}
Nota:
path/to/cloned/repo/mcp-server-couchbase/debe ser la ruta al repositorio clonado en su máquina local. ¡No olvide la barra diagonal al final!
Nota: Si tiene otros servidores MCP en uso en el cliente, puede agregarlo al objeto
mcpServersexistente.
Configuración adicional para el servidor MCP
El servidor se puede configurar usando variables de entorno o argumentos de línea de comandos:
| Variable de entorno | Argumento de CLI | Descripción | Predeterminado |
|---|---|---|---|
CB_CONNECTION_STRING | --connection-string | Cadena de conexión al clúster de Couchbase | Requerido |
CB_USERNAME | --username | Nombre de usuario con acceso a los buckets requeridos para autenticación básica | Requerido (o Certificado de cliente y Clave necesarios para mTLS) |
CB_PASSWORD | --password | Contraseña para autenticación básica | Requerido (o Certificado de cliente y Clave necesarios para mTLS) |
CB_CLIENT_CERT_PATH | --client-cert-path | Ruta al archivo de certificado de cliente para autenticación mTLS | Requerido si se usa mTLS (o Nombre de usuario y Contraseña requeridos) |
CB_CLIENT_KEY_PATH | --client-key-path | Ruta al archivo de clave de cliente para autenticación mTLS | Requerido si se usa mTLS (o Nombre de usuario y Contraseña requeridos) |
CB_CA_CERT_PATH | --ca-cert-path | Ruta al certificado raíz del servidor para TLS si el servidor está configurado con un certificado autofirmado/no confiable. Esto no será necesario si se conecta a Capella | |
CB_MCP_READ_ONLY_MODE | --read-only-mode | Evitar todas las modificaciones de datos (KV, Query, gestión de scopes/colecciones y gestión de índices). Cuando está habilitado, las herramientas de escritura no se cargan. | true |
CB_MCP_TRANSPORT | --transport | Modo de transporte: stdio, http, sse | stdio |
CB_MCP_HOST | --host | Host para modos de transporte HTTP/SSE | 127.0.0.1 |
CB_MCP_PORT | --port | Puerto para modos de transporte HTTP/SSE | 8000 |
CB_MCP_DISABLED_TOOLS | --disabled-tools | Herramientas a deshabilitar (consulte Deshabilitar herramientas) | Ninguna |
CB_MCP_CONFIRMATION_REQUIRED_TOOLS | --confirmation-required-tools | Herramientas que requieren confirmación explícita del usuario antes de la ejecución mediante elicitación MCP (consulte Herramientas que requieren elicitación/confirmación) | Ninguna |
CB_MCP_LOG_LEVEL | --log-level | Nivel de registro para el servidor MCP: off, debug, info, warning, error (consulte Registro) | info |
CB_MCP_LOG_SINKS | --log-sinks | Destinos de registro separados por comas: stderr, file, o ambos (consulte Registro) | stderr |
CB_MCP_LOG_FILE | --log-file | Ruta base para archivos de registro por nivel (solo se usa cuando el sumidero file está habilitado) | mcp_server.log |
CB_MCP_LOG_ROTATION_MAX_SIZE_MB | --log-rotation-max-size-mb | Tamaño máximo global en MB por archivo de registro antes de que rote, heredado por cada nivel a menos que se anule. 0 no es válido y vuelve al predeterminado con una advertencia de inicio | 1 (1 MB) |
CB_MCP_LOG_MAX_BYTES | --log-max-bytes | Obsoleto — use CB_MCP_LOG_ROTATION_MAX_SIZE_MB (MB). Tamaño de rotación global en bytes, aún respetado para compatibilidad hacia atrás; ignorado cuando CB_MCP_LOG_ROTATION_MAX_SIZE_MB también está configurado | Sin configurar |
CB_MCP_LOG_ERROR_ROTATION_MAX_SIZE_MB | --log-error-rotation-max-size-mb | Tamaño de rotación en MB para el archivo de registro ERROR; anula CB_MCP_LOG_ROTATION_MAX_SIZE_MB para ERROR | Hereda CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_WARNING_ROTATION_MAX_SIZE_MB | --log-warning-rotation-max-size-mb | Tamaño de rotación en MB para el archivo de registro WARNING; anula CB_MCP_LOG_ROTATION_MAX_SIZE_MB para WARNING | Hereda CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_INFO_ROTATION_MAX_SIZE_MB | --log-info-rotation-max-size-mb | Tamaño de rotación en MB para el archivo de registro INFO; anula CB_MCP_LOG_ROTATION_MAX_SIZE_MB para INFO | Hereda CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_DEBUG_ROTATION_MAX_SIZE_MB | --log-debug-rotation-max-size-mb | Tamaño de rotación en MB para el archivo de registro DEBUG; anula CB_MCP_LOG_ROTATION_MAX_SIZE_MB para DEBUG | Hereda CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_RETENTION_BACKUP_COUNT | --log-retention-backup-count | Archivos de respaldo rotados conservados por archivo de registro de nivel (excluyendo el archivo activo), aplicado a cada nivel a menos que se anule. 0 conserva solo el archivo activo (consulte Registro) | 1 |
CB_MCP_LOG_ERROR_RETENTION_BACKUP_COUNT | --log-error-retention-backup-count | Respaldos rotados conservados para el archivo de registro ERROR; anula el conteo global para ERROR | Hereda CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_LOG_WARNING_RETENTION_BACKUP_COUNT | --log-warning-retention-backup-count | Respaldos rotados conservados para el archivo de registro WARNING; anula el conteo global para WARNING | Hereda CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_LOG_INFO_RETENTION_BACKUP_COUNT | --log-info-retention-backup-count | Respaldos rotados conservados para el archivo de registro INFO; anula el conteo global para INFO | Hereda CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_LOG_DEBUG_RETENTION_BACKUP_COUNT | --log-debug-retention-backup-count | Respaldos rotados conservados para el archivo de registro DEBUG; anula el conteo global para DEBUG | Hereda CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_OAUTH_JWT_JWKS_URI | --oauth-jwks-uri | Endpoint JWKS del proveedor de identidad utilizado para verificar JWTs de portador. Habilita OAuth cuando se configura con el emisor y la audiencia (consulte Autorización OAuth 2.1) | Ninguno |
CB_MCP_OAUTH_JWT_ISSUER | --oauth-issuer | Reclamación iss esperada del JWT. Requerido para habilitar OAuth | Ninguno |
CB_MCP_OAUTH_JWT_AUDIENCE | --oauth-audience | Reclamación aud esperada del JWT. Requerido para habilitar OAuth | Ninguno |
CB_MCP_OAUTH_JWT_ALGORITHM | --oauth-algorithm | Algoritmo de firma JWT: uno de RS256/384/512, ES256/384/512, PS256/384/512 | RS256 |
CB_MCP_OAUTH_MCP_BASE_URL | --oauth-mcp-base-url | URL base pública de este servidor. Cuando se configura, publica Metadatos de Recursos Protegidos RFC 9728 para que los clientes conscientes de PRM puedan descubrir el IdP | Ninguno |
CB_MCP_OAUTH_SCOPE_READ_LABEL | --oauth-scope-read-label | Anular la etiqueta de alcance OAuth tratada como acceso de 'lectura' (anunciada en PRM y comparada con la reclamación scope/scp del token). Use cuando su IdP no pueda emitir la forma canónica | couchbase-mcp:read |
CB_MCP_OAUTH_SCOPE_WRITE_LABEL | --oauth-scope-write-label | Anular la etiqueta de alcance OAuth tratada como acceso de 'escritura'; misma semántica que la etiqueta de lectura | couchbase-mcp:write |
Configuración del modo de solo lectura
CB_MCP_READ_ONLY_MODE es el único interruptor que controla las operaciones de escritura:
- Cuando
true(predeterminado): Todas las operaciones de escritura (KV, Query, gestión de scopes/colecciones y gestión de índices) están deshabilitadas. Todas las herramientas de escritura (KV: upsert, insert, replace, delete, mutación de sub-documentos; gestión de scopes/colecciones: create_scope, create_collection, delete_scope, delete_collection; gestión de índices: create_index, build_index, drop_index) no se cargan y no estarán disponibles para el LLM, y las consultas SQL++ que modifican datos o estructura están bloqueadas. - Cuando
false: Todas las herramientas de escritura se cargan y se permiten las consultas de modificación de datos/estructura SQL++.
Este es el valor predeterminado seguro recomendado para evitar modificaciones de datos inadvertidas por los LLM.
Nota: Para la autenticación, necesita el Nombre de usuario y la Contraseña o las rutas del Certificado de cliente y la Clave. Opcionalmente, puede especificar la ruta del certificado raíz de CA que se usará para validar los certificados del servidor. Si se especifican tanto la ruta del Certificado de cliente y la Clave como el nombre de usuario y la contraseña, los certificados de cliente se usarán para la autenticación.
Deshabilitar herramientas
Puede desactivar herramientas específicas para evitar que se carguen y se expongan al cliente MCP. Las herramientas desactivadas no aparecerán en el descubrimiento de herramientas y no podrán ser invocadas por el LLM.
Formatos admitidos
Lista separada por comas:
# 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
Ruta de archivo (un nombre de herramienta por línea):
# Environment variable
CB_MCP_DISABLED_TOOLS=disabled_tools.txt
# Command line
uvx couchbase-mcp-server --disabled-tools disabled_tools.txt
Formato de archivo (p. ej., disabled_tools.txt):
# Write operations
upsert_document_by_id
delete_document_by_id
# Index advisor
get_index_advisor_recommendations
Las líneas que comienzan con # se tratan como comentarios y se ignoran.
Ejemplos de configuración del cliente MCP
Usando lista separada por comas:
{
"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"
}
}
}
}
Usando ruta de archivo (recomendado para muchas herramientas):
{
"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"
}
}
}
}
Nota de seguridad importante
Advertencia: Desactivar herramientas por sí solo no garantiza que ciertas operaciones no puedan realizarse. Los permisos RBAC (Control de Acceso Basado en Roles) del usuario de la base de datos subyacente son el control de seguridad autoritativo.
Por ejemplo, incluso si desactiva
upsert_document_by_idydelete_document_by_id, las modificaciones de datos aún pueden ocurrir a través de la herramientarun_sql_plus_plus_queryusando sentencias DML de SQL++ (INSERT, UPDATE, DELETE, MERGE) a menos que:
CB_MCP_READ_ONLY_MODEesté establecido entrue(predeterminado), O- El usuario de la base de datos carezca de los permisos RBAC necesarios para la modificación de datos
Mejor práctica: Configure siempre permisos RBAC apropiados en sus credenciales de usuario de Couchbase como medida de seguridad principal. Use la desactivación de herramientas como una capa adicional para guiar el comportamiento del LLM y reducir la superficie de ataque, no como el único control de seguridad.
Obtención/Confirmación para Llamadas de Herramientas
Puede requerir confirmación explícita del usuario para herramientas específicas antes de la ejecución (cuando el cliente MCP admita la obtención).
CB_MCP_CONFIRMATION_REQUIRED_TOOLS / --confirmation-required-tools admite estos formatos:
- Lista separada por comas
- Ruta de archivo (un nombre de herramienta por línea, comentarios
#admitidos)
Ejemplo:
# 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
Cuando se invoca una herramienta listada:
- Si el cliente admite la obtención, se solicita al usuario que confirme.
- Si el cliente no admite la obtención, la herramienta se ejecuta sin confirmación por compatibilidad con versiones anteriores.
También puede verificar la versión del servidor usando:
uvx couchbase-mcp-server --version
Registro (Logging)
El servidor MCP registra en stderr de forma predeterminada. El registro se configura con las variables CB_MCP_LOG_* listadas en Configuración adicional:
CB_MCP_LOG_LEVEL— cuánto se registra:info(el predeterminado) registra eventos del ciclo de vida e invocaciones de herramientas,debugagrega detalles internos verbosos, yoffdesactiva todo el registro.CB_MCP_LOG_SINKS— dónde van los registros:stderr(el predeterminado), archivos rotativos por nivel (file), o ambos. Confile, se escribe un archivo por nivel (por ejemplo,mcp_server.info.logymcp_server.error.log) en la ruta establecida porCB_MCP_LOG_FILE.- Tamaño de rotación —
CB_MCP_LOG_ROTATION_MAX_SIZE_MBes el tamaño global (en MB) en el que cada archivo por nivel rota. Anule niveles individuales conCB_MCP_LOG_<LEVEL>_ROTATION_MAX_SIZE_MB(ERROR/WARNING/INFO/DEBUG), también en MB, que heredan el global cuando no se establecen. Un tamaño de0(global o por nivel) no es válido y vuelve al predeterminado (1 MB) con una advertencia de inicio.CB_MCP_LOG_MAX_BYTES(bytes) está obsoleto pero aún se respeta por compatibilidad con versiones anteriores; se ignora cuandoCB_MCP_LOG_ROTATION_MAX_SIZE_MBtambién está establecido, e imprime una advertencia de obsolescencia al inicio. - Retención —
CB_MCP_LOG_RETENTION_BACKUP_COUNTestablece cuántas copias de seguridad rotadas se conservan por nivel (excluyendo el archivo activo); el predeterminado de1preserva el comportamiento anterior. Anule niveles individuales conCB_MCP_LOG_<LEVEL>_RETENTION_BACKUP_COUNT(ERROR/WARNING/INFO/DEBUG), que heredan el valor global cuando no se establecen. Establezca un conteo a0para conservar solo el archivo activo para ese nivel — aún está limitado por el tamaño de rotación (se restablece en la rotación en lugar de respaldarse). - Instantánea de configuración del servidor — cuando el sumidero
fileestá activo, un registro único (SO, Python, versiones de dependencias, transporte, configuración de registro resuelta y configuración del servidor redactada) se escribe como JSON en un archivomcp_server_config.log.jsondedicado (derivado de la baseCB_MCP_LOG_FILE). Se sobrescribe en cada inicio, por lo que el soporte siempre tiene la configuración actual y nunca se sale de un registro rotativo.
# 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
Para más detalles, consulte la documentación.
Configuración Específica del Cliente
Claude Desktop
Siga los pasos a continuación para usar el servidor MCP de Couchbase con el cliente MCP de Claude Desktop
-
El servidor MCP ahora se puede agregar a Claude Desktop editando el archivo de configuración. Se pueden encontrar instrucciones más detalladas en la guía de inicio rápido de MCP.
- En Mac, el archivo de configuración se encuentra en
~/Library/Application Support/Claude/claude_desktop_config.json - En Windows, el archivo de configuración se encuentra en
%APPDATA%\Claude\claude_desktop_config.json
Abra el archivo de configuración y agregue la configuración a la sección
mcpServers. - En Mac, el archivo de configuración se encuentra en
-
Reinicie Claude Desktop para aplicar los cambios.
-
Ahora puede usar el servidor en Claude Desktop para ejecutar consultas en el clúster de Couchbase usando lenguaje natural y realizar operaciones CRUD en documentos.
Registros
Los registros de Claude Desktop se pueden encontrar en las siguientes ubicaciones:
- MacOS: ~/Library/Logs/Claude
- Windows: %APPDATA%\Claude\Logs
Los registros se pueden usar para diagnosticar problemas de conexión u otros problemas con su configuración del servidor MCP. Para más detalles, consulte la documentación oficial.
Cursor
Siga los pasos a continuación para usar el servidor MCP de Couchbase con Cursor:
-
Instale Cursor en su máquina.
-
En Cursor, vaya a Cursor > Configuración de Cursor > Herramientas e Integraciones > Herramientas MCP. También consulte la documentación sobre configuración del servidor MCP de Cursor.
-
Especifique la misma configuración manualmente, o use el enlace de un clic Instalar en Cursor. Es posible que necesite agregar la configuración del servidor bajo una clave principal de
mcpServers.Nota: El enlace de instalación usa valores de marcador de posición de los ejemplos de configuración anteriores. Actualice la cadena de conexión y las credenciales después de la instalación.
-
Guarde la configuración.
-
Verá couchbase como un servidor agregado en la lista de servidores MCP. Actualice para ver si el servidor está habilitado.
-
Ahora puede usar el servidor MCP de Couchbase en Cursor para consultar su clúster de Couchbase usando lenguaje natural y realizar operaciones CRUD en documentos.
Para más detalles sobre la integración de MCP con Cursor, consulte la documentación oficial de MCP de Cursor.
Registros
En el panel inferior de Cursor, haga clic en "Output" y seleccione "Cursor MCP" en el menú desplegable para ver los registros del servidor. Esto puede ayudar a diagnosticar problemas de conexión u otros problemas con su configuración del servidor MCP.
Windsurf Editor
Siga los pasos a continuación para usar el servidor MCP de Couchbase con Windsurf Editor.
-
Instale Windsurf Editor en su máquina.
-
En Windsurf Editor, navegue a Paleta de Comandos > Panel de Configuración MCP de Windsurf o Windsurf - Configuración > Avanzado > Cascade > Servidores de Protocolo de Contexto de Modelo (MCP). Para más detalles sobre la configuración, consulte la documentación oficial.
-
Haga clic en Agregar Servidor y luego Agregar servidor personalizado. En la configuración que se abre en el editor, agregue la configuración del Servidor MCP de Couchbase de arriba.
-
Guarde la configuración.
-
Verá couchbase como un servidor agregado en la lista de Servidores MCP bajo Configuración Avanzada. Actualice para ver si el servidor está habilitado.
-
Ahora puede usar el servidor MCP de Couchbase en Windsurf Editor para consultar su clúster de Couchbase usando lenguaje natural y realizar operaciones CRUD en documentos.
Para más detalles sobre la integración de MCP con Windsurf Editor, consulte la documentación oficial de MCP de Windsurf.
VS Code
Siga los pasos a continuación para usar el servidor MCP de Couchbase con VS Code.
-
Instale VS Code
-
A continuación se presentan un par de formas de configurar el servidor MCP.
-
Para una configuración de servidor de espacio de trabajo
- Cree un nuevo archivo en el espacio de trabajo como .vscode/mcp.json.
- Agregue la configuración y guarde el archivo.
-
Para la configuración global del servidor:
- Ejecute MCP: Abrir Configuración de Usuario en la Paleta de Comandos (
Ctrl+Shift+PoCmd+Shift+P) - Agregue la configuración y guarde el archivo.
- Ejecute MCP: Abrir Configuración de Usuario en la Paleta de Comandos (
-
Nota: VS Code usa
serverscomo la propiedad JSON de nivel superior en archivos mcp.json para definir servidores MCP (Protocolo de Contexto de Modelo), mientras que Cursor usamcpServerspara la configuración equivalente. Consulte las configuraciones de cliente de VS Code para cualquier cambio o detalle adicional. A continuación se proporciona un ejemplo de configuración de VS Code.{ "servers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password" } } } }
-
-
Una vez que guarde el archivo, el servidor se inicia y aparece una pequeña lista de acciones con
Running|Stop|n Tools|More... -
Haga clic en las opciones de la lista de opciones para
Start/Stop/gestionar el servidor. -
Ahora puede usar el servidor MCP de Couchbase en VS Code para consultar su clúster de Couchbase usando lenguaje natural y realizar operaciones CRUD en documentos.
Registros:
En la Paleta de Comandos (Ctrl+Shift+P o Cmd+Shift+P),
- ejecute el comando MCP: Listar Servidores y seleccione el servidor couchbase
- elija "Mostrar Salida" para ver sus registros en la pestaña Salida.
IDE de JetBrains
Siga los pasos a continuación para usar el servidor MCP de Couchbase con IDE de JetBrains
- Instale cualquiera de los IDE de JetBrains
- Instale cualquiera de los complementos de JetBrains - AI Assistant o Junie
- Navegue a Configuración > Herramientas > AI Assistant o Junie > Servidor MCP
- Haga clic en "+" para agregar la configuración de MCP de Couchbase y haga clic en Guardar.
- Verá el servidor MCP de Couchbase agregado a la lista de servidores. Una vez que haga clic en Aplicar, el servidor MCP de Couchbase se inicia y al pasar el cursor sobre el estado, muestra todas las herramientas disponibles.
- Ahora puede usar el servidor MCP de Couchbase en IDE de JetBrains para consultar su clúster de Couchbase usando lenguaje natural y realizar operaciones CRUD en documentos.
Registros: El archivo de registro se puede explorar en Ayuda > Mostrar Registro en Finder (Explorador) > mcp > couchbase
Servidor de Información Operativa
Junto al servidor operational predeterminado (el que cada sección anterior
describe), esta distribución incluye un segundo servidor para
clústeres de Información Operativa,
usando el SDK separado
couchbase-operational-insights.
Es un producto diferente de un clúster regular de Couchbase y se ejecuta como
un proceso independiente en su propio puerto.
Ejecútelo pasando operational-insights como subcomando de CLI (o agregándolo
como el comando del contenedor):
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 es una URL HTTP(S), no una cadena de conexión
couchbase:// — p. ej., http://localhost:8095 para un servidor local de
Información Operativa, o https://<host>:18095 para Capella. Este es el error de
configuración más común al apuntar este servidor a un clúster.
| Argumento CLI | Variable de entorno | Descripción | Predeterminado |
|---|---|---|---|
--connection-string | CB_OI_CONNECTION_STRING | URL del endpoint de Operational Insights (HTTP/HTTPS, no couchbase://) | Ninguno |
--username | CB_OI_USERNAME | Nombre de usuario de Operational Insights | Ninguno |
--password | CB_OI_PASSWORD | Contraseña de Operational Insights | Ninguno |
--ca-cert-path | CB_OI_CA_CERT_PATH | Ruta al certificado raíz del servidor (PEM), para verificar un certificado de servidor autofirmado/no confiable | Ninguno |
--client-cert-path | CB_OI_CLIENT_CERT_PATH | Ruta al certificado de cliente para autenticación mTLS: un certificado PEM (emparejado con --client-key-path) o un paquete PKCS#12 (.p12/.pfx, --client-key-path sin establecer). Requiere un https:// --connection-string; anula --username/--password cuando se establece | Ninguno |
--client-key-path | CB_OI_CLIENT_KEY_PATH | Ruta a la clave privada del certificado de cliente (PEM). Déjela sin establecer cuando --client-cert-path sea un paquete PKCS#12 | Ninguno |
--client-cert-password | CB_OI_CLIENT_CERT_PASSWORD | Contraseña de descifrado para una clave de cliente cifrada o un paquete PKCS#12 | Ninguno |
Cada otra bandera (--read-only-mode, --transport, --host, --port,
--disabled-tools, --confirmation-required-tools, --log-*,
--oauth-*) es idéntica a la del servidor operativo; consulte
Configuración adicional para el servidor MCP —
excepto los valores predeterminados para puerto (8001, no 8000) y archivo de registro
(mcp_server_operational_insights.log, no mcp_server.log), ya que dos
servidores no pueden compartir ninguno de ellos. OAuth utiliza las mismas etiquetas de alcance
(couchbase-mcp:read / couchbase-mcp:write) que el servidor operativo, por lo que
una configuración de IdP existente funciona para ambos sin cambios.
Ejemplo de configuración de cliente 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"
}
}
}
}
Consulte Herramientas de Operational Insights arriba para la lista de herramientas, y la nota allí sobre los tres nombres de herramientas compartidos con el servidor operativo.
Ambos servidores comparten una única lista del Registro MCP,
io.github.couchbase/mcp-server-couchbase, publicada desde
server.json. La lista tiene una entrada de paquete separada para cada servidor (PyPI
y Docker). Cada entrada pasa su subcomando (operational o
operational-insights) y declara solo los argumentos y variables de entorno de ese servidor.
Modo de transporte HTTP Streamable
El servidor MCP puede ejecutarse en modo de transporte HTTP Streamable, que permite que múltiples clientes se conecten a la misma instancia del servidor a través de HTTP. Verifique si su cliente MCP admite el transporte HTTP streamable antes de intentar conectarse al servidor MCP en este modo.
Nota: La autorización OAuth 2.1 es compatible con este transporte. Consulte Autorización OAuth 2.1. Sin OAuth configurado, el endpoint HTTP no está autenticado.
Uso
Por defecto, el servidor MCP se ejecutará en el puerto 8000, pero esto se puede configurar usando la variable de entorno --port o CB_MCP_PORT.
uvx couchbase-mcp-server \
--connection-string='<couchbase_connection_string>' \
--username='<database_username>' \
--password='<database_password>' \
--read-only-mode=true \
--transport=http
El servidor estará disponible en http://localhost:8000/mcp. Esto se puede usar en clientes MCP que admitan el modo de transporte HTTP streamable, como Cursor.
Configuración del cliente MCP
{
"mcpServers": {
"couchbase-http": {
"url": "http://localhost:8000/mcp"
}
}
}
Modo de transporte SSE
Existe una opción para ejecutar el servidor MCP en modo de transporte Server-Sent Events (SSE).
Nota: El modo SSE ha sido obsoleto por MCP. Tenemos soporte para HTTP Streamable.
SSE: Uso
Por defecto, el servidor MCP se ejecutará en el puerto 8000, pero esto se puede configurar usando la variable de entorno --port o CB_MCP_PORT.
uvx couchbase-mcp-server \
--connection-string='<couchbase_connection_string>' \
--username='<database_username>' \
--password='<database_password>' \
--read-only-mode=true \
--transport=sse
El servidor estará disponible en http://localhost:8000/sse. Esto se puede usar en clientes MCP que admitan el modo de transporte SSE, como Cursor.
SSE: Configuración del cliente MCP
{
"mcpServers": {
"couchbase-sse": {
"url": "http://localhost:8000/sse"
}
}
}
Autorización OAuth 2.1
Cuando se ejecuta con --transport=http, el servidor MCP puede actuar como un servidor de recursos OAuth 2.1: valida los JWT de portador entrantes contra el JWKS de su proveedor de identidad. Es independiente del proveedor (cualquier proveedor OAuth 2.1 / OIDC que publique un JWKS — Auth0, Okta, Keycloak, AWS Cognito, Microsoft Entra, etc.) y no emite tokens ni gestiona usuarios. La configuración de OAuth se ignora en stdio.
OAuth se configura con las variables CB_MCP_OAUTH_* enumeradas en Configuración adicional:
- OAuth se activa solo cuando las tres de
CB_MCP_OAUTH_JWT_JWKS_URI,CB_MCP_OAUTH_JWT_ISSUERyCB_MCP_OAUTH_JWT_AUDIENCEestán establecidas; establecer solo algunas de ellas falla al inicio. - Establecer
CB_MCP_OAUTH_MCP_BASE_URLademás publica Metadatos de Recursos Protegidos RFC 9728 para que los clientes compatibles con PRM puedan descubrir el servidor de autorización. - El acceso está controlado por dos alcances leídos de la declaración
scope/scpdel token:couchbase-mcp:read(herramientas de lectura, incluido SQL++) ycouchbase-mcp:write(herramientas de escritura: mutaciones KV, gestión de alcances/colecciones y gestión de índices). El acceso completo requiere ambos. Si su IdP no puede emitir esas etiquetas canónicas, anúlelas conCB_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>'
Para más detalles, consulte la documentación.
Imagen Docker
El servidor MCP también se puede compilar y ejecutar como un contenedor Docker. Las imágenes precompiladas se pueden encontrar en DockerHub o extraerse mediante docker pull docker.io/couchbase/mcp-server:latest.
Alternativamente, somos parte del Catálogo MCP de Docker.
Compilación de la imagen
docker build -t mcp/couchbase-src .
Compilación con argumentos
Si desea compilar con los argumentos de compilación para el hash de confirmación y el tiempo de compilación, puede compilar usando: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 .
Alternativamente, use el script de compilación proporcionado:
# Build with default image name (mcp/couchbase-src)
./build.sh
# Build with custom image name
./build.sh my-custom/image-name
Este script automáticamente:
- Acepta un parámetro opcional de nombre de imagen (predeterminado a
mcp/couchbase-src) - Genera el hash de confirmación de git y la marca de tiempo de compilación
- Crea múltiples etiquetas útiles (
latest,<short-commit>) - Muestra información de compilación y resultados
- Usa los mismos argumentos que las compilaciones de CI/CD
Verifique las etiquetas de la imagen:
# 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
Ejecución
El servidor MCP se puede ejecutar con las variables de entorno utilizadas para configurar los ajustes de Couchbase. Las variables de entorno son las mismas que se describen en la sección de Configuración adicional.
Contenedor Docker independiente
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
Las variables de entorno CB_MCP_PORT y CB_MCP_HOST solo son aplicables en el caso de modos de transporte HTTP como http y sse.
Docker: Configuración del cliente MCP
La imagen Docker se puede usar en modo de transporte stdio con la siguiente configuración.
{
"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"
]
}
}
}
Notas
- El valor de
couchbase_connection_stringdepende de si el servidor Couchbase se ejecuta en la misma máquina host, en otro contenedor Docker o en un host remoto. Si su servidor Couchbase se ejecuta en su máquina host, su cadena de conexión probablemente tendría la formacouchbase://host.docker.internal. Para más detalles, consulte la documentación de docker. - Puede especificar la red del contenedor usando la opción
--network=<your_network>. La red que elija depende de su entorno; el predeterminado esbridge. Para más detalles, consulte controladores de red en docker.
Riesgos asociados con los LLM
- El uso de modelos de lenguaje grandes y tecnología similar implica riesgos, incluido el potencial de resultados inexactos o dañinos.
- Couchbase no revisa ni evalúa la calidad o precisión de dichos resultados, y dichos resultados pueden no reflejar las opiniones de Couchbase.
- Usted es el único responsable de decidir si usar modelos de lenguaje grandes y tecnología relacionada, y de cumplir con cualquier término de licencia, términos de uso y las políticas de su organización que rigen su uso de los mismos.
Recopilación de datos de uso
Este producto recopila automáticamente datos de uso y rendimiento (como el nombre y la versión del producto) e información del navegador (como la dirección IP) (colectivamente, "Datos de uso"). Couchbase utiliza los Datos de uso, junto con otros datos que usted pueda proporcionar a Couchbase (como su nombre de usuario o dirección de correo electrónico), para desarrollar y mejorar nuestros productos, así como para informar nuestros programas de ventas y marketing. No accedemos ni recopilamos ningún dato que usted almacene en los productos de Couchbase. Usamos los Datos de uso para comprender patrones de uso agregados y hacer que nuestros productos sean más útiles para usted. Para obtener más información sobre cómo Couchbase recopila, protege y procesa la información, consulte la Política de Privacidad de Couchbase disponible en https://www.couchbase.com/privacy-policy.
Consejos para la resolución de problemas
- Asegúrese de que la ruta al repositorio de su servidor MCP sea correcta en la configuración si se ejecuta desde el código fuente.
- Verifique que su cadena de conexión de Couchbase, nombre de usuario de la base de datos, contraseña o la ruta a los certificados sean correctos.
- Si usa Couchbase Capella, asegúrese de que el clúster sea accesible desde la máquina donde se ejecuta el servidor MCP.
- Compruebe que el usuario de la base de datos tenga los permisos adecuados para acceder al menos a un bucket.
- Confirme que el administrador de paquetes
uvesté instalado y sea accesible correctamente. Es posible que deba proporcionar la ruta absoluta auv/uvxen el campocommanden la configuración. - Revise los registros para ver si hay errores o advertencias que puedan indicar problemas con el servidor MCP. La ubicación de los registros depende de su cliente MCP.
- Si observa problemas al ejecutar su servidor MCP desde el código fuente después de actualizar su repositorio local del servidor MCP, intente ejecutar
uv syncpara actualizar las dependencias.
Pruebas de integración
Proporcionamos pruebas de integración MCP de alto nivel para verificar que el servidor expone las herramientas esperadas y que se pueden invocar contra un clúster de demostración de Couchbase.
- Exporte las credenciales del clúster de demostración:
CB_CONNECTION_STRINGCB_USERNAMECB_PASSWORD- Opcional:
CB_MCP_TEST_BUCKET(un bucket para sondear durante las pruebas) - Opcional, para las pruebas propias del servidor de Operational Insights:
CB_OI_CONNECTION_STRING/CB_OI_USERNAME/CB_OI_PASSWORD. Esas pruebas se omiten automáticamente (no fallan) cuando no están establecidas.
- Ejecute las pruebas:
uv run --extra dev pytest tests/integration -v
Preguntas frecuentes
¿Qué es el servidor MCP de Couchbase? Es una implementación autohospedada del Protocolo de Contexto de Modelo que permite a los asistentes y agentes de IA (Claude, Cursor, Windsurf, VS Code Copilot, JetBrains AI Assistant/Junie, y cualquier otro cliente MCP) consultar y, opcionalmente, modificar datos en un clúster de Couchbase usando lenguaje natural.
¿Cómo conecto Claude Desktop a Couchbase? Instale el servidor con uvx couchbase-mcp-server (o ejecútelo desde el código fuente o Docker), luego agregue su configuración al claude_desktop_config.json de Claude Desktop como se muestra en Configuración. Reinicie Claude Desktop y detectará las nuevas herramientas.
¿Puedo usar esto con Couchbase Capella? Sí. La misma configuración de CB_CONNECTION_STRING/CB_USERNAME/CB_PASSWORD (o certificado mTLS) funciona tanto para Couchbase Capella como para clústeres de Couchbase Server autogestionados.
¿Es seguro permitir que un agente de IA escriba en mi base de datos? Por defecto, CB_MCP_READ_ONLY_MODE es verdadero, por lo que todas las operaciones de escritura — upserts/inserciones/reemplazos/eliminaciones de documentos y declaraciones SQL++ que modifican datos — están deshabilitadas y las herramientas de escritura ni siquiera se cargan. También puede deshabilitar herramientas individuales (consulte Deshabilitar herramientas) o requerir confirmación explícita del usuario antes de que se ejecuten herramientas específicas (consulte Elicitación/Confirmación). Los controles a nivel de herramienta guían el comportamiento del LLM; los permisos RBAC de su usuario de Couchbase siguen siendo el límite de seguridad real.
¿Puedo ejecutar consultas en lenguaje natural contra mis datos sin escribir SQL++ yo mismo? Sí: haga una pregunta a su asistente de IA en inglés sencillo (por ejemplo, "muéstrame los 10 pedidos más recientes de más de $100") y puede traducirla a una consulta SQL++ usando la herramienta run_sql_plus_plus_query. También puede pedirle al asistente que explain_sql_plus_plus_query una consulta o pedir recomendaciones al asesor de índices.
¿Cuál es la diferencia entre el transporte STDIO, HTTP Streamable y SSE? STDIO es para un único cliente MCP local (por ejemplo, Claude Desktop) que inicia el servidor como un subproceso. HTTP Streamable permite que múltiples clientes compartan una única instancia de servidor en ejecución a través de HTTP, y admite OAuth 2.1. SSE es el transporte HTTP más antiguo, ahora obsoleto por la especificación MCP en favor de HTTP Streamable — consulte Modo de transporte HTTP Streamable.
¿Esto está soportado oficialmente por Couchbase? Este proyecto es mantenido por la comunidad de Couchbase — consulte Política de soporte. El soporte empresarial está disponible por separado a través de Couchbase AI Data Plane.
Contribuciones
¡Agradecemos las contribuciones de la comunidad! Ya sea que quieras corregir errores, agregar funciones o mejorar la documentación, tu ayuda es apreciada.
Si necesitas ayuda, has encontrado un error o deseas contribuir con mejoras, el mejor lugar para hacerlo es aquí mismo — abriendo un issue en GitHub.
Para Desarrolladores
Si estás interesado en contribuir con código o configurar un entorno de desarrollo:
📖 Consulte CONTRIBUTING.md para obtener instrucciones completas de configuración para desarrolladores, incluyendo:
- Configuración del entorno de desarrollo con
uv - Linting y formato de código con Ruff
- Instalación de hooks de pre-commit
- Resumen de la estructura del proyecto
- Flujo de trabajo y prácticas de desarrollo
Inicio Rápido para Contribuidores
# 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
📢 Política de Soporte
¡Apreciamos sinceramente tu interés en este proyecto! Este proyecto es mantenido por la comunidad de Couchbase, lo que significa que no está soportado oficialmente por nuestro equipo de soporte. Sin embargo, nuestros ingenieros están monitoreando y manteniendo activamente este repositorio y intentarán resolver los problemas en la medida de lo posible.
Nuestro portal de soporte no puede ayudar con solicitudes relacionadas con este proyecto, por lo que solicitamos amablemente que todas las consultas permanezcan dentro de GitHub.
Tu colaboración nos ayuda a avanzar juntos — ¡gracias!