Couchbase
officielInteragissez avec les données stockées dans les clusters Couchbase en utilisant le langage naturel.
Que pouvez-vous faire avec Couchbase MCP ?
Demandez à votre assistant d'inspecter la santé du cluster, d'explorer les schémas, d'exécuter des requêtes SQL++ et de gérer les documents dans votre cluster Couchbase.
- Exécuter des requêtes SQL++ — Demandez à votre assistant d'interroger les données avec
run_sql_plus_plus_query, automatiquement limité à un bucket et une collection. - Explorer le schéma — Découvrez les buckets, scopes et collections via
get_buckets_in_clusteretget_schema_for_collection. - Gérer les documents — Lisez, insérez ou supprimez des documents par ID avec
get_document_by_idetupsert_document_by_id. - Vérifier la santé du cluster — Vérifiez la connectivité et l'état des services avec
test_cluster_connectionetget_cluster_health_and_services. - Optimiser les index — Listez les index et obtenez des recommandations via
list_indexesetget_index_advisor_recommendations. - Analyser les performances des requêtes — Trouvez les requêtes lentes ou non sélectives avec
get_longest_running_queriesetget_queries_using_primary_index.
Documentation
Couchbase MCP Server est un serveur MCP auto-hébergé qui permet aux agents IA de se connecter et d'interagir avec les données dans les clusters Couchbase, qu'ils soient hébergés sur Capella ou auto-gérés. Il fournit des outils dans plusieurs catégories, notamment Cluster Health, Data Schema, Key-Value, Query et Performance — avec des contrôles de sécurité via le mode lecture seule et la désactivation fine des outils. Il prend en charge les transports STDIO et HTTP Streamable.
Couchbase MCP server est distribué sous forme de paquet Python Package Index (PyPI) et via Docker. Le support Entreprise pour Couchbase MCP Server est disponible en concédant la licence Couchbase AI Data Plane, qui donne également droit à l'utilisation et au support Entreprise de Couchbase Agent Memory et Couchbase Agent Catalog.
Pour la documentation complète, consultez mcp-server.couchbase.com.
Fonctionnalités/Outils
Outils de configuration et de santé du cluster
| Nom de l'outil | Description |
|---|---|
get_server_configuration_status | Obtenir le statut du serveur et la configuration sans se connecter au cluster — rapporte le mode lecture seule, les outils désactivés/nécessitant confirmation, les paramètres OAuth et la configuration de journalisation résolue |
test_cluster_connection | Vérifier les informations d'identification du cluster en se connectant au cluster |
get_cluster_health_and_services | Obtenir l'état de santé du cluster et la liste de tous les services en cours d'exécution |
Outils de découverte du modèle de données et du schéma
| Nom de l'outil | Description |
|---|---|
get_buckets_in_cluster | Obtenir la liste de tous les buckets du cluster |
get_scopes_in_bucket | Obtenir la liste de tous les scopes du bucket spécifié |
get_collections_in_scope | Obtenir la liste de toutes les collections d'un scope et d'un bucket spécifiés. Notez que cet outil nécessite que le cluster dispose du service Query. |
get_scopes_and_collections_in_bucket | Obtenir la liste de tous les scopes et collections du bucket spécifié |
get_schema_for_collection | Obtenir la structure d'une collection |
create_scope | Créer un nouveau scope dans un bucket (Couchbase Server 7.6+ et Capella). Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
create_collection | Créer une nouvelle collection dans un scope existant (Couchbase Server 7.6+ et Capella). Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
delete_scope | Supprimer un scope et toutes ses collections d'un bucket — permanent. Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
delete_collection | Supprimer une collection et tous ses documents d'un scope — permanent. Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
Outils d'opérations KV sur documents
| Nom de l'outil | Description |
|---|---|
get_document_by_id | Obtenir un document par ID depuis un scope et une collection spécifiés |
lookup_subdocument | Rechercher des parties d'un document (champs spécifiques, vérifications d'existence ou comptages de tableaux/objets) par chemin sans récupérer tout le document |
upsert_document_by_id | Upsert d'un document par ID dans un scope et une collection spécifiés. Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
insert_document_by_id | Insérer un nouveau document par ID (échoue si le document existe). Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
replace_document_by_id | Remplacer un document existant par ID (échoue si le document n'existe pas). Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
delete_document_by_id | Supprimer un document par ID depuis un scope et une collection spécifiés. Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
mutate_subdocument | Modifier des parties d'un document existant (upsert, insertion, remplacement, suppression, opérations sur tableaux, compteurs) par chemin sans réécrire tout le document. Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
Outils de requête et d'indexation
| Nom de l'outil | Description |
|---|---|
list_indexes | Lister tous les index du cluster avec leurs définitions, avec filtrage optionnel par bucket, scope, collection et nom d'index. Définissez return_raw_index_stats=true pour renvoyer les informations d'index non traitées. |
get_index_advisor_recommendations | Obtenir des recommandations d'index de Couchbase Index Advisor pour une requête SQL++ donnée afin d'optimiser les performances des requêtes |
create_index | Créer un index secondaire GSI scalaire (non vectoriel) sur une collection. Différé par défaut — appelez build_index ensuite pour le construire. Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
build_index | Déclencher la construction de tous les index différés sur une collection. Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
drop_index | Supprimer un index GSI (scalaire ou vectoriel) d'une collection. Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true. |
run_sql_plus_plus_query | Exécuter une requête SQL++ sur un scope spécifié. Les requêtes sont automatiquement limitées au bucket et au scope spécifiés, utilisez donc directement les noms de collections (par exemple SELECT * FROM users au lieu de SELECT * FROM bucket.scope.users).CB_MCP_READ_ONLY_MODE est true par défaut, ce qui signifie que toutes les opérations d'écriture (KV, Query, gestion des scopes/collections et gestion des index) sont désactivées. Lorsqu'il est activé, les outils d'écriture KV, de gestion des collections et d'index ne sont pas chargés et les requêtes SQL++ qui modifient les données sont bloquées. |
explain_sql_plus_plus_query | Générer et évaluer un plan EXPLAIN pour une requête SQL++. Renvoie les métadonnées de la requête, le plan extrait et les conclusions de l'évaluation du plan. |
Outils d'analyse des performances des requêtes
| Nom de l'outil | Description |
|---|---|
get_longest_running_queries | Obtenir les requêtes les plus longues par temps de service moyen |
get_most_frequent_queries | Obtenir les requêtes les plus fréquemment exécutées |
get_queries_with_largest_response_sizes | Obtenir les requêtes avec les tailles de réponse les plus importantes |
get_queries_with_large_result_count | Obtenir les requêtes avec les plus grands nombres de résultats |
get_queries_using_primary_index | Obtenir les requêtes qui utilisent un index primaire (problème de performance potentiel) |
get_queries_not_using_covering_index | Obtenir les requêtes qui n'utilisent pas d'index couvrant |
get_queries_not_selective | Obtenir les requêtes qui ne sont pas sélectives (les analyses d'index renvoient beaucoup plus de documents que le résultat final) |
Prérequis
- Python 3.10 ou supérieur.
- Un cluster Couchbase en cours d'exécution. Le moyen le plus simple de commencer est d'utiliser Capella avec son offre gratuite, qui est une version entièrement gérée du serveur Couchbase. Vous pouvez suivre les instructions pour importer l'un des ensembles de données d'exemple ou importer les vôtres.
- uv installé pour exécuter le serveur.
- Un client MCP tel que Claude Desktop installé pour connecter le serveur à Claude. Les instructions sont fournies pour Claude Desktop et Cursor. D'autres clients MCP peuvent également être utilisés.
Configuration
Le serveur MCP peut être exécuté soit à partir du paquet PyPI prédéfini, soit à partir du code source en utilisant uv.
Exécution depuis PyPI
Nous publions un paquet PyPI prédéfini pour le serveur MCP.
Configuration du serveur à l'aide du paquet prédéfini pour les clients MCP
Authentification de base
{
"mcpServers": {
"couchbase": {
"command": "uvx",
"args": ["couchbase-mcp-server"],
"env": {
"CB_CONNECTION_STRING": "couchbases://connection-string",
"CB_USERNAME": "username",
"CB_PASSWORD": "password"
}
}
}
}
ou
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"
}
}
}
}
Remarque : Si vous utilisez d'autres serveurs MCP dans le client, vous pouvez l'ajouter à l'objet
mcpServersexistant.
Exécution depuis le code source
Le serveur MCP peut être exécuté à partir du code source en utilisant ce dépôt.
Clonez le dépôt sur votre machine locale
git clone https://github.com/couchbase/mcp-server-couchbase.git
Configuration du serveur à l'aide du code source pour les clients MCP
Ceci est la configuration courante pour les clients MCP tels que 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"
}
}
}
}
Remarque :
path/to/cloned/repo/mcp-server-couchbase/doit être le chemin du dépôt cloné sur votre machine locale. N'oubliez pas la barre oblique finale à la fin !
Remarque : Si vous utilisez d'autres serveurs MCP dans le client, vous pouvez l'ajouter à l'objet
mcpServersexistant.
Configuration supplémentaire pour le serveur MCP
Le serveur peut être configuré à l'aide de variables d'environnement ou d'arguments de ligne de commande :
| Variable d'environnement | Argument CLI | Description | Défaut |
|---|---|---|---|
CB_CONNECTION_STRING | --connection-string | Chaîne de connexion au cluster Couchbase | Requis |
CB_USERNAME | --username | Nom d'utilisateur avec accès aux buckets requis pour l'authentification de base | Requis (ou certificat client et clé nécessaires pour mTLS) |
CB_PASSWORD | --password | Mot de passe pour l'authentification de base | Requis (ou certificat client et clé nécessaires pour mTLS) |
CB_CLIENT_CERT_PATH | --client-cert-path | Chemin vers le fichier de certificat client pour l'authentification mTLS | Requis si mTLS (ou nom d'utilisateur et mot de passe requis) |
CB_CLIENT_KEY_PATH | --client-key-path | Chemin vers le fichier de clé client pour l'authentification mTLS | Requis si mTLS (ou nom d'utilisateur et mot de passe requis) |
CB_CA_CERT_PATH | --ca-cert-path | Chemin vers le certificat racine du serveur pour TLS si le serveur est configuré avec un certificat auto-signé/non fiable. Cela ne sera pas requis si vous vous connectez à Capella | |
CB_MCP_READ_ONLY_MODE | --read-only-mode | Empêcher toutes les modifications de données (KV, Query, gestion des scopes/collections et gestion des index). Lorsque activé, les outils d'écriture KV, de gestion de collections et d'index ne sont pas chargés. | true |
CB_MCP_TRANSPORT | --transport | Mode de transport : stdio, http, sse | stdio |
CB_MCP_HOST | --host | Hôte pour les modes de transport HTTP/SSE | 127.0.0.1 |
CB_MCP_PORT | --port | Port pour les modes de transport HTTP/SSE | 8000 |
CB_MCP_DISABLED_TOOLS | --disabled-tools | Outils à désactiver (voir Désactivation des outils) | Aucun |
CB_MCP_CONFIRMATION_REQUIRED_TOOLS | --confirmation-required-tools | Outils nécessitant une confirmation explicite de l'utilisateur avant exécution via l'élicitation MCP (voir Outils nécessitant élicitation/confirmation) | Aucun |
CB_MCP_LOG_LEVEL | --log-level | Niveau de journalisation pour le serveur MCP : off, debug, info, warning, error (voir Journalisation) | info |
CB_MCP_LOG_SINKS | --log-sinks | Destinations de journalisation séparées par des virgules : stderr, file, ou les deux (voir Journalisation) | stderr |
CB_MCP_LOG_FILE | --log-file | Chemin de base pour les fichiers de journalisation par niveau (utilisé uniquement lorsque le sink file est activé) | mcp_server.log |
CB_MCP_LOG_ROTATION_MAX_SIZE_MB | --log-rotation-max-size-mb | Taille maximale globale en Mo par fichier de journal avant rotation, héritée par chaque niveau sauf si remplacée. 0 est invalide et revient au défaut avec un avertissement au démarrage | 1 (1 Mo) |
CB_MCP_LOG_MAX_BYTES | --log-max-bytes | Obsolète — utilisez CB_MCP_LOG_ROTATION_MAX_SIZE_MB (Mo). Taille de rotation globale en octets, toujours honorée pour la rétrocompatibilité ; ignorée si CB_MCP_LOG_ROTATION_MAX_SIZE_MB est également défini | Non défini |
CB_MCP_LOG_ERROR_ROTATION_MAX_SIZE_MB | --log-error-rotation-max-size-mb | Taille de rotation en Mo pour le fichier de journal ERROR ; remplace CB_MCP_LOG_ROTATION_MAX_SIZE_MB pour ERROR | Hérite de CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_WARNING_ROTATION_MAX_SIZE_MB | --log-warning-rotation-max-size-mb | Taille de rotation en Mo pour le fichier de journal WARNING ; remplace CB_MCP_LOG_ROTATION_MAX_SIZE_MB pour WARNING | Hérite de CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_INFO_ROTATION_MAX_SIZE_MB | --log-info-rotation-max-size-mb | Taille de rotation en Mo pour le fichier de journal INFO ; remplace CB_MCP_LOG_ROTATION_MAX_SIZE_MB pour INFO | Hérite de CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_DEBUG_ROTATION_MAX_SIZE_MB | --log-debug-rotation-max-size-mb | Taille de rotation en Mo pour le fichier de journal DEBUG ; remplace CB_MCP_LOG_ROTATION_MAX_SIZE_MB pour DEBUG | Hérite de CB_MCP_LOG_ROTATION_MAX_SIZE_MB |
CB_MCP_LOG_RETENTION_BACKUP_COUNT | --log-retention-backup-count | Fichiers de sauvegarde de rotation conservés par fichier de journal par niveau (hors fichier actif), appliqué à chaque niveau sauf si remplacé. 0 conserve uniquement le fichier actif (voir Journalisation) | 1 |
CB_MCP_LOG_ERROR_RETENTION_BACKUP_COUNT | --log-error-retention-backup-count | Sauvegardes de rotation conservées pour le fichier de journal ERROR ; remplace le nombre global pour ERROR | Hérite de CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_LOG_WARNING_RETENTION_BACKUP_COUNT | --log-warning-retention-backup-count | Sauvegardes de rotation conservées pour le fichier de journal WARNING ; remplace le nombre global pour WARNING | Hérite de CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_LOG_INFO_RETENTION_BACKUP_COUNT | --log-info-retention-backup-count | Sauvegardes de rotation conservées pour le fichier de journal INFO ; remplace le nombre global pour INFO | Hérite de CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_LOG_DEBUG_RETENTION_BACKUP_COUNT | --log-debug-retention-backup-count | Sauvegardes de rotation conservées pour le fichier de journal DEBUG ; remplace le nombre global pour DEBUG | Hérite de CB_MCP_LOG_RETENTION_BACKUP_COUNT |
CB_MCP_OAUTH_JWT_JWKS_URI | --oauth-jwks-uri | Point de terminaison JWKS du fournisseur d'identité utilisé pour vérifier les JWT de porteur. Active OAuth lorsqu'il est défini avec l'émetteur et l'audience (voir Autorisation OAuth 2.1) | Aucun |
CB_MCP_OAUTH_JWT_ISSUER | --oauth-issuer | Revendication JWT attendue iss. Requis pour activer OAuth | Aucun |
CB_MCP_OAUTH_JWT_AUDIENCE | --oauth-audience | Revendication JWT attendue aud. Requis pour activer OAuth | Aucun |
CB_MCP_OAUTH_JWT_ALGORITHM | --oauth-algorithm | Algorithme de signature JWT : un parmi RS256/384/512, ES256/384/512, PS256/384/512 | RS256 |
CB_MCP_OAUTH_MCP_BASE_URL | --oauth-mcp-base-url | URL de base publique de ce serveur. Lorsqu'elle est définie, publie les métadonnées de ressource protégée RFC 9728 afin que les clients compatibles PRM puissent découvrir l'IdP | Aucun |
CB_MCP_OAUTH_SCOPE_READ_LABEL | --oauth-scope-read-label | Remplace l'étiquette de portée OAuth traitée comme accès 'lecture' (annoncée dans PRM et comparée à la revendication scope/scp du jeton). Utilisez ceci si votre IdP ne peut pas émettre la forme canonique | couchbase-mcp:read |
CB_MCP_OAUTH_SCOPE_WRITE_LABEL | --oauth-scope-write-label | Remplace l'étiquette de portée OAuth traitée comme accès 'écriture' ; mêmes sémantiques que l'étiquette de lecture | couchbase-mcp:write |
Configuration du mode lecture seule
CB_MCP_READ_ONLY_MODE est l'interrupteur unique contrôlant les opérations d'écriture :
- Lorsque
true(par défaut) : Toutes les opérations d'écriture (KV, Query, gestion des scopes/collections et gestion des index) sont désactivées. Les outils d'écriture KV (upsert, insert, replace, delete, mutation de sous-document), les outils d'écriture de gestion des scopes/collections (create_scope, create_collection, delete_scope, delete_collection) et les outils d'écriture d'index (create_index, build_index, drop_index) ne sont pas chargés et ne seront pas disponibles pour le LLM, et les requêtes SQL++ qui modifient des données ou la structure sont bloquées. - Lorsque
false: Les outils d'écriture KV, de gestion des scopes/collections et d'index sont chargés et les requêtes SQL++ de modification de données/structure sont autorisées.
C'est le défaut sûr recommandé pour éviter les modifications involontaires de données par les LLM.
Note : Pour l'authentification, vous avez besoin soit du nom d'utilisateur et du mot de passe, soit du certificat client et des chemins de clé. Vous pouvez éventuellement spécifier le chemin du certificat racine de l'AC qui sera utilisé pour valider les certificats du serveur. Si le chemin du certificat client & clé et le nom d'utilisateur et le mot de passe sont tous deux spécifiés, les certificats clients seront utilisés pour l'authentification.
Désactivation des outils
Vous pouvez désactiver des outils spécifiques pour les empêcher d'être chargés et exposés au client MCP. Les outils désactivés n'apparaîtront pas dans la découverte d'outils et ne peuvent pas être invoqués par le LLM.
Formats pris en charge
Liste séparée par des virgules :
# 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
Chemin de fichier (un nom d'outil par ligne) :
# Environment variable
CB_MCP_DISABLED_TOOLS=disabled_tools.txt
# Command line
uvx couchbase-mcp-server --disabled-tools disabled_tools.txt
Format de fichier (par exemple, disabled_tools.txt) :
# Write operations
upsert_document_by_id
delete_document_by_id
# Index advisor
get_index_advisor_recommendations
Les lignes commençant par # sont traitées comme des commentaires et ignorées.
Exemples de configuration client MCP
Utilisation d'une liste séparée par des virgules :
{
"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"
}
}
}
}
Utilisation d'un chemin de fichier (recommandé pour de nombreux outils) :
{
"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"
}
}
}
}
Note de sécurité importante
Avertissement : Désactiver des outils ne garantit pas à lui seul que certaines opérations ne peuvent pas être effectuées. Les permissions RBAC (contrôle d'accès basé sur les rôles) de l'utilisateur de base de données sous-jacent sont le contrôle de sécurité faisant autorité.
Par exemple, même si vous désactivez
upsert_document_by_idetdelete_document_by_id, les modifications de données peuvent toujours se produire via l'outilrun_sql_plus_plus_queryen utilisant les instructions DML SQL++ (INSERT, UPDATE, DELETE, MERGE) sauf si :
- Le
CB_MCP_READ_ONLY_MODEest défini surtrue(par défaut), OU- L'utilisateur de la base de données ne dispose pas des permissions RBAC nécessaires pour la modification de données
Meilleure pratique : Configurez toujours des permissions RBAC appropriées sur vos identifiants utilisateur Couchbase comme mesure de sécurité principale. Utilisez la désactivation d'outils comme couche supplémentaire pour guider le comportement du LLM et réduire la surface d'attaque, et non comme seul contrôle de sécurité.
Élicitation/Confirmation pour les appels d'outils
Vous pouvez exiger une confirmation explicite de l'utilisateur pour des outils spécifiques avant l'exécution (lorsque le client MCP prend en charge l'élicitation).
CB_MCP_CONFIRMATION_REQUIRED_TOOLS / --confirmation-required-tools prend en charge ces formats :
- Liste séparée par des virgules
- Chemin de fichier (un nom d'outil par ligne, commentaires
#pris en charge)
Exemple :
# 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
Lorsqu'un outil répertorié est invoqué :
- Si le client prend en charge l'élicitation, l'utilisateur est invité à confirmer.
- Si le client ne prend pas en charge l'élicitation, l'outil s'exécute sans confirmation pour la rétrocompatibilité.
Vous pouvez également vérifier la version du serveur en utilisant :
uvx couchbase-mcp-server --version
Journalisation
Le serveur MCP journalise dans stderr par défaut. La journalisation est configurée avec les variables CB_MCP_LOG_* listées dans Configuration supplémentaire :
CB_MCP_LOG_LEVEL— combien est journalisé :info(le défaut) journalise les événements de cycle de vie et les invocations d'outils,debugajoute des détails internes verbeux, etoffdésactive toute journalisation.CB_MCP_LOG_SINKS— où vont les journaux :stderr(le défaut), fichiers rotatifs par niveau (file), ou les deux. Avecfile, un fichier est écrit par niveau (par exemplemcp_server.info.logetmcp_server.error.log) au chemin défini parCB_MCP_LOG_FILE.- Taille de rotation —
CB_MCP_LOG_ROTATION_MAX_SIZE_MBest la taille globale (en Mo) à laquelle chaque fichier par niveau tourne. Remplacez les niveaux individuels avecCB_MCP_LOG_<LEVEL>_ROTATION_MAX_SIZE_MB(ERROR/WARNING/INFO/DEBUG), également en Mo, qui héritent du global lorsqu'ils ne sont pas définis. Une taille de0(globale ou par niveau) est invalide et revient au défaut (1 Mo) avec un avertissement au démarrage.CB_MCP_LOG_MAX_BYTES(octets) est obsolète mais toujours honoré pour la rétrocompatibilité ; il est ignoré lorsqueCB_MCP_LOG_ROTATION_MAX_SIZE_MBest également défini, et imprime un avertissement de dépréciation au démarrage. - Rétention —
CB_MCP_LOG_RETENTION_BACKUP_COUNTdéfinit combien de sauvegardes de rotation sont conservées par niveau (hors fichier actif) ; le défaut de1préserve le comportement précédent. Remplacez les niveaux individuels avecCB_MCP_LOG_<LEVEL>_RETENTION_BACKUP_COUNT(ERROR/WARNING/INFO/DEBUG), qui héritent de la valeur globale lorsqu'ils ne sont pas définis. Définissez un compte à0pour conserver uniquement le fichier actif pour ce niveau — il est toujours plafonné par la taille de rotation (réinitialisé au roulement plutôt que sauvegardé). - Instantané de configuration du serveur — lorsque le sink
fileest actif, un enregistrement unique (système d'exploitation, Python, versions de dépendances, transport, configuration de journalisation résolue et configuration serveur expurgée) est écrit en JSON dans un fichiermcp_server_config.log.jsondédié (dérivé de la baseCB_MCP_LOG_FILE). Il est écrasé à chaque démarrage, donc le support dispose toujours de la configuration actuelle et elle ne sort jamais d'un journal rotatif.
# 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
Pour plus de détails, voir la documentation.
Configuration spécifique au client
Claude Desktop
Suivez les étapes ci-dessous pour utiliser le serveur MCP Couchbase avec le client MCP Claude Desktop
-
Le serveur MCP peut maintenant être ajouté à Claude Desktop en modifiant le fichier de configuration. Des instructions plus détaillées se trouvent dans le guide de démarrage rapide MCP.
- Sur Mac, le fichier de configuration se trouve à
~/Library/Application Support/Claude/claude_desktop_config.json - Sur Windows, le fichier de configuration se trouve à
%APPDATA%\Claude\claude_desktop_config.json
- Sur Mac, le fichier de configuration se trouve à
-
Redémarrez Claude Desktop pour appliquer les modifications.
-
Vous pouvez maintenant utiliser le serveur dans Claude Desktop pour exécuter des requêtes sur le cluster Couchbase en langage naturel et effectuer des opérations CRUD sur les documents.
Logs
Les logs de Claude Desktop se trouvent aux emplacements suivants :
- MacOS : ~/Library/Logs/Claude
- Windows : %APPDATA%\Claude\Logs
Les logs peuvent être utilisés pour diagnostiquer les problèmes de connexion ou d'autres problèmes avec la configuration de votre serveur MCP. Pour plus de détails, reportez-vous à la documentation officielle.
Cursor
Suivez les étapes ci-dessous pour utiliser le serveur Couchbase MCP avec Cursor :
-
Installez Cursor sur votre machine.
-
Dans Cursor, allez dans Cursor > Paramètres de Cursor > Outils et intégrations > Outils MCP. Consultez également la documentation sur la configuration du serveur MCP de Cursor.
-
Spécifiez manuellement la même configuration, ou utilisez le lien en un clic Installer dans Cursor. Vous devrez peut-être ajouter la configuration du serveur sous une clé parente
mcpServers.Remarque : Le lien d'installation utilise des valeurs d'espace réservé à partir des exemples de configuration ci-dessus. Mettez à jour la chaîne de connexion et les identifiants après l'installation.
-
Enregistrez la configuration.
-
Vous verrez couchbase comme serveur ajouté dans la liste des serveurs MCP. Actualisez pour vérifier que le serveur est activé.
-
Vous pouvez maintenant utiliser le serveur Couchbase MCP dans Cursor pour interroger votre cluster Couchbase en langage naturel et effectuer des opérations CRUD sur les documents.
Pour plus de détails sur l'intégration MCP avec Cursor, reportez-vous à la documentation officielle de Cursor MCP.
Logs
Dans le panneau inférieur de Cursor, cliquez sur « Output » et sélectionnez « Cursor MCP » dans le menu déroulant pour afficher les logs du serveur. Cela peut aider à diagnostiquer les problèmes de connexion ou d'autres problèmes avec la configuration de votre serveur MCP.
Windsurf Editor
Suivez les étapes ci-dessous pour utiliser le serveur Couchbase MCP avec Windsurf Editor.
-
Installez Windsurf Editor sur votre machine.
-
Dans Windsurf Editor, accédez à la Palette de commandes > Panneau de configuration MCP Windsurf ou à Windsurf - Paramètres > Avancé > Cascade > Serveurs Model Context Protocol (MCP). Pour plus de détails sur la configuration, veuillez consulter la documentation officielle.
-
Cliquez sur Ajouter un serveur puis Ajouter un serveur personnalisé. Sur la configuration qui s'ouvre dans l'éditeur, ajoutez la configuration du serveur Couchbase MCP ci-dessus.
-
Enregistrez la configuration.
-
Vous verrez couchbase comme serveur ajouté dans la liste des serveurs MCP sous Paramètres avancés. Actualisez pour vérifier que le serveur est activé.
-
Vous pouvez maintenant utiliser le serveur Couchbase MCP dans Windsurf Editor pour interroger votre cluster Couchbase en langage naturel et effectuer des opérations CRUD sur les documents.
Pour plus de détails sur l'intégration MCP avec Windsurf Editor, reportez-vous à la documentation officielle de Windsurf MCP.
VS Code
Suivez les étapes ci-dessous pour utiliser le serveur Couchbase MCP avec VS Code.
-
Installez VS Code
-
Voici quelques façons de configurer le serveur MCP.
-
Pour une configuration de serveur d'espace de travail
- Créez un nouveau fichier dans l'espace de travail sous le nom .vscode/mcp.json.
- Ajoutez la configuration et enregistrez le fichier.
-
Pour la configuration globale du serveur :
- Exécutez MCP : Ouvrir la configuration utilisateur dans la palette de commandes (
Ctrl+Shift+PouCmd+Shift+P) - Ajoutez la configuration et enregistrez le fichier.
- Exécutez MCP : Ouvrir la configuration utilisateur dans la palette de commandes (
-
Remarque : VS Code utilise
serverscomme propriété JSON de premier niveau dans les fichiers mcp.json pour définir les serveurs MCP, tandis que Cursor utilisemcpServerspour la configuration équivalente. Consultez les configurations client VS Code pour toute modification ou détail supplémentaire. Un exemple de configuration VS Code est fourni ci-dessous.{ "servers": { "couchbase": { "command": "uvx", "args": ["couchbase-mcp-server"], "env": { "CB_CONNECTION_STRING": "couchbases://connection-string", "CB_USERNAME": "username", "CB_PASSWORD": "password" } } } }
-
-
Une fois le fichier enregistré, le serveur démarre et une petite liste d'actions apparaît avec
Running|Stop|n Tools|More... -
Cliquez sur les options de la liste pour
Start/Stop/gérer le serveur. -
Vous pouvez maintenant utiliser le serveur Couchbase MCP dans VS Code pour interroger votre cluster Couchbase en langage naturel et effectuer des opérations CRUD sur les documents.
Logs :
Dans la palette de commandes (Ctrl+Shift+P ou Cmd+Shift+P),
- exécutez la commande MCP : Lister les serveurs et sélectionnez le serveur couchbase
- choisissez « Afficher la sortie » pour voir ses logs dans l'onglet Sortie.
IDE JetBrains
Suivez les étapes ci-dessous pour utiliser le serveur Couchbase MCP avec les IDE JetBrains
- Installez l'un des IDE JetBrains
- Installez l'un des plugins JetBrains - AI Assistant ou Junie
- Accédez à Paramètres > Outils > AI Assistant ou Junie > Serveur MCP
- Cliquez sur « + » pour ajouter la configuration Couchbase MCP et cliquez sur Enregistrer.
- Vous verrez le serveur Couchbase MCP ajouté à la liste des serveurs. Une fois que vous cliquez sur Appliquer, le serveur Couchbase MCP démarre et au survol du statut, il affiche tous les outils disponibles.
- Vous pouvez maintenant utiliser le serveur Couchbase MCP dans les IDE JetBrains pour interroger votre cluster Couchbase en langage naturel et effectuer des opérations CRUD sur les documents.
Logs : Le fichier journal peut être consulté dans Aide > Afficher le journal dans le Finder (Explorer) > mcp > couchbase
Mode de transport HTTP Streamable
Le serveur MCP peut être exécuté en mode de transport HTTP Streamable, ce qui permet à plusieurs clients de se connecter à la même instance de serveur via HTTP. Vérifiez si votre client MCP prend en charge le transport HTTP streamable avant d'essayer de vous connecter au serveur MCP dans ce mode.
Remarque : L'autorisation OAuth 2.1 est prise en charge sur ce transport. Voir Autorisation OAuth 2.1. Sans OAuth configuré, le point de terminaison HTTP n'est pas authentifié.
Utilisation
Par défaut, le serveur MCP s'exécute sur le port 8000, mais cela peut être configuré à l'aide de la variable d'environnement --port ou CB_MCP_PORT.
uvx couchbase-mcp-server \
--connection-string='<couchbase_connection_string>' \
--username='<database_username>' \
--password='<database_password>' \
--read-only-mode=true \
--transport=http
Le serveur sera disponible sur http://localhost:8000/mcp. Cela peut être utilisé dans les clients MCP prenant en charge le mode de transport HTTP streamable, tels que Cursor.
Configuration du client MCP
{
"mcpServers": {
"couchbase-http": {
"url": "http://localhost:8000/mcp"
}
}
}
Mode de transport SSE
Il existe une option pour exécuter le serveur MCP en mode de transport Server-Sent Events (SSE).
Remarque : Le mode SSE a été déprécié par MCP. Nous prenons en charge HTTP Streamable.
SSE : Utilisation
Par défaut, le serveur MCP s'exécute sur le port 8000, mais cela peut être configuré à l'aide de la variable d'environnement --port ou CB_MCP_PORT.
uvx couchbase-mcp-server \
--connection-string='<couchbase_connection_string>' \
--username='<database_username>' \
--password='<database_password>' \
--read-only-mode=true \
--transport=sse
Le serveur sera disponible sur http://localhost:8000/sse. Cela peut être utilisé dans les clients MCP prenant en charge le mode de transport SSE, tels que Cursor.
SSE : Configuration du client MCP
{
"mcpServers": {
"couchbase-sse": {
"url": "http://localhost:8000/sse"
}
}
}
Autorisation OAuth 2.1
Lorsqu'il est exécuté avec --transport=http, le serveur MCP peut agir en tant que serveur de ressources OAuth 2.1 : il valide les JWT porteurs entrants par rapport au JWKS de votre fournisseur d'identité. Il est indépendant du fournisseur (tout fournisseur OAuth 2.1 / OIDC qui publie un JWKS - Auth0, Okta, Keycloak, AWS Cognito, Microsoft Entra, etc.) et n'émet pas de jetons ni ne gère les utilisateurs. Les paramètres OAuth sont ignorés sur stdio.
OAuth est configuré avec les variables CB_MCP_OAUTH_* répertoriées dans la Configuration supplémentaire :
- OAuth ne s'active que lorsque les trois **
CB_MCP_OAUTH_JWT_JWKS_URI,CB_MCP_OAUTH_JWT_ISSUERetCB_MCP_OAUTH_JWT_AUDIENCEsont définies ; si seulement certaines sont définies, le démarrage échoue. - La définition de
CB_MCP_OAUTH_MCP_BASE_URLpublie en outre les métadonnées de ressource protégée RFC 9728 afin que les clients compatibles PRM puissent découvrir le serveur d'autorisation. - L'accès est contrôlé par deux portées lues à partir de la revendication
scope/scpdu jeton :couchbase-mcp:read(outils de lecture, y compris SQL++) etcouchbase-mcp:write(outils d'écriture : mutations KV, gestion des portées/collections et gestion des index). Un accès complet nécessite les deux. Si votre IdP ne peut pas émettre ces étiquettes canoniques, remplacez-les parCB_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>'
Pour tous les détails, consultez la documentation.
Image Docker
Le serveur MCP peut également être construit et exécuté comme un conteneur Docker. Des images pré-construites sont disponibles sur DockerHub ou peuvent être récupérées via docker pull docker.io/couchbase/mcp-server:latest.
Alternativement, nous faisons partie du Catalogue MCP Docker.
Construction de l'image
docker build -t mcp/couchbase-src .
Construction avec des arguments
Si vous souhaitez construire avec les arguments de construction pour le hash de commit et l'heure de construction, vous pouvez construire en utilisant :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 .
Alternativement, utilisez le script de construction fourni :
# Build with default image name (mcp/couchbase-src)
./build.sh
# Build with custom image name
./build.sh my-custom/image-name
Ce script automatise :
- Accepte un paramètre optionnel de nom d'image (par défaut
mcp/couchbase-src) - Génère le hash de commit git et l'horodatage de construction
- Crée plusieurs étiquettes utiles (
latest,<short-commit>) - Affiche les informations de construction et les résultats
- Utilise les mêmes arguments que les constructions CI/CD
Vérifier les étiquettes de l'image :
# 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
Exécution
Le serveur MCP peut être exécuté avec les variables d'environnement utilisées pour configurer les paramètres Couchbase. Les variables d'environnement sont les mêmes que celles décrites dans la section Configuration supplémentaire.
Conteneur Docker indépendant
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
Les variables d'environnement CB_MCP_PORT et CB_MCP_HOST ne s'appliquent que dans le cas des modes de transport HTTP comme http et sse.
Docker : Configuration du client MCP
L'image Docker peut être utilisée en mode de transport stdio avec la configuration suivante.
{
"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"
]
}
}
}
Notes
- La valeur de
couchbase_connection_stringdépend du fait que le serveur Couchbase s'exécute sur la même machine hôte, dans un autre conteneur Docker ou sur un hôte distant. Si votre serveur Couchbase s'exécute sur votre machine hôte, votre chaîne de connexion serait probablement de la formecouchbase://host.docker.internal. Pour plus de détails, reportez-vous à la documentation Docker. - Vous pouvez spécifier le réseau du conteneur à l'aide de l'option
--network=<your_network>. Le réseau choisi dépend de votre environnement ; la valeur par défaut estbridge. Pour plus de détails, reportez-vous aux pilotes réseau dans Docker.
Risques associés aux LLM
- L'utilisation de grands modèles de langage et de technologies similaires comporte des risques, notamment la possibilité de sorties inexactes ou nuisibles.
- Couchbase n'examine ni n'évalue la qualité ou l'exactitude de ces sorties, et ces sorties peuvent ne pas refléter les opinions de Couchbase.
- Vous êtes seul responsable de la décision d'utiliser les grands modèles de langage et les technologies connexes, et de vous conformer à toutes conditions de licence, conditions d'utilisation et politiques de votre organisation régissant leur utilisation.
Collecte des données d'utilisation
Ce produit collecte automatiquement des données d'utilisation et de performance (telles que le nom et la version du produit) et des informations sur le navigateur (telles que l'adresse IP) (collectivement, les « données d'utilisation »). Couchbase utilise les données d'utilisation, ainsi que d'autres données que vous pouvez fournir à Couchbase (telles que votre nom d'utilisateur ou votre adresse e-mail), pour développer et améliorer nos produits ainsi que pour informer nos programmes de vente et de marketing. Nous n'accédons pas ni ne collectons les données que vous stockez dans les produits Couchbase. Nous utilisons les données d'utilisation pour comprendre les modèles d'utilisation agrégés et rendre nos produits plus utiles pour vous. Pour plus d'informations sur la façon dont Couchbase collecte, protège et traite les informations, veuillez vous référer à la politique de confidentialité de Couchbase consultable à l'adresse https://www.couchbase.com/privacy-policy.
Conseils de dépannage
- Assurez-vous que le chemin vers votre dépôt de serveur MCP est correct dans la configuration si vous exécutez depuis la source.
- Vérifiez que votre chaîne de connexion Couchbase, le nom d'utilisateur de la base de données, le mot de passe ou le chemin vers les certificats sont corrects.
- Si vous utilisez Couchbase Capella, assurez-vous que le cluster est accessible depuis la machine où le serveur MCP est exécuté.
- Vérifiez que l'utilisateur de la base de données dispose des autorisations appropriées pour accéder à au moins un bucket.
- Confirmez que le gestionnaire de paquets
uvest correctement installé et accessible. Vous devrez peut-être fournir le chemin absolu versuv/uvxdans le champcommandde la configuration. - Consultez les journaux pour détecter toute erreur ou avertissement pouvant indiquer des problèmes avec le serveur MCP. L'emplacement des journaux dépend de votre client MCP.
- Si vous rencontrez des problèmes lors de l'exécution de votre serveur MCP depuis la source après avoir mis à jour votre dépôt local de serveur MCP, essayez d'exécuter
uv syncpour mettre à jour les dépendances.
Tests d'intégration
Nous fournissons des tests d'intégration MCP de haut niveau pour vérifier que le serveur expose les outils attendus et qu'ils peuvent être invoqués contre un cluster Couchbase de démonstration.
- Exportez les informations d'identification du cluster de démonstration :
CB_CONNECTION_STRINGCB_USERNAMECB_PASSWORD- Optionnel :
CB_MCP_TEST_BUCKET(un bucket à sonder pendant les tests)
- Exécutez les tests :
uv run pytest tests/ -v
👩💻 Contribuer
Nous accueillons les contributions de la communauté ! Que vous souhaitiez corriger des bogues, ajouter des fonctionnalités ou améliorer la documentation, votre aide est appréciée.
Si vous avez besoin d'aide, avez trouvé un bogue ou souhaitez contribuer à des améliorations, le meilleur endroit pour le faire est ici même — en ouvrant un problème GitHub.
Pour les développeurs
Si vous êtes intéressé par la contribution de code ou la mise en place d'un environnement de développement :
📖 Voir CONTRIBUTING.md pour des instructions complètes de configuration pour les développeurs, notamment :
- Configuration de l'environnement de développement avec
uv - Linting et formatage du code avec Ruff
- Installation des hooks pre-commit
- Aperçu de la structure du projet
- Flux de travail et pratiques de développement
Démarrage rapide pour les contributeurs
# 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
📢 Politique de support
Nous apprécions sincèrement votre intérêt pour ce projet ! Ce projet est maintenu par la communauté Couchbase, ce qui signifie qu'il n'est pas officiellement pris en charge par notre équipe de support. Cependant, nos ingénieurs surveillent et maintiennent activement ce dépôt et essaieront de résoudre les problèmes au mieux de leurs capacités.
Notre portail de support ne peut pas aider avec les demandes liées à ce projet, nous vous demandons donc de bien vouloir garder toutes les demandes dans GitHub.
Votre collaboration nous aide tous à avancer ensemble — merci !