Couchbase MCP Server

officiel

Interact with the data stored in Couchbase clusters using natural language.

Documentation

Serveur MCP Couchbase

Le serveur MCP Couchbase est un serveur MCP auto-hébergé qui permet aux agents IA de se connecter et d'interagir avec les données des clusters Couchbase, qu'ils soient hébergés sur Capella ou autogérés. Il fournit des outils couvrant des catégories telles que la santé du cluster, le schéma de données, les paires clé-valeur, les requêtes et les performances — avec des contrôles de sécurité via le mode lecture seule et la désactivation granulaire des outils. Il prend en charge les transports STDIO et HTTP Streamable.

Le serveur MCP Couchbase est distribué sous forme de package Python Package Index (PyPI) et via Docker. Le support entreprise pour le serveur MCP Couchbase est disponible en licenciant Couchbase AI Data Plane, ce qui donne également droit à l'utilisation et au support entreprise de Couchbase Agent Memory et Couchbase Agent Catalog.

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

Pour la documentation complète, visitez mcp-server.couchbase.com.

Couchbase Server MCP server

Fonctionnalités/Outils

Outils de configuration et de santé du cluster

Nom de l'outilDescription
get_server_configuration_statusObtenir le statut et la configuration du serveur 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_connectionVérifier les informations d'identification du cluster en se connectant au cluster
get_cluster_health_and_servicesObtenir le statut 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'outilDescription
get_buckets_in_clusterObtenir une liste de tous les buckets du cluster
get_scopes_in_bucketObtenir une liste de tous les scopes dans le bucket spécifié
get_collections_in_scopeObtenir une liste de toutes les collections dans un scope et un bucket spécifiés. Notez que cet outil nécessite que le cluster dispose du service Query.
get_scopes_and_collections_in_bucketObtenir une liste de tous les scopes et collections dans le bucket spécifié
get_schema_for_collectionObtenir la structure d'une collection

Outils d'opérations KV sur les documents

Nom de l'outilDescription
get_document_by_idObtenir un document par ID à partir d'un scope et d'une collection spécifiés
upsert_document_by_idUpsert 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_idInsé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_idRemplacer 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_idSupprimer un document par ID d'un scope et d'une collection spécifiés. Désactivé par défaut lorsque CB_MCP_READ_ONLY_MODE=true.

Outils de requête et d'indexation

Nom de l'outilDescription
list_indexesLister tous les index du cluster avec leurs définitions, avec filtrage optionnel par bucket, scope, collection et nom d'index. Définir return_raw_index_stats=true pour retourner les informations d'index non traitées.
get_index_advisor_recommendationsObtenir des recommandations d'index du conseiller d'index Couchbase pour une requête SQL++ donnée afin d'optimiser les performances des requêtes
run_sql_plus_plus_queryExé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 les noms de collection directement (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 et Query) sont désactivées. Lorsqu'il est activé, les outils d'écriture KV ne sont pas chargés et les requêtes SQL++ qui modifient les données sont bloquées.
explain_sql_plus_plus_queryGénérer et évaluer un plan EXPLAIN pour une requête SQL++. Retourne les métadonnées de la requête, le plan extrait et les résultats de l'évaluation du plan.

Outils d'analyse des performances des requêtes

Nom de l'outilDescription
get_longest_running_queriesObtenir les requêtes les plus longues par temps de service moyen
get_most_frequent_queriesObtenir les requêtes les plus fréquemment exécutées
get_queries_with_largest_response_sizesObtenir les requêtes avec les plus grandes tailles de réponse
get_queries_with_large_result_countObtenir les requêtes avec le plus grand nombre de résultats
get_queries_using_primary_indexObtenir les requêtes qui utilisent un index primaire (problème de performance potentiel)
get_queries_not_using_covering_indexObtenir les requêtes qui n'utilisent pas d'index couvrant
get_queries_not_selectiveObtenir les requêtes qui ne sont pas sélectives (les analyses d'index retournent 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 le niveau gratuit de Capella, qui est une version entièrement gérée du serveur Couchbase. Vous pouvez suivre les instructions pour importer l'un des jeux 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 package PyPI préconstruit, soit à partir des sources en utilisant uv.

Exécution à partir de PyPI

Nous publions un package PyPI préconstruit pour le serveur MCP.

Configuration du serveur en utilisant le package préconstruit 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 avez d'autres serveurs MCP en cours d'utilisation dans le client, vous pouvez l'ajouter à l'objet mcpServers existant.

Exécution à partir des sources

Le serveur MCP peut être exécuté à partir des sources en utilisant ce dépôt.

Cloner le dépôt sur votre machine locale

git clone https://github.com/couchbase/mcp-server-couchbase.git

Configuration du serveur en utilisant les sources pour les clients MCP

Ceci est la configuration commune 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 vers le dépôt cloné sur votre machine locale. N'oubliez pas la barre oblique finale à la fin !

Remarque : Si vous avez d'autres serveurs MCP en cours d'utilisation dans le client, vous pouvez l'ajouter à l'objet mcpServers existant.

Configuration supplémentaire pour le serveur MCP

Le serveur peut être configuré en utilisant des variables d'environnement ou des arguments de ligne de commande :

Variable d'environnementArgument CLIDescriptionValeur par défaut
CB_CONNECTION_STRING--connection-stringChaîne de connexion au cluster CouchbaseRequis
CB_USERNAME--usernameNom d'utilisateur avec accès aux buckets requis pour l'authentification de baseRequis (ou certificat client et clé nécessaires pour mTLS)
CB_PASSWORD--passwordMot de passe pour l'authentification de baseRequis (ou certificat client et clé nécessaires pour mTLS)
CB_CLIENT_CERT_PATH--client-cert-pathChemin vers le fichier de certificat client pour l'authentification mTLSRequis si utilisation de mTLS (ou nom d'utilisateur et mot de passe requis)
CB_CLIENT_KEY_PATH--client-key-pathChemin vers le fichier de clé client pour l'authentification mTLSRequis si utilisation de mTLS (ou nom d'utilisateur et mot de passe requis)
CB_CA_CERT_PATH--ca-cert-pathChemin vers le certificat racine du serveur pour TLS si le serveur est configuré avec un certificat auto-signé/non approuvé. Cela ne sera pas requis si vous vous connectez à Capella
CB_MCP_READ_ONLY_MODE--read-only-modeEmpêcher toutes les modifications de données (KV et Query). Lorsqu'il est activé, les outils d'écriture KV ne sont pas chargés.true
CB_MCP_TRANSPORT--transportMode de transport : stdio, http, ssestdio
CB_MCP_HOST--hostHôte pour les modes de transport HTTP/SSE127.0.0.1
CB_MCP_PORT--portPort pour les modes de transport HTTP/SSE8000
CB_MCP_DISABLED_TOOLS--disabled-toolsOutils à désactiver (voir Désactivation des outils)Aucun
CB_MCP_CONFIRMATION_REQUIRED_TOOLS--confirmation-required-toolsOutils qui nécessitent 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-levelNiveau de journalisation pour le serveur MCP : off, debug, info, warning, error (voir Journalisation)info
CB_MCP_LOG_SINKS--log-sinksDestinations de journalisation séparées par des virgules : stderr, file, ou les deux (voir Journalisation)stderr
CB_MCP_LOG_FILE--log-fileChemin de base pour les fichiers journaux par niveau (utilisé uniquement lorsque le récepteur file est activé)mcp_server.log
CB_MCP_LOG_MAX_BYTES--log-max-bytesTaille maximale en octets par fichier journal avant rotation1048576 (1 Mo)
CB_MCP_OAUTH_JWT_JWKS_URI--oauth-jwks-uriPoint de terminaison JWKS du fournisseur d'identité utilisé pour vérifier les JWT porteurs. 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-issuerRevendication JWT iss attendue. Requis pour activer OAuthAucun
CB_MCP_OAUTH_JWT_AUDIENCE--oauth-audienceRevendication JWT aud attendue. Requis pour activer OAuthAucun
CB_MCP_OAUTH_JWT_ALGORITHM--oauth-algorithmAlgorithme de signature JWT : un parmi RS256/384/512, ES256/384/512, PS256/384/512RS256
CB_MCP_OAUTH_MCP_BASE_URL--oauth-mcp-base-urlURL 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 conscients de PRM puissent découvrir le fournisseur d'identitéAucun

Configuration du mode lecture seule

CB_MCP_READ_ONLY_MODE est le commutateur unique contrôlant les opérations d'écriture :

  • Lorsque true (par défaut) : Toutes les opérations d'écriture (KV et Query) sont désactivées. Les outils d'écriture KV (upsert, insert, replace, delete) ne sont pas chargés et ne seront pas disponibles pour le LLM, et les requêtes SQL++ qui modifient les données ou la structure sont bloquées.
  • Lorsque false : Les outils d'écriture KV sont chargés et les requêtes SQL++ de modification de données/structure sont autorisées.

C'est la valeur par défaut sécurisée recommandée pour empêcher les modifications de données involontaires par les LLM.

Remarque : 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é. Optionnellement, vous pouvez spécifier le chemin du certificat racine CA qui sera utilisé pour valider les certificats du serveur. Si le certificat client et le chemin de clé ainsi que le nom d'utilisateur et le mot de passe sont 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 empêcher qu'ils soient 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 pourront 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 du 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 : La simple désactivation des outils ne garantit pas que certaines opérations ne puissent pas être effectuées. Les autorisations RBAC (Contrôle d'accès basé sur les rôles) de l'utilisateur de la base de données sous-jacente constituent le contrôle de sécurité faisant autorité.

Par exemple, même si vous désactivez upsert_document_by_id et delete_document_by_id, des modifications de données peuvent toujours se produire via l'outil run_sql_plus_plus_query en utilisant des instructions DML SQL++ (INSERT, UPDATE, DELETE, MERGE), sauf si :

  • CB_MCP_READ_ONLY_MODE est défini sur true (par défaut), OU
  • L'utilisateur de la base de données ne dispose pas des autorisations RBAC nécessaires pour la modification des données

Bonne pratique : Configurez toujours les autorisations RBAC appropriées sur vos informations d'identification d'utilisateur Couchbase comme mesure de sécurité principale. Utilisez la désactivation d'outils comme une couche supplémentaire pour guider le comportement du LLM et réduire la surface d'attaque, et non comme le seul contrôle de sécurité.

Elicitation/Confirmation pour les appels d'outils

Vous pouvez exiger une confirmation explicite de l'utilisateur pour des outils spécifiques avant leur 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, les commentaires # sont 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 des raisons de compatibilité ascendante.

Vous pouvez également vérifier la version du serveur en utilisant :

uvx couchbase-mcp-server --version

Journalisation

Le serveur MCP journalise vers stderr par défaut. La journalisation est configurée avec les variables CB_MCP_LOG_* répertoriées dans Configuration supplémentaire :

  • CB_MCP_LOG_LEVEL — quantité d'informations journalisées : info (par défaut) journalise les événements de cycle de vie et les invocations d'outils, debug ajoute des détails internes détaillés, et off désactive toute journalisation.
  • CB_MCP_LOG_SINKS — destination des journaux : stderr (par défaut), fichiers tournants par niveau (file), ou les deux. Avec file, un fichier est écrit par niveau (par exemple mcp_server.info.log et mcp_server.error.log) au chemin défini par CB_MCP_LOG_FILE.
# Enable debug logging to both stderr and rotating per-level files
uvx couchbase-mcp-server --log-level=debug --log-sinks=stderr,file

Pour plus de détails, consultez 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

  1. Le serveur MCP peut maintenant être ajouté à Claude Desktop en modifiant le fichier de configuration. Des instructions plus détaillées sont disponibles 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

    Ouvrez le fichier de configuration et ajoutez la configuration à la section mcpServers.

  2. Redémarrez Claude Desktop pour appliquer les modifications.

  3. 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.

Journaux

Les journaux de Claude Desktop se trouvent aux emplacements suivants :

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

Les journaux 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 MCP Couchbase avec Cursor :

  1. Installez Cursor sur votre machine.

  2. Dans Cursor, allez dans Cursor > Cursor Settings > Tools & Integrations > MCP Tools. Consultez également la documentation sur la configuration du serveur MCP de Cursor.

  3. Spécifiez la même configuration manuellement, ou utilisez le lien d'installation en un clic Installer dans Cursor. Vous devrez peut-être ajouter la configuration du serveur sous une clé parente de mcpServers.

    Remarque : Le lien d'installation utilise des valeurs d'espace réservé provenant des exemples de configuration ci-dessus. Mettez à jour la chaîne de connexion et les informations d'identification après l'installation.

  4. Enregistrez la configuration.

  5. Vous verrez couchbase comme serveur ajouté dans la liste des serveurs MCP. Actualisez pour voir si le serveur est activé.

  6. Vous pouvez maintenant utiliser le serveur MCP Couchbase 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 MCP de Cursor.

Journaux

Dans le panneau inférieur de Cursor, cliquez sur « Output » et sélectionnez « Cursor MCP » dans le menu déroulant pour afficher les journaux 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 MCP Couchbase avec Windsurf Editor.

  1. Installez Windsurf Editor sur votre machine.

  2. Dans Windsurf Editor, accédez à Palette de commandes > Windsurf MCP Configuration Panel ou Windsurf - Settings > Advanced > Cascade > Model Context Protocol (MCP) Servers. Pour plus de détails sur la configuration, veuillez vous référer à la documentation officielle.

  3. Cliquez sur Add Server puis sur Add custom server. Dans la configuration qui s'ouvre dans l'éditeur, ajoutez la configuration du serveur MCP Couchbase ci-dessus.

  4. Enregistrez la configuration.

  5. Vous verrez couchbase comme serveur ajouté dans la liste des serveurs MCP sous Paramètres avancés. Actualisez pour voir si le serveur est activé.

  6. Vous pouvez maintenant utiliser le serveur MCP Couchbase 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 MCP de Windsurf.

VS Code

Suivez les étapes ci-dessous pour utiliser le serveur MCP Couchbase avec VS Code.

  1. Installez VS Code

  2. 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 .vscode/mcp.json.
      • Ajoutez la configuration et enregistrez le fichier.
    • Pour la configuration du serveur global :

      • Exécutez MCP: Open User Configuration dans la palette de commandes (Ctrl+Shift+P ou Cmd+Shift+P)
      • Ajoutez la configuration et enregistrez le fichier.
    • Remarque : VS Code utilise servers comme propriété JSON de niveau supérieur dans les fichiers mcp.json pour définir les serveurs MCP (Model Context Protocol), tandis que Cursor utilise mcpServers pour la configuration équivalente. Consultez les configurations du client VS Code pour tout autre changement ou détail. 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"
              }
            }
          }
        }
      
  3. Une fois le fichier enregistré, le serveur démarre et une petite liste d'actions apparaît avec Running|Stop|n Tools|More...

  4. Cliquez sur les options de la liste pour Start/Stop/gérer le serveur.

  5. Vous pouvez maintenant utiliser le serveur MCP Couchbase dans VS Code pour interroger votre cluster Couchbase en langage naturel et effectuer des opérations CRUD sur les documents.

Journaux : Dans la palette de commandes (Ctrl+Shift+P ou Cmd+Shift+P),

  • exécutez la commande MCP: List Servers et choisissez le serveur couchbase
  • choisissez « Show Output » pour voir ses journaux dans l'onglet Output.
JetBrains IDEs

Suivez les étapes ci-dessous pour utiliser le serveur MCP Couchbase avec les IDE JetBrains

  1. Installez l'un des IDE JetBrains
  2. Installez l'un des plugins JetBrains - AI Assistant ou Junie
  3. Accédez à Settings > Tools > AI Assistant ou Junie > MCP Server
  4. Cliquez sur "+" pour ajouter la configuration MCP Couchbase et cliquez sur Save.
  5. Vous verrez le serveur MCP Couchbase ajouté à la liste des serveurs. Une fois que vous cliquez sur Apply, le serveur MCP Couchbase démarre et au survol du statut, il affiche tous les outils disponibles.
  6. Vous pouvez maintenant utiliser le serveur MCP Couchbase dans les IDE JetBrains pour interroger votre cluster Couchbase en langage naturel et effectuer des opérations CRUD sur les documents.

Journaux : Le fichier journal peut être exploré dans Help > Show Log in Finder (Explorer) > mcp > couchbase

Mode de transport HTTP streamable

Le serveur MCP peut être exécuté en mode de transport HTTP streamable 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 de tenter 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écutera sur le port 8000, mais cela peut être configuré en utilisant 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 tel 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 le HTTP streamable.

SSE : Utilisation

Par défaut, le serveur MCP s'exécutera sur le port 8000, mais cela peut être configuré en utilisant 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 tel que Cursor.

SSE : Configuration du client MCP

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

Autorisation OAuth 2.1

Lors de l'exécution avec --transport=http, le serveur MCP peut agir comme un 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 Configuration supplémentaire :

  • OAuth s'active uniquement lorsque les trois CB_MCP_OAUTH_JWT_JWKS_URI, CB_MCP_OAUTH_JWT_ISSUER et CB_MCP_OAUTH_JWT_AUDIENCE sont définis ; n'en définir que certains échoue au démarrage.
  • Définir CB_MCP_OAUTH_MCP_BASE_URL publie en plus les métadonnées de ressource protégée RFC 9728 afin que les clients conscients de PRM puissent découvrir le serveur d'autorisation.
  • L'accès est contrôlé par deux étendues lues à partir de la revendication scope/scp du jeton : couchbase-mcp:read (outils de lecture, y compris SQL++) et couchbase-mcp:write (outils de mutation KV). L'accès complet nécessite les deux.
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 plus de détails, consultez la documentation.

Image Docker

Le serveur MCP peut également être construit et exécuté en tant que 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 Docker MCP.

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 hachage 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 automatiquement :

  • Accepte un paramètre optionnel de nom d'image (par défaut mcp/couchbase-src)
  • Génère le hash du commit git et l'horodatage de la construction
  • Crée plusieurs tags utiles (latest, <short-commit>)
  • Affiche les informations et les résultats de la construction
  • Utilise les mêmes arguments que les builds CI/CD

Vérifier les labels 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"
      ]
    }
  }
}

Remarques

  • La valeur de couchbase_connection_string dé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 forme couchbase://host.docker.internal. Pour plus de détails, reportez-vous à la documentation docker.
  • Vous pouvez spécifier la mise en réseau du conteneur à l'aide de l'option --network=<your_network>. Le réseau que vous choisissez dépend de votre environnement ; la valeur par défaut est bridge. 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 résultats inexacts ou nuisibles.
  • Couchbase n'examine ni n'évalue la qualité ou l'exactitude de ces résultats, et ces résultats peuvent ne pas refléter les vues de Couchbase.
  • Vous êtes seul responsable de déterminer s'il convient d'utiliser de grands modèles de langage et les technologies associées, et de respecter les conditions de licence, les conditions d'utilisation et les politiques de votre organisation régissant leur utilisation.

Conseils de dépannage

  • Assurez-vous que le chemin vers votre dépôt de serveur MCP est correct dans la configuration si vous l'exécutez à partir des sources.
  • 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 uv est correctement installé et accessible. Vous devrez peut-être fournir le chemin absolu vers uv/uvx dans le champ command de 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 observez des problèmes lors de l'exécution de votre serveur MCP à partir des sources après avoir mis à jour votre dépôt local du serveur MCP, essayez d'exécuter uv sync pour 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 sur un cluster Couchbase de démonstration.

  1. Exportez les informations d'identification du cluster de démonstration :
    • CB_CONNECTION_STRING
    • CB_USERNAME
    • CB_PASSWORD
    • Facultatif : CB_MCP_TEST_BUCKET (un bucket à sonder pendant les tests)
  2. Exécutez les tests :
uv run pytest tests/ -v

👩‍💻 Contribution

Nous accueillons les contributions de la communauté ! Que vous souhaitiez corriger des bugs, ajouter des fonctionnalités ou améliorer la documentation, votre aide est appréciée.

Si vous avez besoin d'aide, avez trouvé un bug ou souhaitez proposer des améliorations, le meilleur endroit pour le faire est ici même — en ouvrant une issue GitHub.

Pour les développeurs

Si vous souhaitez contribuer au code ou configurer un environnement de développement :

📖 Consultez 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 de pré-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 supporté 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 dans la mesure du possible.

Notre portail de support n'est pas en mesure de traiter les demandes liées à ce projet, nous vous demandons donc de bien vouloir adresser toutes vos questions via GitHub.

Votre collaboration nous aide tous à avancer ensemble — merci !