CircleCI
officielPermettre aux agents IA de corriger les échecs de build depuis CircleCI.
Que pouvez-vous faire avec CircleCI MCP ?
- Valider la configuration CircleCI — Demandez de valider votre
.circleci/config.ymlpour les erreurs de syntaxe et sémantiques viaconfig_helper. - Obtenir le statut du pipeline — Vérifiez le dernier statut de pipeline pour une branche avec
get_latest_pipeline_status. - Déclencher et relancer des pipelines — Démarrez un nouveau pipeline avec
run_pipelineou relancez un workflow depuis le début ou depuis un job échoué viarerun_workflow. - Enquêter sur les échecs de build — Récupérez les journaux d'échec détaillés avec
get_build_failure_logset les résultats de tests viaget_job_test_results. - Trouver les tests flaky — Identifiez les tests flaky en analysant l'historique d'exécution des tests à l'aide de
find_flaky_tests. - Analyser l'utilisation et les coûts — Téléchargez les données d'utilisation avec
download_usage_api_dataet trouvez les classes de ressources sous-utilisées viafind_underused_resource_classes.
Documentation
[!IMPORTANT] Ce package est obsolète. Veuillez migrer.
@circleci/mcp-server-circlecine reçoit plus de travaux de fonctionnalités. Utilisez plutôt le serveur MCP hébergé de CircleCI ou le CircleCI CLI MCP — voir l'aperçu du MCP CircleCI.Ce dépôt sera archivé. Les versions existantes restent installables via npm, mais l'exécution d'un serveur non maintenu qui détient un jeton API personnel CircleCI n'est pas recommandée.
Si vous exécutez le transport distant auto-géré (
start=remote), migrez d'abord : le serveur hébergé est son remplacement direct et élimine la nécessité d'exploiter un service exposé au réseau qui négocie le jeton de votre organisation.
Serveur MCP CircleCI
Le Model Context Protocol (MCP) est un nouveau protocole standardisé pour gérer le contexte entre les grands modèles de langage (LLM) et les systèmes externes. Dans ce dépôt, nous fournissons un serveur MCP pour CircleCI.
Utilisez Cursor, Windsurf, Copilot, Claude ou tout client compatible MCP pour interagir avec CircleCI en langage naturel — sans quitter votre IDE.
Outils
| Outil | Description |
|---|---|
config_helper | Valider et obtenir des conseils pour votre configuration CircleCI |
download_usage_api_data | Télécharger les données d'utilisation à partir de l'API Usage de CircleCI |
find_flaky_tests | Identifier les tests instables en analysant l'historique d'exécution des tests |
find_underused_resource_classes | Trouver les tâches qui utilisent des ressources de calcul insuffisamment exploitées |
get_build_failure_logs | Récupérer les journaux d'échec détaillés des builds CircleCI |
get_job_test_results | Récupérer les métadonnées et les résultats des tests pour les tâches CircleCI |
get_latest_pipeline_status | Obtenir le statut du dernier pipeline pour une branche |
list_artifacts | Lister les artefacts produits par une tâche CircleCI |
list_component_versions | Lister toutes les versions d'un composant CircleCI |
list_followed_projects | Lister tous les projets CircleCI que vous suivez |
rerun_workflow | Relancer un workflow depuis le début ou depuis la tâche en échec |
run_pipeline | Déclencher l'exécution d'un pipeline |
run_rollback_pipeline | Déclencher un rollback pour un projet |
Installation
Déploiement équipe / centralisé : Pour exécuter un serveur distant partagé pour votre organisation (Kubernetes, Docker, etc.) avec des jetons CircleCI par développeur ou partagés, voir Serveur MCP distant auto-géré.
Cursor
Prérequis :
- Jeton API personnel CircleCI (en savoir plus)
- NPX : Node.js >= v18 et pnpm
- Docker : Docker
Utilisation de NPX dans un serveur MCP local
Ajoutez ce qui suit à votre configuration MCP Cursor :
{
"mcpServers": {
"circleci-mcp-server": {
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci@latest"],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
CIRCLECI_BASE_URLest optionnel — requis uniquement pour les clients on-prem.MAX_MCP_OUTPUT_LENGTHest optionnel — longueur maximale de sortie pour les réponses MCP (défaut : 50000).
Utilisation de Docker dans un serveur MCP local
Ajoutez ce qui suit à votre configuration MCP Cursor :
{
"mcpServers": {
"circleci-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"-e",
"MAX_MCP_OUTPUT_LENGTH",
"circleci/mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
Utilisation d'un serveur MCP distant auto-géré
Voir Serveur MCP distant auto-géré. Utilisez la configuration client par utilisateur et ajoutez-la à votre configuration MCP Cursor (Cursor Settings → MCP).
VS Code
Prérequis :
- Jeton API personnel CircleCI (en savoir plus)
- NPX : Node.js >= v18 et pnpm
- Docker : Docker
Utilisation de NPX dans un serveur MCP local
Ajoutez ce qui suit à .vscode/mcp.json dans votre projet :
{
"inputs": [
{
"type": "promptString",
"id": "circleci-token",
"description": "CircleCI API Token",
"password": true
},
{
"type": "promptString",
"id": "circleci-base-url",
"description": "CircleCI Base URL",
"default": "https://circleci.com"
}
],
"servers": {
"circleci-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci@latest"],
"env": {
"CIRCLECI_TOKEN": "${input:circleci-token}",
"CIRCLECI_BASE_URL": "${input:circleci-base-url}"
}
}
}
}
💡 Les entrées sont demandées au premier démarrage du serveur, puis stockées en toute sécurité par VS Code.
Utilisation de Docker dans un serveur MCP local
Ajoutez ce qui suit à .vscode/mcp.json dans votre projet :
{
"inputs": [
{
"type": "promptString",
"id": "circleci-token",
"description": "CircleCI API Token",
"password": true
},
{
"type": "promptString",
"id": "circleci-base-url",
"description": "CircleCI Base URL",
"default": "https://circleci.com"
}
],
"servers": {
"circleci-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"circleci/mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "${input:circleci-token}",
"CIRCLECI_BASE_URL": "${input:circleci-base-url}"
}
}
}
}
Utilisation d'un serveur MCP distant auto-géré
Voir Serveur MCP distant auto-géré. Utilisez la configuration client par utilisateur dans .vscode/mcp.json.
Claude Desktop
Prérequis :
- Jeton API personnel CircleCI (en savoir plus)
- NPX : Node.js >= v18 et pnpm
- Docker : Docker
Utilisation de NPX dans un serveur MCP local
Ajoutez ce qui suit à votre claude_desktop_config.json :
{
"mcpServers": {
"circleci-mcp-server": {
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci@latest"],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
Utilisation de Docker dans un serveur MCP local
Ajoutez ce qui suit à votre claude_desktop_config.json :
{
"mcpServers": {
"circleci-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"-e",
"MAX_MCP_OUTPUT_LENGTH",
"circleci/mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
Utilisation d'un serveur MCP distant auto-géré
Voir Serveur MCP distant auto-géré. Créez un script wrapper comme indiqué dans Clients Claude Desktop et CLI, puis pointez votre claude_desktop_config.json vers celui-ci.
Pour trouver ou créer votre fichier de configuration, ouvrez les paramètres de Claude Desktop, cliquez sur Developer dans la barre latérale gauche, puis sur Edit Config. Le fichier de configuration se trouve à :
- macOS :
~/Library/Application Support/Claude/claude_desktop_config.json - Windows :
%APPDATA%\Claude\claude_desktop_config.json
Pour plus d'informations : https://modelcontextprotocol.io/quickstart/user
Claude Code
Prérequis :
- Jeton API personnel CircleCI (en savoir plus)
- NPX : Node.js >= v18 et pnpm
- Docker : Docker
Utilisation de NPX dans un serveur MCP local
claude mcp add circleci-mcp-server -e CIRCLECI_TOKEN=your-circleci-token -- npx -y @circleci/mcp-server-circleci@latest
Utilisation de Docker dans un serveur MCP local
claude mcp add circleci-mcp-server -e CIRCLECI_TOKEN=your-circleci-token -e CIRCLECI_BASE_URL=https://circleci.com -- docker run --rm -i -e CIRCLECI_TOKEN -e CIRCLECI_BASE_URL circleci/mcp-server-circleci
Utilisation d'un serveur MCP distant auto-géré
Voir Serveur MCP distant auto-géré et la configuration du client Claude Code là-bas.
Windsurf
Prérequis :
- Jeton API personnel CircleCI (en savoir plus)
- NPX : Node.js >= v18 et pnpm
- Docker : Docker
Utilisation de NPX dans un serveur MCP local
Ajoutez ce qui suit à votre mcp_config.json Windsurf :
{
"mcpServers": {
"circleci-mcp-server": {
"command": "npx",
"args": ["-y", "@circleci/mcp-server-circleci@latest"],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
Utilisation de Docker dans un serveur MCP local
Ajoutez ce qui suit à votre mcp_config.json Windsurf :
{
"mcpServers": {
"circleci-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"CIRCLECI_TOKEN",
"-e",
"CIRCLECI_BASE_URL",
"-e",
"MAX_MCP_OUTPUT_LENGTH",
"circleci/mcp-server-circleci"
],
"env": {
"CIRCLECI_TOKEN": "your-circleci-token",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
}
}
}
}
Utilisation d'un serveur MCP distant auto-géré
Voir Serveur MCP distant auto-géré. Utilisez la configuration client par utilisateur dans votre mcp_config.json Windsurf.
Pour plus d'informations : https://docs.windsurf.com/windsurf/mcp
Amazon Q Developer CLI
Prérequis :
La configuration du client MCP dans Amazon Q Developer est stockée au format JSON dans un fichier nommé mcp.json. Deux niveaux de configuration sont pris en charge :
- Global :
~/.aws/amazonq/mcp.json— s'applique à tous les espaces de travail - Espace de travail :
.amazonq/mcp.json— spécifique à l'espace de travail actuel
Si les deux fichiers existent, leur contenu est fusionné. En cas de conflit, la configuration de l'espace de travail a priorité.
Utilisation de NPX dans un serveur MCP local
Modifiez ~/.aws/amazonq/mcp.json ou créez .amazonq/mcp.json avec ce qui suit :
{
"mcpServers": {
"circleci-local": {
"command": "npx",
"args": [
"-y",
"@circleci/mcp-server-circleci@latest"
],
"env": {
"CIRCLECI_TOKEN": "YOUR_CIRCLECI_TOKEN",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
},
"timeout": 60000
}
}
}
Utilisation d'un serveur MCP distant auto-géré
Voir Serveur MCP distant auto-géré. Utilisez un script wrapper comme indiqué dans Clients Claude Desktop et CLI, puis enregistrez-le avec q mcp add.
Amazon Q Developer dans l'IDE
Prérequis :
Utilisation de NPX dans un serveur MCP local
Modifiez ~/.aws/amazonq/mcp.json ou créez .amazonq/mcp.json avec ce qui suit :
{
"mcpServers": {
"circleci-local": {
"command": "npx",
"args": [
"-y",
"@circleci/mcp-server-circleci@latest"
],
"env": {
"CIRCLECI_TOKEN": "YOUR_CIRCLECI_TOKEN",
"CIRCLECI_BASE_URL": "https://circleci.com",
"MAX_MCP_OUTPUT_LENGTH": "50000"
},
"timeout": 60000
}
}
}
Utilisation d'un serveur MCP distant auto-géré
Voir Serveur MCP distant auto-géré. Utilisez un script wrapper comme indiqué dans Clients Claude Desktop et CLI, puis ajoutez-le via l'interface de configuration MCP :
- Accéder à l'interface de configuration MCP
- Choisissez le symbole +
- Sélectionnez la portée : global ou local
- Entrez un nom (par exemple
circleci-remote-mcp) - Sélectionnez le protocole de transport : stdio
- Entrez le chemin de commande de votre script
- Cliquez sur Enregistrer
Smithery
Pour installer automatiquement le serveur MCP CircleCI pour Claude Desktop via Smithery :
npx -y @smithery/cli install @CircleCI-Public/mcp-server-circleci --client claude
Serveur MCP distant auto-géré
Exécutez le serveur MCP de manière centralisée (par exemple sur Kubernetes ou Docker) afin que votre équipe partage un seul déploiement. Choisissez comment les développeurs s'authentifient :
Choisir un mode de déploiement
| Mode | Quand l'utiliser | Configuration serveur | Configuration client | Piste d'audit CircleCI |
|---|---|---|---|---|
| Jetons par utilisateur (recommandé) | Équipes avec des jetons API personnels adossés au SSO | REQUIRE_REQUEST_TOKEN=true, pas de PAT serveur | Chaque développeur transmet son PAT | Par développeur |
| Jeton partagé (intérimaire) | Déploiement rapide, identité de service unique acceptable | CIRCLECI_TOKEN sur le serveur, REQUIRE_REQUEST_TOKEN=false (refus explicite) | Aucun en-tête d'auth requis | Identité partagée unique |
Sécurité : L'authentification des requêtes est activée par défaut en mode distant. Le mode jeton partagé la désactive (
REQUIRE_REQUEST_TOKEN=false), ce qui permet à tout appelant d'agir en tant qu'identitéCIRCLECI_TOKENdu serveur sans identifiants — y compris pour déclencher des pipelines avec une configuration arbitraire. Activez-le uniquement sur un réseau que vous contrôlez entièrement, et préférez les jetons par utilisateur sinon. La terminaison TLS à une passerelle fournit le chiffrement, pas l'authentification.Parce que cette combinaison est dangereuse sur une interface publique, le serveur refuse de démarrer lorsque
REQUIRE_REQUEST_TOKEN=falseest combiné avec une adresse de liaison non-loopback, sauf si vous acceptez explicitement le risque avecMCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true. La vérificationHost/Originn'est pas un substitut à l'authentification — voir Protection contre la liaison DNS ci-dessous.
1. Déployer le serveur
Les deux modes utilisent le mode HTTP distant (start=remote). Publiez le port 8000 (ou votre port choisi).
Jetons par utilisateur (recommandé) — accès via mcp-remote depuis localhost :
docker run --rm -p 8000:8000 \
-e start=remote \
-e port=8000 \
-e REQUIRE_REQUEST_TOKEN=true \
circleci/mcp-server-circleci
Jetons par utilisateur (recommandé) — accès via mcp-remote depuis un nom d'hôte public :
docker run --rm -p 8000:8000 \
-e start=remote \
-e port=8000 \
-e REQUIRE_REQUEST_TOKEN=true \
-e MCP_ALLOWED_HOSTS=my-mcp.example.com \
circleci/mcp-server-circleci
Jeton partagé (intérimaire) — accès via mcp-remote depuis un nom d'hôte public :
Parce que ce mode sert le PAT de l'organisation à tout appelant sans identifiants, il doit être exécuté uniquement là où le port publié est inaccessible depuis les réseaux non fiables, et vous devez le reconnaître explicitement, sinon le serveur refusera de démarrer :
docker run --rm -p 8000:8000 \
-e start=remote \
-e port=8000 \
-e CIRCLECI_TOKEN=your-shared-circleci-pat \
-e REQUIRE_REQUEST_TOKEN=false \
-e MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true \
-e MCP_ALLOWED_HOSTS=my-mcp.example.com \
circleci/mcp-server-circleci
Préférez placer une authentification devant le port à la place — une passerelle qui exige SSO, mTLS, ou une clé API — ou passez aux jetons par utilisateur ci-dessus.
Variables d'environnement :
| Variable | Description |
|---|---|
start=remote | Démarre le serveur MCP HTTP+SSE au lieu de stdio |
port | Port d'écoute dans le conteneur (défaut : 8000) |
REQUIRE_REQUEST_TOKEN | Rejette les requêtes sans en-tête Authorization: Bearer ou Circle-Token. Requis par défaut ; définissez REQUIRE_REQUEST_TOKEN=false pour autoriser les requêtes non authentifiées (mode jeton partagé) |
CIRCLECI_TOKEN | Jeton PAT de secours partagé pour toutes les requêtes lorsque les en-têtes par utilisateur ne sont pas envoyés |
CIRCLECI_BASE_URL | Facultatif — requis uniquement pour on-prem (défaut : https://circleci.com) |
DISABLE_TELEMETRY=true | Désactive l'export des métriques d'utilisation |
MCP_ALLOWED_HOSTS | Liste séparée par des virgules de valeurs d'en-tête Host supplémentaires à autoriser (p. ex. my-mcp.example.com,my-mcp.example.com:443). Les noms d'hôte en boucle locale sont toujours autorisés. Requis pour tout déploiement non en boucle locale. |
MCP_ALLOWED_ORIGINS | Liste séparée par des virgules de valeurs d'en-tête Origin supplémentaires à autoriser (p. ex. https://my-app.example.com). Les origines en boucle locale sont toujours autorisées. Nécessaire uniquement lorsqu'un navigateur accède directement à ce serveur (pas via mcp-remote). |
MCP_BIND_HOST | Interface réseau à laquelle se lier (défaut : 0.0.0.0). Définissez 127.0.0.1 pour restreindre à la boucle locale uniquement (incompatible avec le mappage de ports Docker -p). |
MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS | Requis (=true) pour démarrer avec REQUIRE_REQUEST_TOKEN=false sur une adresse de liaison non en boucle locale. Atteste que toute pair capable d'atteindre le port agit comme l'identité CIRCLECI_TOKEN du serveur sans identifiant. Sans effet lorsque des jetons de requête sont requis. |
MCP_FILE_OUTPUT_ROOTS | Liste séparée par des virgules de répertoires supplémentaires que les outils de lecture/écriture de fichiers peuvent utiliser (p. ex. /srv/reports,/data/exports). Le répertoire de travail, le répertoire personnel et le répertoire temporaire sont toujours autorisés. Voir la note ci-dessous. |
Emplacements de sortie des fichiers (s'applique aux transports stdio et distant) : Les outils qui acceptent un chemin de système de fichiers —
get_build_failure_logs(outputDir),download_usage_api_data(outputDir) etfind_underused_resource_classes(csvFilePath) — ne peuvent lire et écrire qu'à l'intérieur du répertoire de travail du serveur, du répertoire personnel de l'utilisateur et du répertoire temporaire du système. Dans ces racines, les répertoires de configuration cachés (~/.ssh,~/.aws,~/.config,.git, …),node_moduleset les répertoires de l'agent de lancement sont rejetés, de même que les liens symboliques qui résolvent hors des racines autorisées. Les répertoires système (/etc,/usr,/bin,/System,/Library,%SystemRoot%, …) sont refusés inconditionnellement et ne peuvent pas être réactivés. Les fichiers de sortie ne sont jamais écrits via un lien symbolique.Si votre copie de travail se trouve hors de ces racines —
/workspacedans un conteneur,/srv,/opt, un volume secondaire tel que/Volumes/work— définissezMCP_FILE_OUTPUT_ROOTSsur ce répertoire, sinon ces chemins sont rejetés. Pour un serveur stdio, le répertoire de travail est généralement déjà la racine du projet, donc aucune configuration n'est nécessaire. Cela importe surtout pour le transport distant, où les chemins proviennent de clients réseau plutôt que de l'utilisateur local.
Protection contre le rebinding DNS (pas une authentification) : Le transport distant valide l'en-tête
Hostsur chaque requête/mcp. Par défaut, seules les adresses en boucle locale (localhost,127.0.0.1,[::1]) sont acceptées. Les déploiements publics doivent définirMCP_ALLOWED_HOSTSsur le nom d'hôte que les clients utilisent, sinon toutes les requêtes/mcprecevront403 Forbidden. Le point de terminaison de contrôle de santé/pingn'est pas protégé, de sorte que les sondes des équilibreurs de charge continuent de fonctionner indépendamment deHost.L'en-tête
Origin(envoyé par les navigateurs) est également validé lorsqu'il est présent. Les clients non-navigateurs tels quemcp-remoten'envoient jamaisOrigin, ils ne sont donc pas affectés par ce contrôle.Ce contrôle n'est pas un contrôle d'accès et ne doit pas être utilisé comme tel. Les deux en-têtes sont choisis par l'appelant, donc tout client non-navigateur — curl, un script, une socket brute — peut envoyer un
Hostautorisé et omettreOriginpour le satisfaire. Son seul but est d'empêcher un navigateur d'être dirigé vers le serveur par un DNS contrôlé par un attaquant, ce qui constitue la menace de rebinding DNS. Authentifier les appelants est le rôle deREQUIRE_REQUEST_TOKEN(ou d'un proxy d'authentification devant le port). Exiger un en-têteOrigincasserait tous les clients CLI légitimes sans arrêter aucun attaquant.Derrière un proxy inverse : Si votre proxy réécrit
Hostvers l'adresse du backend (comportement par défaut de nginx), ajoutezproxy_set_header Host $host;pour faire passer le nom d'hôte d'origine, puis définissezMCP_ALLOWED_HOSTSsur ce nom d'hôte public. Sinon, définissezMCP_ALLOWED_HOSTSsur le nom d'hôte que le proxy transmet.
Le serveur accepte les jetons par requête via :
Authorization: Bearer <circleci-pat>Circle-Token: <circleci-pat>
Si un client envoie un jeton d'en-tête, il a priorité sur CIRCLECI_TOKEN sur le serveur.
Les métriques de télémétrie enregistrées pendant une requête sont exportées avec le même jeton que cette requête.
2. Configurer les clients
La plupart des clients MCP ne prennent en charge que les processus locaux (stdio). Utilisez mcp-remote, un pont stdio-vers-HTTP tiers, pour les connecter à votre serveur distant.
Schéma d'URL : Utilisez
http://localhost:8000/mcpavec--allow-httppour les tests locaux. En production, terminez TLS à votre point d'entrée/équilibreur de charge et utilisezhttps://your-host/mcpsans--allow-http.
Windows : Évitez les espaces autour des deux-points dans les valeurs
--header. Placez la valeur complète deBearer <token>dans une variable d'environnement.
Sécurité : Les exemples utilisent
npxpour plus de commodité. Pour une production ou un déploiement en équipe, épinglez une version spécifique dans votre configuration MCP (par exemplemcp-remote@0.1.38au lieu demcp-remote). N'utilisez pas de versions inférieures à0.1.16(CVE-2025-6514).
Configuration du client : jetons par utilisateur
Chaque développeur transmet son propre jeton personnel API CircleCI sur chaque requête :
{
"inputs": [
{
"type": "promptString",
"id": "circleci-token",
"description": "CircleCI API Token",
"password": true
}
],
"mcpServers": {
"circleci-mcp-server-remote": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:8000/mcp",
"--allow-http",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer ${input:circleci-token}"
}
}
}
}
Remplacez http://localhost:8000/mcp par l'URL du serveur de votre équipe. Cursor et VS Code prennent en charge les invites ${input:...} ; les autres clients peuvent définir AUTH_HEADER directement.
Configuration du client : jeton partagé
Lorsque le serveur a CIRCLECI_TOKEN défini et est démarré avec REQUIRE_REQUEST_TOKEN=false (l'authentification de requête est activée par défaut et doit être explicitement désactivée, et une liaison non en boucle locale requiert en outre MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true), les clients n'ont pas besoin d'envoyer de jeton :
{
"mcpServers": {
"circleci-mcp-server-remote": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:8000/mcp",
"--allow-http"
]
}
}
}
Claude Desktop et clients CLI
Créez un script d'encapsulation (par ex. circleci-remote-mcp.sh) :
#!/bin/bash
export AUTH_HEADER="Bearer your-circleci-token"
npx mcp-remote http://localhost:8000/mcp --allow-http --header "Authorization:${AUTH_HEADER}"
Rendez-le exécutable (chmod +x circleci-remote-mcp.sh), puis référencez-le depuis votre configuration MCP :
{
"mcpServers": {
"circleci-remote-mcp-server": {
"command": "/full/path/to/circleci-remote-mcp.sh"
}
}
}
Claude Code
claude mcp add circleci-mcp-server \
-e AUTH_HEADER="Bearer your-circleci-token" \
-- npx mcp-remote http://localhost:8000/mcp --allow-http --header "Authorization:${AUTH_HEADER}"
Omettez --header et AUTH_HEADER lors de l'utilisation d'un serveur à jeton partagé.
3. Vérifier le déploiement
# Health check (no auth required)
curl http://localhost:8000/ping
# Should return 401 when REQUIRE_REQUEST_TOKEN=true and no token is sent
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
# Should return 200 with a valid Bearer token and MCP Accept headers
curl -s -o /dev/null -w "%{http_code}\n" -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer your-circleci-pat" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
Démo
Regardez-le en action
Exemple : « Trouver le dernier pipeline en échec sur ma branche et obtenir les journaux » — voir le wiki pour plus d'exemples.
https://github.com/user-attachments/assets/3c765985-8827-442a-a8dc-5069e01edb74
Détails des outils
config_helper
Assiste les tâches de configuration CircleCI en fournissant des conseils et une validation.
- Valide votre
.circleci/config.ymlpour les erreurs de syntaxe et sémantiques - Fournit des résultats de validation détaillés et des recommandations de configuration
- Exemple : « Valider ma configuration CircleCI »
download_usage_api_data
Télécharge les données d'utilisation depuis l'API d'utilisation CircleCI pour une organisation donnée. Accepte une saisie de date flexible (p. ex., « mars 2025 » ou « le mois dernier »). Fonctionnalité cloud uniquement.
Option 1 : Démarrer un nouveau travail d'export en fournissant :
orgId,startDate,endDate(max 32 jours),outputDir
Option 2 : Vérifier/télécharger un travail d'export existant en fournissant :
orgId,jobId,outputDir
Renvoie un fichier CSV avec les données d'utilisation CircleCI pour la période spécifiée.
[!NOTE] Les données d'utilisation peuvent être alimentées dans l'outil
find_underused_resource_classespour l'analyse d'optimisation des coûts.
find_flaky_tests
Identifie les tests instables dans votre projet CircleCI en analysant l'historique d'exécution des tests. Exploite la fonctionnalité de détection des tests instables de CircleCI.
Cet outil peut être utilisé de trois manières :
-
Utilisation du slug de projet (recommandé) :
- Utilisez d'abord
list_followed_projectspour obtenir vos projets, puis : - Exemple : « Obtenir les tests instables pour mon-projet »
- Utilisez d'abord
-
Utilisation de l'URL du projet CircleCI :
- Exemple : « Trouver les tests instables dans https://app.circleci.com/pipelines/github/org/repo »
-
Utilisation du contexte de projet local :
- Fonctionne depuis votre espace de travail local en fournissant la racine de l'espace de travail et l'URL du dépôt git distant
- Exemple : « Trouver les tests instables dans mon projet actuel »
Modes de sortie :
- Texte (défaut) : Renvoie les détails des tests instables au format texte
- Fichier (requiert la variable d'environnement
FILE_OUTPUT_DIRECTORY) : Crée un répertoire avec les détails des tests instables
find_underused_resource_classes
Analyse un fichier CSV de données d'utilisation CircleCI pour trouver les tâches dont l'utilisation CPU/RAM moyenne ou maximale est inférieure à un seuil donné (défaut : 40 %).
Fournissez un fichier CSV obtenu depuis download_usage_api_data.
Renvoie une liste Markdown de tâches sous-utilisées organisée par projet et workflow — utile pour identifier les opportunités d'optimisation des coûts.
get_build_failure_logs
Récupère les journaux d'échec détaillés des builds CircleCI. Cet outil peut être utilisé de trois manières :
-
Utilisation du slug de projet et de la branche (recommandé) :
- Utilisez d'abord
list_followed_projectspour obtenir vos projets, puis : - Exemple : « Obtenir les échecs de build pour mon-projet sur la branche principale »
- Utilisez d'abord
-
Utilisation des URL CircleCI :
- Fournissez directement une URL de tâche en échec ou une URL de pipeline
- Exemple : « Obtenir les journaux depuis https://app.circleci.com/pipelines/github/org/repo/123 »
-
Utilisation du contexte de projet local :
- Fonctionne depuis votre espace de travail local en fournissant la racine de l'espace de travail, l'URL du dépôt git distant et le nom de la branche
- Exemple : « Trouver le dernier pipeline en échec sur ma branche actuelle »
L'outil renvoie des journaux formatés comprenant :
- Les noms des tâches
- Les détails d'exécution étape par étape
- Les messages d'échec et le contexte
get_job_test_results
Récupère les métadonnées de test pour les tâches CircleCI, vous permettant d'analyser les résultats de test sans quitter votre IDE. Cet outil peut être utilisé de trois manières :
-
Utilisation du slug de projet et de la branche (recommandé) :
- Exemple : « Obtenir les résultats de test pour mon-projet sur la branche principale »
-
Utilisation de l'URL CircleCI :
- URL de tâche :
https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def/jobs/789 - URL de workflow :
https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def - URL de pipeline :
https://app.circleci.com/pipelines/github/org/repo/123
- URL de tâche :
-
Utilisation du contexte de projet local :
- Fonctionne depuis votre espace de travail local en fournissant la racine de l'espace de travail, l'URL du dépôt git distant et le nom de la branche
L'outil renvoie :
- Un résumé de tous les tests (total, réussis, échoués)
- Des informations détaillées sur les tests échoués : nom, classe, fichier, message d'erreur, durée
- La liste des tests réussis avec leur durée
- Filtrer par résultat de test
[!NOTE] Les métadonnées de test doivent être configurées dans votre configuration CircleCI. Voir Collecter les données de test pour les instructions de configuration.
get_latest_pipeline_status
Récupère le statut du dernier pipeline pour une branche donnée. Cet outil peut être utilisé de trois manières :
-
Utilisation du slug de projet et de la branche (recommandé) :
- Exemple : « Obtenir le statut du dernier pipeline pour mon-projet sur la branche principale »
-
Utilisation de l'URL du projet CircleCI :
- Exemple : « Obtenir le statut du dernier pipeline pour https://app.circleci.com/pipelines/github/org/repo »
-
Utilisation du contexte de projet local :
- Fonctionne depuis votre espace de travail local en fournissant la racine de l'espace de travail, l'URL du dépôt git et le nom de la branche
Exemple de sortie :
---
Workflow: build
Status: success
Duration: 5 minutes
Created: 4/20/2025, 10:15:30 AM
Stopped: 4/20/2025, 10:20:45 AM
---
Workflow: test
Status: running
Duration: unknown
Created: 4/20/2025, 10:21:00 AM
Stopped: in progress
list_artifacts
Récupère la liste des artefacts produits par un travail CircleCI. Cet outil peut être utilisé de trois manières :
-
Utilisation du slug de projet et de la branche (recommandé) :
- Utilisez d'abord
list_followed_projectspour obtenir vos projets, puis : - Exemple : « Lister les artefacts pour mon-projet sur la branche principale »
- Utilisez d'abord
-
Utilisation de l'URL CircleCI :
- URL du travail :
https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/789 - URL du workflow :
https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def - URL du pipeline :
https://app.circleci.com/pipelines/gh/organization/project/123
- URL du travail :
-
Utilisation du contexte de projet local :
- Fonctionne depuis votre espace de travail local en fournissant la racine de l'espace de travail, l'URL du dépôt git et le nom de la branche
Utile pour :
- Trouver les URL de téléchargement des artefacts de build (binaires, rapports, journaux)
- Vérifier quels artefacts ont été produits par une exécution de pipeline
list_component_versions
Liste toutes les versions d'un composant CircleCI spécifique dans un environnement. Inclut le statut de déploiement, les informations de commit et les horodatages.
L'outil vous demandera de sélectionner le composant et l'environnement s'ils ne sont pas fournis.
Utile pour :
- Identifier quelle version est actuellement en production
- Sélectionner les versions cibles pour les opérations de rollback
- Obtenir les détails de déploiement (pipeline, workflow, travail)
list_followed_projects
Liste tous les projets que l'utilisateur suit sur CircleCI.
- Affiche tous les projets auxquels vous avez accès avec leur
projectSlug - Exemple : « Lister mes projets CircleCI »
Exemple de sortie :
Projects followed:
1. my-project (projectSlug: gh/organization/my-project)
2. another-project (projectSlug: gh/organization/another-project)
[!NOTE] Le
projectSlug(pas le nom du projet) est requis pour de nombreux autres outils CircleCI.
rerun_workflow
Relance un workflow depuis son début ou depuis le travail ayant échoué.
Renvoie l'ID du workflow nouvellement créé et un lien pour le surveiller.
run_pipeline
Déclenche l'exécution d'un pipeline. Cet outil peut être utilisé de trois manières :
-
Utilisation du slug de projet et de la branche (recommandé) :
- Exemple : « Exécuter le pipeline pour mon-projet sur la branche principale »
-
Utilisation de l'URL CircleCI :
- URL du pipeline, URL du workflow, URL du travail ou URL du projet avec branche
- Exemple : « Exécuter le pipeline pour https://app.circleci.com/pipelines/github/org/repo/123 »
-
Utilisation du contexte de projet local :
- Fonctionne depuis votre espace de travail local en fournissant la racine de l'espace de travail, l'URL du dépôt git et le nom de la branche
L'outil renvoie un lien pour surveiller l'exécution du pipeline.
run_rollback_pipeline
Déclenche un rollback pour un projet CircleCI. L'outil vous guide de manière interactive à travers :
- Sélection du projet — liste les projets suivis pour que vous choisissiez
- Sélection de l'environnement — liste les environnements disponibles (sélection automatique s'il n'y en a qu'un)
- Sélection du composant — liste les composants disponibles (sélection automatique s'il n'y en a qu'un)
- Sélection de la version — affiche les versions disponibles ; vous sélectionnez la cible pour le rollback
- Détection du mode de rollback — vérifie si un pipeline de rollback est configuré
- Exécution du rollback — deux options :
- Rollback de pipeline : déclenche le pipeline de rollback
- Relance de workflow : relance un workflow précédent en utilisant son ID de workflow
- Confirmation — résume et confirme avant l'exécution
Dépannage
Correctifs rapides
Problèmes les plus courants :
-
Vider les caches de packages :
npx clear-npx-cache npm cache clean --force -
Forcer la dernière version : Ajoutez
@latestà votre configuration :"args": ["-y", "@circleci/mcp-server-circleci@latest"] -
Redémarrez complètement votre IDE (pas seulement recharger la fenêtre)
Problèmes d'authentification
- Erreurs de jeton invalide : Vérifiez votre
CIRCLECI_TOKENdans Jetons API personnels - Erreurs de permission : Assurez-vous que le jeton a un accès en lecture à vos projets
- Variables d'environnement non chargées : Testez avec
echo $CIRCLECI_TOKEN(Mac/Linux) ouecho %CIRCLECI_TOKEN%(Windows)
Problèmes de connexion et de réseau
- URL de base : Confirmez que
CIRCLECI_BASE_URLesthttps://circleci.com - Réseaux d'entreprise : Configurez les paramètres de proxy npm si vous êtes derrière un pare-feu
- Blocage par pare-feu : Vérifiez si un logiciel de sécurité bloque les téléchargements de packages
Configuration système requise
- Version de Node.js : Assurez-vous d'avoir >= 18.0.0 avec
node --version - Mise à jour de Node.js : Envisagez la dernière LTS si vous rencontrez des problèmes de compatibilité
- Gestionnaire de packages : Vérifiez que npm/pnpm fonctionne :
npm --version
Problèmes spécifiques à l'IDE
- Emplacement du fichier de configuration : Vérifiez à nouveau le chemin pour votre système d'exploitation
- Erreurs de syntaxe : Validez la syntaxe JSON dans votre fichier de configuration
- Journaux de la console : Consultez la console de développement de l'IDE pour des erreurs spécifiques
- Essayez un autre IDE : Testez dans un autre éditeur pris en charge pour isoler le problème
Problèmes de processus
Processus bloqués — tuez les processus MCP existants :
# Mac/Linux:
pkill -f "mcp-server-circleci"
# Windows:
taskkill /f /im node.exe
Conflits de ports : Redémarrez votre IDE si la connexion semble bloquée.
Débogage avancé
- Testez le package directement :
npx @circleci/mcp-server-circleci@latest --help - Journalisation verbeuse :
DEBUG=* npx @circleci/mcp-server-circleci@latest - Solution de repli Docker : Essayez l'installation Docker si npx échoue systématiquement
Besoin d'aide supplémentaire ?
- Consultez Problèmes GitHub pour des problèmes similaires
- Incluez votre système d'exploitation, la version de Node et l'IDE lors du signalement de problèmes
- Partagez les messages d'erreur pertinents de la console de l'IDE
Télémétrie
Le serveur prend en charge les métriques OpenTelemetry pour le suivi de l'utilisation des outils. Les métriques sont exportées sauf si vous définissez DISABLE_TELEMETRY=true. Sur les déploiements distants, les métriques utilisent le même jeton que la requête (PAT par utilisateur ou PAT de serveur partagé).
| Métrique | Description |
|---|---|
circleci.mcp.tool.invocations | Nombre d'invocations d'outils |
circleci.mcp.tool.duration_ms | Temps d'exécution en ms |
circleci.mcp.tool.errors | Nombre d'erreurs |
Développement
Pour commencer
-
Clonez le dépôt :
git clone https://github.com/CircleCI-Public/mcp-server-circleci.git cd mcp-server-circleci -
Installez les dépendances :
pnpm install -
Compilez le projet :
pnpm build
Construction du conteneur Docker
Vous pouvez construire le conteneur Docker localement en utilisant :
docker build -t circleci:mcp-server-circleci .
Cela créera une image Docker étiquetée comme circleci:mcp-server-circleci que vous pourrez utiliser avec n'importe quel client MCP.
Mode stdio local (développeur unique, jeton sur le client) :
docker run --rm -i \
-e CIRCLECI_TOKEN=your-circleci-token \
-e CIRCLECI_BASE_URL=https://circleci.com \
circleci/mcp-server-circleci
Mode distant (serveur centralisé pour une équipe) : voir Serveur MCP distant auto-géré.
Développement avec MCP Inspector
Le moyen le plus simple d'itérer sur le serveur MCP est d'utiliser l'inspecteur MCP. Vous pouvez en savoir plus sur l'inspecteur MCP à https://modelcontextprotocol.io/docs/tools/inspector
-
Démarrez le serveur de développement :
pnpm watch # Keep this running in one terminal -
Dans un terminal séparé, lancez l'inspecteur :
pnpm inspector -
Configurez l'environnement :
- Ajoutez votre
CIRCLECI_TOKENà la section Variables d'environnement dans l'interface de l'inspecteur - Le jeton doit avoir un accès en lecture à vos projets CircleCI
- Optionnellement, définissez votre URL de base CircleCI (par défaut
https://circleci.com)
- Ajoutez votre
Tests
-
Exécutez la suite de tests :
pnpm test -
Exécutez les tests en mode surveillance pendant le développement :
pnpm test:watch
Pour des directives de contribution plus détaillées, consultez CONTRIBUTING.md