Aiven

officiel

Naviguez vos projets Aiven et interagissez avec les services PostgreSQL®, Apache Kafka®, ClickHouse® et OpenSearch®.

Que pouvez-vous faire avec Aiven MCP ?

  • Parcourir et inspecter les services — Répertorier les projets, les services, les offres, les clouds, les VPC et les détails des services dans votre compte Aiven.
  • Gérer Kafka — Répertorier, créer, mettre à jour et supprimer des topics, lire ou produire des messages, et gérer les connecteurs et les sujets du Schema Registry.
  • Interroger PostgreSQL — Exécuter des requêtes SQL en lecture seule ou en écriture, consulter les statistiques des requêtes et les extensions disponibles, et gérer les pools PgBouncer.
  • Déployer des applications — Créer et redéployer des applications Containerfile/Dockerfile, vérifier les domaines personnalisés et connecter des dépôts GitHub.
  • Consulter les métriques et les journaux — Récupérer les métriques des services, l’activité des requêtes, les journaux des services et les journaux des événements du projet.
  • Rechercher dans la documentation Aiven — Rechercher la documentation officielle d’Aiven en langage naturel (serveur hébergé uniquement).

Documentation

Serveur MCP Aiven

Un serveur Model Context Protocol (MCP) pour la plateforme de données cloud Aiven.

Gérez PostgreSQL, Apache Kafka, des applications et d’autres services Aiven directement depuis des assistants IA comme Claude, Cursor et VS Code Copilot.

[!WARNING] À utiliser avec précaution. Ce serveur MCP peut créer, modifier et supprimer des services et des données Aiven en votre nom. Les agents IA peuvent exécuter des actions destructrices (supprimer des bases de données ou des services, produire des messages) selon leur interprétation de vos prompts. Vous êtes entièrement responsable des actions effectuées au moyen de cet outil.

Autorisations : l’accès est régi par les autorisations de l’utilisateur Aiven associées au compte authentifié. Le serveur MCP ne peut effectuer que les actions autorisées pour votre utilisateur Aiven.

Sécurité des agents IA : les agents IA peuvent avoir besoin d’identifiants d’accès (chaînes de connexion à la base de données, jetons de streaming) pour agir en votre nom. Vérifiez les actions de votre agent, en particulier dans les environnements de production. Respectez les politiques de sécurité de votre organisation et évaluez les risques avant de donner aux agents IA accès à des ressources sensibles.

Démarrage rapide

Option 1 : à distance (hébergé par Aiven)

Le serveur MCP est hébergé à l’adresse https://mcp.aiven.live/mcp. Votre client MCP vous invitera à vous authentifier auprès d’Aiven.

Claude Code

claude mcp add --scope user --transport http aiven-mcp "https://mcp.aiven.live/mcp"

Cursor

Install MCP Server

Vous pouvez aussi l’ajouter manuellement aux paramètres MCP de Cursor :

{
  "mcpServers": {
    "aiven-mcp": {
      "url": "https://mcp.aiven.live/mcp"
    }
  }
}

VS Code / Copilot

Ajoutez-le à .vscode/mcp.json dans votre espace de travail :

{
  "servers": {
    "aiven-mcp": {
      "type": "http",
      "url": "https://mcp.aiven.live/mcp"
    }
  }
}

Mode lecture seule (à distance)

Activez le mode lecture seule en ajoutant ?read_only=true à l’URL. Toutes les opérations d’écriture seront exclues du MCP :

{
  "mcpServers": {
    "aiven-mcp": {
      "url": "https://mcp.aiven.live/mcp?read_only=true"
    }
  }
}

Outils limités à certains périmètres (à distance)

Réduisez l’ensemble des outils exposés à votre agent IA en ajoutant ?services_scope= à l’URL. Cette option est utile si vous ne travaillez qu’avec un sous-ensemble des services Aiven et souhaitez que le contexte de l’agent reste ciblé. Séparez les valeurs par des virgules. core (découverte des projets et des services) est toujours inclus implicitement.

Périmètres valides : all, core, pg, kafka, application, integrations, opensearch. Utilisez all pour charger explicitement tous les outils (comme si le paramètre était omis). all ne peut pas être combiné à d’autres périmètres. opensearch suit les mêmes règles que kafka ou pg (outils principaux et outils de la catégorie OpenSearch) ; il n’existe pas encore d’outils spécifiques à OpenSearch, il n’expose donc actuellement que les outils principaux.

{
  "mcpServers": {
    "aiven-mcp": {
      "url": "https://mcp.aiven.live/mcp?services_scope=kafka"
    }
  }
}

Vous pouvez également le combiner avec read_only :

https://mcp.aiven.live/mcp?services_scope=pg&read_only=true

Exceptions d’écriture en mode lecture seule (à distance)

Lorsque read_only=true, ajoutez ?write_allowlist= pour réactiver certains outils d’écriture tout en gardant tout le reste en lecture seule. Cette option est utile si vous souhaitez principalement un accès en lecture, mais devez tout de même autoriser une action d’écriture, par exemple la création de sujets Kafka. Séparez les noms des outils par des virgules. Ignoré si read_only n’est pas activé.

https://mcp.aiven.live/mcp?read_only=true&write_allowlist=aiven_kafka_topic_create

Clients de places de marché (à distance)

Si vous avez souscrit à Aiven par l’intermédiaire d’une place de marché cloud, ajoutez votre place de marché comme segment de chemin afin que la connexion utilise la console appropriée :

Place de marchéSegment de chemin
AWS Marketplacehttps://mcp.aiven.live/mcp/aws
Azure Marketplacehttps://mcp.aiven.live/mcp/azure
Google Cloud Marketplacehttps://mcp.aiven.live/mcp/gcp
{
  "mcpServers": {
    "aiven-mcp": {
      "url": "https://mcp.aiven.live/mcp/<marketplace>"
    }
  }
}

Le segment de chemin peut être combiné aux paramètres de requête ci-dessus, par exemple https://mcp.aiven.live/mcp/gcp?services_scope=pg&read_only=true.

Option 2 : stdio (local)

Exécutez le serveur localement en tant que processus enfant de votre client MCP. Node.js 18+ est requis.

Vous devez fournir votre jeton d’API Aiven via la variable d’environnement AIVEN_TOKEN. Créez un jeton ici.

Claude Code

claude mcp add --scope user aiven-mcp -e AIVEN_TOKEN=your-token-here -- npx -y mcp-aiven

Cursor, VS Code -- ajoutez-le à la configuration de votre client MCP :

{
  "mcpServers": {
    "aiven-mcp": {
      "command": "npx",
      "args": ["-y", "mcp-aiven"],
      "env": {
        "AIVEN_TOKEN": "your-token-here"
      }
    }
  }
}

Emplacements des fichiers de configuration :

  • Cursor : Paramètres Cursor > Serveurs MCP
  • VS Code : .vscode/mcp.json dans votre espace de travail

Option 3 : développement local

Exécutez une version locale du serveur (utile pour le développement et les tests) :

pnpm install && pnpm generate:api-types && pnpm generate && pnpm build && AIVEN_TOKEN="<YOUR_TOKEN>" MCP_TRANSPORT="http" PORT=3000 node dist/index.js

Par défaut, le serveur écoute sur le port 3000. Connectez votre client MCP à http://localhost:3000/mcp.

Pour diriger un déploiement distant vers un hôte personnalisé (par exemple, votre version locale), définissez MCP_HOST :

MCP_HOST=http://localhost:3000 node dist/index.js

Variables d’environnement

VariableObligatoireValeur par défautDescription
AIVEN_TOKENstdio uniquement--Jeton d’API Aiven (créez-en un ici)
AIVEN_READ_ONLYNonfalseDéfinissez sur true pour n’exposer que les outils en lecture seule
AIVEN_SERVICES_SCOPENon--Périmètres à exposer, séparés par des virgules (par exemple kafka, pg,kafka ou all). Valeurs valides : all, core, pg, kafka, application, integrations, opensearch. core est inclus implicitement pour les types de services limités à certains périmètres. opensearch ne dispose pas encore d’outils dédiés (outils principaux uniquement, jusqu’à l’ajout des outils OpenSearch). Si cette variable est omise ou définie sur all, tous les outils sont chargés.
AIVEN_ALLOW_SECRETSNonfalseDéfinissez sur true pour exposer l’outil aiven_service_connection_info, qui renvoie des identifiants actifs (mots de passe, URI de connexion, certificats) dans la conversation. Désactivé lorsque AIVEN_READ_ONLY=true.
AIVEN_WRITE_ALLOWLISTNon--Noms des outils à réactiver, séparés par des virgules, lorsque AIVEN_READ_ONLY=true (par exemple aiven_kafka_topic_create). Ignoré si le mode lecture seule n’est pas activé.
MCP_HOSTNonhttps://mcp.aiven.liveRemplace l’hôte de la ressource protégée OAuth
MCP_TRANSPORTNonstdioDéfinissez sur http pour démarrer un serveur HTTP au lieu de stdio
MCP_HTTP_RATE_LIMIT_MAXNon1000Nombre maximal de requêtes par fenêtre sur POST /mcp (transport HTTP), par jeton Bearer. La limitation du débit par adresse IP du client est assurée par Cloudflare.
MCP_HTTP_RATE_LIMIT_WINDOW_MSNon60000Durée de la fenêtre en millisecondes pour MCP_HTTP_RATE_LIMIT_MAX.
EXTRA_PROTECTIONNonfalseDéfinissez sur true pour exiger, sur les déploiements HTTP, un en-tête X-Edge-Auth valide dans chaque requête, sauf GET /health. Voir Déploiement de la protection en périphérie ci-dessous.
MCP_EDGE_AUTH_SECRETLorsque EXTRA_PROTECTION=true--Secret partagé ; doit correspondre à la valeur que Cloudflare injecte sous la forme X-Edge-Auth via les règles de transformation.

En mode distant (HTTP), AIVEN_TOKEN n’est pas nécessaire. Votre client MCP envoie votre jeton comme jeton Bearer avec chaque requête.

Le trafic HTTP de production est limité à deux niveaux : Cloudflare applique une limite par adresse IP du client (configurée dans le tableau de bord Cloudflare), et ce serveur applique MCP_HTTP_RATE_LIMIT_* par jeton Bearer sur POST /mcp.

Déploiement de la protection en périphérie

Lorsque EXTRA_PROTECTION=true, toute différence entre MCP_EDGE_AUTH_SECRET et la valeur injectée par Cloudflare sous la forme X-Edge-Auth entraîne le renvoi d’une réponse 403 pour chaque requête (sauf GET /health). Les deux valeurs sont des paramètres d’environnement ou de configuration situés de part et d’autre de la connexion ; la seule façon de rétablir le service est de corriger le secret et de redéployer le serveur ou de mettre à jour Cloudflare.

Activez dans cet ordre :

  1. Règle de transformation Cloudflare — Ajoutez une règle qui définit X-Edge-Auth (et, si elle est utilisée pour les outils PG, X-Client-IP) pour le trafic vers l’origine MCP. Notez la valeur du secret configuré.
  2. MCP_EDGE_AUTH_SECRET — Déployez le serveur avec cette variable d’environnement définie sur le même secret que celui de la règle de transformation. Pour l’instant, laissez EXTRA_PROTECTION non défini ou définissez-le sur false ; vérifiez que l’origine accepte toujours le trafic.
  3. EXTRA_PROTECTION=true — Activez uniquement après la mise en place des étapes 1 et 2 et la vérification de leur concordance. Vérifiez qu’une requête MCP normale aboutit et que l’accès direct à l’origine sans X-Edge-Auth est rejeté.
  4. Rotation du secret — Mettez à jour Cloudflare et MCP_EDGE_AUTH_SECRET simultanément (ou définissez brièvement EXTRA_PROTECTION=false), redéployez, puis réactivez. Ne faites jamais tourner le secret d’un seul côté lorsque l’indicateur est activé.

Si EXTRA_PROTECTION=true au démarrage et que MCP_EDGE_AUTH_SECRET est manquant, le processus s’arrête immédiatement avec une erreur.

Tant que les rejets persistent, le serveur consigne un avertissement de mauvaise configuration au maximum toutes les 15 minutes (le compteur est réinitialisé après une requête avec un X-Edge-Auth valide), afin qu’une différence de secret soit visible dans les journaux sans générer une ligne pour chaque requête rejetée.

Outils

Principaux

OutilDescription
aiven_project_listLister les projets
aiven_project_getObtenir les détails d’un projet
aiven_list_project_cloudsLister les plateformes cloud d’un projet
aiven_project_vpc_listLister les VPC d’un projet
aiven_service_listLister les services
aiven_service_type_plansLister les offres avec leur disponibilité dans le cloud
aiven_service_type_getObtenir les versions par défaut et disponibles du moteur pour un type de service
aiven_service_plan_pricingObtenir le tarif d’une offre dans un cloud donné
aiven_service_createCréer un service
aiven_service_getObtenir des informations sur un service
aiven_service_updateMettre à jour un service (offre, configuration, état d’alimentation)
aiven_service_metrics_fetchRécupérer les métriques des services de données gérés
aiven_service_application_metrics_getRécupérer les métriques des services applicatifs
aiven_project_get_service_logsObtenir les entrées du journal d’un service
aiven_service_query_activityRécupérer les requêtes en cours d’un service
aiven_project_get_event_logsObtenir les entrées du journal des événements d’un projet

Kafka

OutilDescription
aiven_kafka_topic_listLister les sujets Kafka
aiven_kafka_topic_createCréer un sujet Kafka
aiven_kafka_topic_getObtenir les informations d’un sujet Kafka
aiven_kafka_topic_updateMettre à jour un sujet Kafka
aiven_kafka_topic_deleteSupprimer un sujet Kafka
aiven_kafka_topic_message_listLire les messages d’un sujet Kafka
aiven_kafka_topic_message_produceProduire des messages dans un sujet Kafka
aiven_kafka_connect_available_connectorsLister les types de connecteurs disponibles
aiven_kafka_connect_listLister les connecteurs en cours d’exécution
aiven_kafka_connect_create_connectorCréer un connecteur
aiven_kafka_connect_edit_connectorModifier un connecteur
aiven_kafka_connect_get_connector_statusObtenir l’état d’un connecteur
aiven_kafka_connect_pause_connectorMettre un connecteur en pause
aiven_kafka_connect_resume_connectorReprendre un connecteur
aiven_kafka_connect_restart_connectorRedémarrer un connecteur
aiven_kafka_connect_delete_connectorSupprimer un connecteur
aiven_kafka_schema_registry_subjectsLister les sujets Schema Registry
aiven_kafka_schema_registry_subject_version_getObtenir la version d’un sujet Schema Registry

PostgreSQL

OutilDescription
aiven_pg_service_available_extensionsLister les extensions disponibles
aiven_pg_service_query_statisticsRécupérer les statistiques des requêtes
aiven_pg_bouncer_createCréer un pool de connexions PgBouncer
aiven_pg_bouncer_updateMettre à jour un pool de connexions PgBouncer
aiven_pg_bouncer_deleteSupprimer un pool de connexions PgBouncer
aiven_pg_readExécuter une requête SQL en lecture seule
aiven_pg_writeExécuter une instruction SQL d’écriture (INSERT, UPDATE, DELETE, CREATE TABLE, etc.)
aiven_pg_optimize_queryOptimisation des requêtes par IA (EverSQL)

Applications

OutilDescription
aiven_application_createCréer et déployer initialement une application Containerfile/Dockerfile ; renvoie 409 si le service existe déjà
aiven_application_redeployReconstruire une application existante à partir du dépôt configuré, sans modifier la configuration du service
aiven_application_custom_domain_verifyVérifier à nouveau l’enregistrement CNAME d’un domaine personnalisé d’application ; le résultat apparaît ultérieurement dans aiven_service_get
aiven_vcs_integration_initializeDémarrer le processus dans le navigateur pour connecter un compte GitHub
aiven_vcs_integration_listLister les comptes VCS (GitHub) connectés
aiven_vcs_integration_repository_listLister les dépôts d’une intégration VCS
aiven_vcs_integration_repository_branch_listLister les branches d’un dépôt et leurs SHA de commit actuels
aiven_vcs_integration_repository_container_manifest_files_listRechercher des fichiers Containerfile, Dockerfile et des manifestes Compose candidats
aiven_vcs_integration_repository_scan_container_manifestDéduire des configurations de services Aiven candidates à partir d’un Containerfile, d’un Dockerfile ou des parties prises en charge d’un fichier Compose

Documentation

OutilDescription
aiven_docs_searchRechercher en langage naturel dans la documentation officielle d’Aiven. Disponible uniquement sur le serveur hébergé (https://mcp.aiven.live/mcp) — non exposé dans les déploiements auto-hébergés.

Contribution

Consultez CONTRIBUTING.md pour les instructions de configuration du développement, d’exécution en local et d’ajout de nouveaux outils.

Licence

Apache-2.0