CircleCI
oficialPermita que Agentes de IA corrijam falhas de build do CircleCI.
O que você pode fazer com CircleCI MCP?
- Validar configuração do CircleCI — Peça para validar seu
.circleci/config.ymlquanto a erros de sintaxe e semântica viaconfig_helper. - Obter status do pipeline — Verifique o status do pipeline mais recente de uma branch com
get_latest_pipeline_status. - Disparar e reexecutar pipelines — Inicie um novo pipeline com
run_pipelineou reexecute um workflow desde o início ou a partir de um job com falha viarerun_workflow. - Investigar falhas de build — Recupere logs detalhados de falhas com
get_build_failure_logse resultados de teste viaget_job_test_results. - Encontrar testes instáveis — Identifique testes instáveis analisando o histórico de execução de testes usando
find_flaky_tests. - Analisar uso e custos — Baixe dados de uso com
download_usage_api_datae encontre classes de recursos subutilizadas viafind_underused_resource_classes.
Documentação
[!IMPORTANT] Este pacote está descontinuado. Por favor, migre.
@circleci/mcp-server-circlecinão está mais recebendo trabalho de funcionalidades. Use o servidor MCP hospedado do CircleCI ou o MCP da CLI do CircleCI — veja a visão geral do MCP do CircleCI.Este repositório será arquivado. As versões existentes continuam instaláveis via npm, mas executar um servidor sem manutenção que detém um Token de API Pessoal do CircleCI não é recomendado.
Se você estiver executando o transporte remoto autogerenciado (
start=remote), migre primeiro: o servidor hospedado é seu substituto direto e elimina a necessidade de operar um serviço exposto à rede que intermedia o token da sua organização.
Servidor MCP do CircleCI
O Model Context Protocol (MCP) é um protocolo novo e padronizado para gerenciar contexto entre grandes modelos de linguagem (LLMs) e sistemas externos. Neste repositório, fornecemos um Servidor MCP para o CircleCI.
Use Cursor, Windsurf, Copilot, Claude ou qualquer cliente compatível com MCP para interagir com o CircleCI usando linguagem natural — sem sair do seu IDE.
Ferramentas
| Ferramenta | Descrição |
|---|---|
config_helper | Valide e obtenha orientação para sua configuração do CircleCI |
download_usage_api_data | Baixe dados de uso da API de Uso do CircleCI |
find_flaky_tests | Identifique testes instáveis analisando o histórico de execução de testes |
find_underused_resource_classes | Encontre jobs com recursos de computação subutilizados |
get_build_failure_logs | Recupere logs detalhados de falhas de builds do CircleCI |
get_job_test_results | Recupere metadados e resultados de testes para jobs do CircleCI |
get_latest_pipeline_status | Obtenha o status do pipeline mais recente para um branch |
list_artifacts | Liste artefatos produzidos por um job do CircleCI |
list_component_versions | Liste todas as versões de um componente do CircleCI |
list_followed_projects | Liste todos os projetos do CircleCI que você segue |
rerun_workflow | Reexecute um workflow desde o início ou a partir do job com falha |
run_pipeline | Dispare um pipeline para execução |
run_rollback_pipeline | Dispare um rollback para um projeto |
Instalação
Implantação em equipe / centralizada: Para executar um servidor remoto compartilhado para sua organização (Kubernetes, Docker, etc.) com tokens do CircleCI por desenvolvedor ou compartilhados, consulte Servidor MCP Remoto Autogerenciado.
Cursor
Pré-requisitos:
- Token de API Pessoal do CircleCI (saiba mais)
- NPX: Node.js >= v18 e pnpm
- Docker: Docker
Usando NPX em um Servidor MCP local
Adicione o seguinte à sua configuração MCP do 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_URLé opcional — necessário apenas para clientes on-premise.MAX_MCP_OUTPUT_LENGTHé opcional — comprimento máximo de saída para respostas MCP (padrão: 50000).
Usando Docker em um Servidor MCP local
Adicione o seguinte à sua configuração MCP do 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"
}
}
}
}
Usando um Servidor MCP Remoto Autogerenciado
Consulte Servidor MCP Remoto Autogerenciado. Use a configuração de cliente por usuário e adicione-a à sua configuração MCP do Cursor (Cursor Settings → MCP).
VS Code
Pré-requisitos:
- Token de API Pessoal do CircleCI (saiba mais)
- NPX: Node.js >= v18 e pnpm
- Docker: Docker
Usando NPX em um Servidor MCP local
Adicione o seguinte a .vscode/mcp.json no seu projeto:
{
"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}"
}
}
}
}
💡 As entradas são solicitadas na primeira inicialização do servidor e depois armazenadas com segurança pelo VS Code.
Usando Docker em um Servidor MCP local
Adicione o seguinte a .vscode/mcp.json no seu projeto:
{
"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}"
}
}
}
}
Usando um Servidor MCP Remoto Autogerenciado
Consulte Servidor MCP Remoto Autogerenciado. Use a configuração de cliente por usuário em .vscode/mcp.json.
Claude Desktop
Pré-requisitos:
- Token de API Pessoal do CircleCI (saiba mais)
- NPX: Node.js >= v18 e pnpm
- Docker: Docker
Usando NPX em um Servidor MCP local
Adicione o seguinte ao seu 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"
}
}
}
}
Usando Docker em um Servidor MCP local
Adicione o seguinte ao seu 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"
}
}
}
}
Usando um Servidor MCP Remoto Autogerenciado
Consulte Servidor MCP Remoto Autogerenciado. Crie um script wrapper conforme mostrado em Clientes Claude Desktop e CLI e aponte seu claude_desktop_config.json para ele.
Para encontrar ou criar seu arquivo de configuração, abra as configurações do Claude Desktop, clique em Developer na barra lateral esquerda e depois em Edit Config. O arquivo de configuração está localizado em:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Para mais informações: https://modelcontextprotocol.io/quickstart/user
Claude Code
Pré-requisitos:
- Token de API Pessoal do CircleCI (saiba mais)
- NPX: Node.js >= v18 e pnpm
- Docker: Docker
Usando NPX em um Servidor MCP local
claude mcp add circleci-mcp-server -e CIRCLECI_TOKEN=your-circleci-token -- npx -y @circleci/mcp-server-circleci@latest
Usando Docker em um Servidor 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
Usando um Servidor MCP Remoto Autogerenciado
Consulte Servidor MCP Remoto Autogerenciado e a configuração do cliente Claude Code lá.
Windsurf
Pré-requisitos:
- Token de API Pessoal do CircleCI (saiba mais)
- NPX: Node.js >= v18 e pnpm
- Docker: Docker
Usando NPX em um Servidor MCP local
Adicione o seguinte ao seu mcp_config.json do 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"
}
}
}
}
Usando Docker em um Servidor MCP local
Adicione o seguinte ao seu mcp_config.json do 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"
}
}
}
}
Usando um Servidor MCP Remoto Autogerenciado
Consulte Servidor MCP Remoto Autogerenciado. Use a configuração de cliente por usuário no seu mcp_config.json do Windsurf.
Para mais informações: https://docs.windsurf.com/windsurf/mcp
Amazon Q Developer CLI
Pré-requisitos:
A configuração do cliente MCP no Amazon Q Developer é armazenada em formato JSON em um arquivo chamado mcp.json. Dois níveis de configuração são suportados:
- Global:
~/.aws/amazonq/mcp.json— aplica-se a todos os workspaces - Workspace:
.amazonq/mcp.json— específico para o workspace atual
Se ambos os arquivos existirem, seus conteúdos são mesclados. Em caso de conflito, a configuração do workspace tem precedência.
Usando NPX em um Servidor MCP local
Edite ~/.aws/amazonq/mcp.json ou crie .amazonq/mcp.json com o seguinte:
{
"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
}
}
}
Usando um Servidor MCP Remoto Autogerenciado
Consulte Servidor MCP Remoto Autogerenciado. Use um script wrapper conforme mostrado em Clientes Claude Desktop e CLI e registre-o com q mcp add.
Amazon Q Developer no IDE
Pré-requisitos:
Usando NPX em um Servidor MCP local
Edite ~/.aws/amazonq/mcp.json ou crie .amazonq/mcp.json com o seguinte:
{
"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
}
}
}
Usando um Servidor MCP Remoto Autogerenciado
Consulte Servidor MCP Remoto Autogerenciado. Use um script wrapper conforme mostrado em Clientes Claude Desktop e CLI e adicione-o via a interface de configuração MCP:
- Acesse a interface de configuração MCP
- Escolha o símbolo +
- Selecione o escopo: global ou local
- Digite um nome (ex.:
circleci-remote-mcp) - Selecione o protocolo de transporte: stdio
- Digite o caminho do comando para o seu script
- Clique em Save
Smithery
Para instalar o Servidor MCP do CircleCI para Claude Desktop automaticamente via Smithery:
npx -y @smithery/cli install @CircleCI-Public/mcp-server-circleci --client claude
Servidor MCP Remoto Autogerenciado
Execute o servidor MCP centralmente (por exemplo, em Kubernetes ou Docker) para que sua equipe compartilhe uma única implantação. Escolha como os desenvolvedores se autenticam:
Escolha um modo de implantação
| Modo | Quando usar | Configuração do servidor | Configuração do cliente | Trilha de auditoria do CircleCI |
|---|---|---|---|---|
| Tokens por usuário (recomendado) | Equipes com Tokens de API Pessoal com SSO | REQUIRE_REQUEST_TOKEN=true, sem PAT no servidor | Cada desenvolvedor encaminha seu PAT | Por desenvolvedor |
| Token compartilhado (provisório) | Implantação rápida, identidade de serviço única aceitável | CIRCLECI_TOKEN no servidor, REQUIRE_REQUEST_TOKEN=false (opt-out explícito) | Nenhum cabeçalho de autenticação necessário | Identidade compartilhada única |
Segurança: A autenticação de solicitações está ativada por padrão no modo remoto. O modo de token compartilhado a desativa (
REQUIRE_REQUEST_TOKEN=false), fazendo com que qualquer chamador possa agir como a identidadeCIRCLECI_TOKENdo servidor sem credenciais — incluindo disparar pipelines com configuração arbitrária. Ative-o apenas em uma rede em que você confie totalmente e prefira tokens por usuário caso contrário. Encerrar TLS em um ingress fornece criptografia, não autenticação.Como essa combinação é insegura em uma interface pública, o servidor se recusa a iniciar quando
REQUIRE_REQUEST_TOKEN=falseé combinado com um endereço de bind não-loopback, a menos que você aceite explicitamente o risco comMCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true. A verificaçãoHost/Originnão substitui a autenticação — veja Proteção contra rebinding de DNS abaixo.
1. Implante o servidor
Ambos os modos usam o modo HTTP remoto (start=remote). Publique a porta 8000 (ou a porta de sua escolha).
Tokens por usuário (recomendado) — acessados via mcp-remote a partir de localhost:
docker run --rm -p 8000:8000 \
-e start=remote \
-e port=8000 \
-e REQUIRE_REQUEST_TOKEN=true \
circleci/mcp-server-circleci
Tokens por usuário (recomendado) — acessados via mcp-remote a partir de um hostname público:
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
Token compartilhado (provisório) — acessado via mcp-remote a partir de um hostname público:
Como este modo serve o PAT da organização para qualquer chamador sem credencial, ele deve ser executado apenas onde a porta publicada não seja alcançável a partir de redes não confiáveis, e você deve reconhecer isso explicitamente ou o servidor se recusará a iniciar:
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
Prefira colocar autenticação na frente da porta — um ingress que exija SSO, mTLS ou uma chave de API — ou mude para tokens por usuário acima.
Variáveis de ambiente:
| Variável | Descrição |
|---|---|
start=remote | Inicia o servidor MCP HTTP+SSE em vez de stdio |
port | Porta de escuta dentro do contêiner (padrão: 8000) |
REQUIRE_REQUEST_TOKEN | Rejeita requisições sem o cabeçalho Authorization: Bearer ou Circle-Token. O padrão é exigir; defina REQUIRE_REQUEST_TOKEN=false para permitir requisições não autenticadas (modo de token compartilhado) |
CIRCLECI_TOKEN | PAT de fallback compartilhado para todas as requisições quando cabeçalhos por usuário não são enviados |
CIRCLECI_BASE_URL | Opcional — necessário apenas para on-prem (padrão: https://circleci.com) |
DISABLE_TELEMETRY=true | Opta por não exportar métricas de uso |
MCP_ALLOWED_HOSTS | Lista separada por vírgulas de valores adicionais de cabeçalho Host permitidos (ex.: my-mcp.example.com,my-mcp.example.com:443). Hostnames de loopback são sempre permitidos. Necessário para qualquer implantação fora de loopback. |
MCP_ALLOWED_ORIGINS | Lista separada por vírgulas de valores adicionais de cabeçalho Origin permitidos (ex.: https://my-app.example.com). Origens de loopback são sempre permitidas. Necessário apenas quando um navegador acessa este servidor diretamente (não via mcp-remote). |
MCP_BIND_HOST | Interface de rede à qual vincular (padrão: 0.0.0.0). Defina como 127.0.0.1 para restringir apenas a loopback (não compatível com mapeamento de porta -p do Docker). |
MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS | Necessário (=true) para iniciar com REQUIRE_REQUEST_TOKEN=false em um endereço de bind fora de loopback. Reconhece que qualquer peer capaz de alcançar a porta atua como identidade de CIRCLECI_TOKEN do servidor sem credencial. Não tem efeito quando tokens de requisição são exigidos. |
MCP_FILE_OUTPUT_ROOTS | Lista separada por vírgulas de diretórios adicionais que as ferramentas de leitura/escrita de arquivos podem usar (ex.: /srv/reports,/data/exports). O diretório de trabalho, o diretório home e o diretório temporário são sempre permitidos. Veja a nota abaixo. |
Locais de saída de arquivos (aplica-se tanto a transportes stdio quanto remotos): Ferramentas que aceitam um caminho de sistema de arquivos —
get_build_failure_logs(outputDir),download_usage_api_data(outputDir) efind_underused_resource_classes(csvFilePath) — podem apenas ler e escrever dentro do diretório de trabalho do servidor, do diretório home do usuário e do diretório temporário do sistema. Dentro dessas raízes, diretórios de configuração ocultos (~/.ssh,~/.aws,~/.config,.git, …),node_modulese diretórios de launch-agent são rejeitados, assim como symlinks que resolvem fora das raízes permitidas. Diretórios de sistema (/etc,/usr,/bin,/System,/Library,%SystemRoot%, …) são recusados incondicionalmente e não podem ser reativados. Arquivos de saída nunca são gravados por meio de symlink.Se o seu checkout estiver fora dessas raízes —
/workspaceem um contêiner,/srv,/opt, um volume secundário como/Volumes/work— definaMCP_FILE_OUTPUT_ROOTSpara esse diretório, caso contrário esses caminhos serão rejeitados. Para um servidor stdio, o diretório de trabalho geralmente já é a raiz do projeto, portanto nenhuma configuração é necessária. Isso importa principalmente para o transporte remoto, onde os caminhos vêm de clientes de rede em vez do usuário local.
Proteção contra rebinding de DNS (não é autenticação): O transporte remoto valida o cabeçalho
Hostem todas as requisições/mcp. Por padrão, apenas endereços de loopback (localhost,127.0.0.1,[::1]) são aceitos. Implantações públicas devem definirMCP_ALLOWED_HOSTSpara o hostname que os clientes usam, ou todas as requisições/mcpreceberão403 Forbidden. O endpoint de health-check/pingnão é protegido, então as sondas do balanceador de carga continuam funcionando independentemente deHost.O cabeçalho
Origin(enviado por navegadores) também é validado quando presente. Clientes que não são navegadores, comomcp-remote, nunca enviamOrigin, portanto não são afetados por essa verificação.Esta verificação não é um controle de acesso e não deve ser usada como tal. Ambos os cabeçalhos são escolhidos pelo chamador, então qualquer cliente que não seja navegador — curl, um script, um socket bruto — pode enviar um
Hostpermitido e omitirOriginpara satisfazê-la. Seu único propósito é impedir que um navegador seja apontado para o servidor por DNS controlado por atacante, que é a ameaça de rebinding de DNS. Autenticar chamadores é função deREQUIRE_REQUEST_TOKEN(ou de um proxy autenticador na frente da porta). Exigir um cabeçalhoOriginquebraria todos os clientes CLI legítimos sem impedir nenhum atacante.Atrás de um proxy reverso: Se o seu proxy reescreve
Hostpara o endereço do backend (padrão do nginx), adicioneproxy_set_header Host $host;para passar o hostname original, e então definaMCP_ALLOWED_HOSTSpara esse hostname público. Alternativamente, definaMCP_ALLOWED_HOSTSpara qualquer hostname que o proxy encaminhe.
O servidor aceita tokens por requisição via:
Authorization: Bearer <circleci-pat>Circle-Token: <circleci-pat>
Se um cliente enviar um cabeçalho de token, ele tem precedência sobre CIRCLECI_TOKEN no servidor.
As métricas de telemetria registradas durante uma requisição são exportadas usando o mesmo token dessa requisição.
2. Configurar clientes
A maioria dos clientes MCP suporta apenas processos locais (stdio). Use o mcp-remote, uma ponte stdio-para-HTTP de terceiros, para conectá-los ao seu servidor remoto.
Esquema de URL: Use
http://localhost:8000/mcpcom--allow-httppara testes locais. Em produção, encerre o TLS no seu ingress/balanceador de carga e usehttps://your-host/mcpsem--allow-http.
Windows: Evite espaços ao redor dos dois-pontos em valores
--header. Coloque o valor completo deBearer <token>em uma variável de ambiente.
Segurança: Os exemplos usam
npxpor conveniência. Para produção ou implementações em equipe, fixe uma versão específica na sua configuração MCP (por exemplo,mcp-remote@0.1.38em vez demcp-remote). Não use versões abaixo de0.1.16(CVE-2025-6514).
Configuração do cliente: tokens por usuário
Cada desenvolvedor encaminha seu próprio Personal API Token do CircleCI em cada requisição:
{
"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}"
}
}
}
}
Substitua http://localhost:8000/mcp pela URL do servidor da sua equipe. Cursor e VS Code suportam prompts ${input:...}; outros clientes podem definir AUTH_HEADER diretamente.
Configuração do cliente: token compartilhado
Quando o servidor tem CIRCLECI_TOKEN definido e é iniciado com REQUIRE_REQUEST_TOKEN=false (a autenticação de requisições está ativada por padrão e deve ser desativada explicitamente, e um bind fora de loopback adicionalmente exige MCP_ALLOW_UNAUTHENTICATED_NETWORK_ACCESS=true), os clientes não precisam enviar um token:
{
"mcpServers": {
"circleci-mcp-server-remote": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:8000/mcp",
"--allow-http"
]
}
}
}
Claude Desktop e clientes CLI
Crie um script wrapper (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}"
Torne-o executável (chmod +x circleci-remote-mcp.sh) e então referencie-o na sua configuração 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}"
Omita --header e AUTH_HEADER ao usar um servidor de token compartilhado.
3. Verificar a implantação
# 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"}}}'
Demonstração
Veja em ação
Exemplo: "Encontre o pipeline com falha mais recente na minha branch e obtenha os logs" — veja a wiki para mais exemplos.
https://github.com/user-attachments/assets/3c765985-8827-442a-a8dc-5069e01edb74
Detalhes das Ferramentas
config_helper
Auxilia em tarefas de configuração do CircleCI, fornecendo orientação e validação.
- Valida seu
.circleci/config.ymlquanto a erros de sintaxe e semântica - Fornece resultados de validação detalhados e recomendações de configuração
- Exemplo: "Valide minha configuração do CircleCI"
download_usage_api_data
Baixa dados de uso da API de Uso do CircleCI para uma organização específica. Aceita entrada de data flexível (ex.: "março de 2025" ou "mês passado"). Recurso exclusivo da nuvem.
Opção 1: Inicie um novo job de exportação fornecendo:
orgId,startDate,endDate(máx. 32 dias),outputDir
Opção 2: Verifique/baixe um job de exportação existente fornecendo:
orgId,jobId,outputDir
Retorna um arquivo CSV com dados de uso do CircleCI para o período especificado.
[!NOTE] Os dados de uso podem ser alimentados na ferramenta
find_underused_resource_classespara análise de otimização de custos.
find_flaky_tests
Identifica testes instáveis no seu projeto CircleCI analisando o histórico de execução de testes. Utiliza o recurso de detecção de testes instáveis do CircleCI.
Esta ferramenta pode ser usada de três maneiras:
-
Usando Project Slug (Recomendado):
- Primeiro use
list_followed_projectspara obter seus projetos e depois: - Exemplo: "Obtenha testes instáveis para meu-projeto"
- Primeiro use
-
Usando a URL do Projeto CircleCI:
- Exemplo: "Encontre testes instáveis em https://app.circleci.com/pipelines/github/org/repo"
-
Usando o Contexto do Projeto Local:
- Funciona a partir do seu workspace local fornecendo a raiz do workspace e a URL do git remote
- Exemplo: "Encontre testes instáveis no meu projeto atual"
Modos de saída:
- Texto (padrão): Retorna detalhes dos testes instáveis em formato de texto
- Arquivo (exige a env var
FILE_OUTPUT_DIRECTORY): Cria um diretório com detalhes dos testes instáveis
find_underused_resource_classes
Analisa um arquivo CSV de dados de uso do CircleCI para encontrar jobs com uso médio ou máximo de CPU/RAM abaixo de um limite especificado (padrão: 40%).
Forneça um arquivo CSV obtido de download_usage_api_data.
Retorna uma lista em markdown de jobs subutilizados organizados por projeto e workflow — útil para identificar oportunidades de otimização de custos.
get_build_failure_logs
Recupera logs de falha detalhados de builds do CircleCI. Esta ferramenta pode ser usada de três maneiras:
-
Usando Project Slug e Branch (Recomendado):
- Primeiro use
list_followed_projectspara obter seus projetos e depois: - Exemplo: "Obtenha falhas de build para meu-projeto na branch main"
- Primeiro use
-
Usando URLs do CircleCI:
- Forneça diretamente uma URL de job com falha ou de pipeline
- Exemplo: "Obtenha logs de https://app.circleci.com/pipelines/github/org/repo/123"
-
Usando o Contexto do Projeto Local:
- Funciona a partir do seu workspace local fornecendo a raiz do workspace, a URL do git remote e o nome da branch
- Exemplo: "Encontre o pipeline com falha mais recente na minha branch atual"
A ferramenta retorna logs formatados, incluindo:
- Nomes dos jobs
- Detalhes de execução passo a passo
- Mensagens de falha e contexto
get_job_test_results
Recupera metadados de testes para jobs do CircleCI, permitindo analisar resultados de testes sem sair da sua IDE. Esta ferramenta pode ser usada de três maneiras:
-
Usando Project Slug e Branch (Recomendado):
- Exemplo: "Obtenha resultados de testes para meu-projeto na branch main"
-
Usando URL do CircleCI:
- URL do job:
https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def/jobs/789 - URL do workflow:
https://app.circleci.com/pipelines/github/org/repo/123/workflows/abc-def - URL do pipeline:
https://app.circleci.com/pipelines/github/org/repo/123
- URL do job:
-
Usando o Contexto do Projeto Local:
- Funciona a partir do seu workspace local fornecendo a raiz do workspace, a URL do git remote e o nome da branch
A ferramenta retorna:
- Resumo de todos os testes (total, bem-sucedidos, com falha)
- Informações detalhadas sobre testes com falha: nome, classe, arquivo, mensagem de erro, duração
- Lista de testes bem-sucedidos com tempo de execução
- Filtro por resultado de teste
[!NOTE] Os metadados de teste devem ser configurados na sua configuração do CircleCI. Veja Coletar Dados de Teste para instruções de configuração.
get_latest_pipeline_status
Recupera o status do pipeline mais recente para um determinado branch. Esta ferramenta pode ser usada de três maneiras:
-
Usando Project Slug e Branch (Recomendado):
- Exemplo: "Obtenha o status do pipeline mais recente para my-project no branch main"
-
Usando URL do Projeto CircleCI:
- Exemplo: "Obtenha o status do pipeline mais recente para https://app.circleci.com/pipelines/github/org/repo"
-
Usando Contexto do Projeto Local:
- Funciona a partir do seu workspace local, fornecendo a raiz do workspace, URL remota do git e nome do branch
Exemplo de saída:
---
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
Recupera a lista de artefatos produzidos por um job do CircleCI. Esta ferramenta pode ser usada de três maneiras:
-
Usando Project Slug e Branch (Recomendado):
- Primeiro use
list_followed_projectspara obter seus projetos, depois: - Exemplo: "Liste artefatos para my-project no branch main"
- Primeiro use
-
Usando URL do CircleCI:
- URL do Job:
https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def/jobs/789 - URL do Workflow:
https://app.circleci.com/pipelines/gh/organization/project/123/workflows/abc-def - URL do Pipeline:
https://app.circleci.com/pipelines/gh/organization/project/123
- URL do Job:
-
Usando Contexto do Projeto Local:
- Funciona a partir do seu workspace local, fornecendo a raiz do workspace, URL remota do git e nome do branch
Útil para:
- Encontrar URLs de download para artefatos de build (binários, relatórios, logs)
- Verificar quais artefatos foram produzidos por uma execução de pipeline
list_component_versions
Lista todas as versões para um componente específico do CircleCI em um ambiente. Inclui status de implantação, informações de commit e carimbos de data/hora.
A ferramenta solicitará que você selecione o componente e o ambiente, se não forem fornecidos.
Útil para:
- Identificar qual versão está atualmente em produção
- Selecionar versões de destino para operações de rollback
- Obter detalhes de implantação (pipeline, workflow, job)
list_followed_projects
Lista todos os projetos que o usuário está seguindo no CircleCI.
- Mostra todos os projetos aos quais você tem acesso com seus
projectSlug - Exemplo: "Liste meus projetos do CircleCI"
Exemplo de saída:
Projects followed:
1. my-project (projectSlug: gh/organization/my-project)
2. another-project (projectSlug: gh/organization/another-project)
[!NOTE] O
projectSlug(não o nome do projeto) é necessário para muitas outras ferramentas do CircleCI.
rerun_workflow
Reexecuta um workflow desde o início ou a partir do job com falha.
Retorna o ID do workflow recém-criado e um link para monitorá-lo.
run_pipeline
Dispara a execução de um pipeline. Esta ferramenta pode ser usada de três maneiras:
-
Usando Project Slug e Branch (Recomendado):
- Exemplo: "Execute o pipeline para my-project no branch main"
-
Usando URL do CircleCI:
- URL do Pipeline, URL do Workflow, URL do Job ou URL do Projeto com branch
- Exemplo: "Execute o pipeline para https://app.circleci.com/pipelines/github/org/repo/123"
-
Usando Contexto do Projeto Local:
- Funciona a partir do seu workspace local, fornecendo a raiz do workspace, URL remota do git e nome do branch
A ferramenta retorna um link para monitorar a execução do pipeline.
run_rollback_pipeline
Dispara um rollback para um projeto do CircleCI. A ferramenta guia você interativamente por:
- Seleção de Projeto — lista projetos seguidos para você escolher
- Seleção de Ambiente — lista ambientes disponíveis (seleção automática se houver apenas um)
- Seleção de Componente — lista componentes disponíveis (seleção automática se houver apenas um)
- Seleção de Versão — exibe versões disponíveis; você seleciona o alvo para o rollback
- Detecção de Modo de Rollback — verifica se um pipeline de rollback está configurado
- Executar Rollback — duas opções:
- Rollback de Pipeline: dispara o pipeline de rollback
- Reexecução de Workflow: reexecuta um workflow anterior usando seu ID de workflow
- Confirmação — resume e confirma antes da execução
Solução de Problemas
Correções Rápidas
Problemas mais comuns:
-
Limpar caches de pacotes:
npx clear-npx-cache npm cache clean --force -
Forçar versão mais recente: Adicione
@latestà sua configuração:"args": ["-y", "@circleci/mcp-server-circleci@latest"] -
Reinicie seu IDE completamente (não apenas recarregue a janela)
Problemas de Autenticação
- Erros de token inválido: Verifique seu
CIRCLECI_TOKENem Tokens de API Pessoais - Erros de permissão: Garanta que o token tenha acesso de leitura aos seus projetos
- Variáveis de ambiente não carregando: Teste com
echo $CIRCLECI_TOKEN(Mac/Linux) ouecho %CIRCLECI_TOKEN%(Windows)
Problemas de Conexão e Rede
- URL Base: Confirme que
CIRCLECI_BASE_URLéhttps://circleci.com - Redes corporativas: Configure as configurações de proxy do npm se estiver atrás de um firewall
- Bloqueio de firewall: Verifique se o software de segurança bloqueia downloads de pacotes
Requisitos do Sistema
- Versão do Node.js: Garanta >= 18.0.0 com
node --version - Atualize o Node.js: Considere a LTS mais recente se estiver enfrentando problemas de compatibilidade
- Gerenciador de pacotes: Verifique se npm/pnpm está funcionando:
npm --version
Problemas Específicos do IDE
- Localização do arquivo de configuração: Verifique novamente o caminho para o seu SO
- Erros de sintaxe: Valide a sintaxe JSON no seu arquivo de configuração
- Logs do console: Verifique o console do desenvolvedor do IDE para erros específicos
- Tente um IDE diferente: Teste em outro editor suportado para isolar o problema
Problemas de Processo
Processos travados — mate os processos MCP existentes:
# Mac/Linux:
pkill -f "mcp-server-circleci"
# Windows:
taskkill /f /im node.exe
Conflitos de porta: Reinicie seu IDE se a conexão parecer bloqueada.
Depuração Avançada
- Teste o pacote diretamente:
npx @circleci/mcp-server-circleci@latest --help - Log detalhado:
DEBUG=* npx @circleci/mcp-server-circleci@latest - Fallback do Docker: Tente a instalação via Docker se o npx falhar consistentemente
Ainda precisa de ajuda?
- Verifique Problemas no GitHub para problemas semelhantes
- Inclua seu SO, versão do Node e IDE ao relatar problemas
- Compartilhe mensagens de erro relevantes do console do IDE
Telemetria
O servidor suporta métricas OpenTelemetry para rastrear o uso de ferramentas. As métricas são exportadas a menos que você defina DISABLE_TELEMETRY=true. Em implantações remotas, as métricas usam o mesmo token da solicitação (PAT por usuário ou PAT compartilhado do servidor).
| Métrica | Descrição |
|---|---|
circleci.mcp.tool.invocations | Contagem de invocações de ferramenta |
circleci.mcp.tool.duration_ms | Tempo de execução em ms |
circleci.mcp.tool.errors | Contagem de erros |
Desenvolvimento
Primeiros Passos
-
Clone o repositório:
git clone https://github.com/CircleCI-Public/mcp-server-circleci.git cd mcp-server-circleci -
Instale as dependências:
pnpm install -
Compile o projeto:
pnpm build
Construindo o Contêiner Docker
Você pode construir o contêiner Docker localmente usando:
docker build -t circleci:mcp-server-circleci .
Isso criará uma imagem Docker marcada como circleci:mcp-server-circleci que você pode usar com qualquer cliente MCP.
Modo stdio local (desenvolvedor único, token no cliente):
docker run --rm -i \
-e CIRCLECI_TOKEN=your-circleci-token \
-e CIRCLECI_BASE_URL=https://circleci.com \
circleci/mcp-server-circleci
Modo remoto (servidor centralizado para uma equipe): veja Servidor MCP Remoto Autogerenciado.
Desenvolvimento com o MCP Inspector
A maneira mais fácil de iterar no servidor MCP é usando o inspetor MCP. Você pode aprender mais sobre o inspetor MCP em https://modelcontextprotocol.io/docs/tools/inspector
-
Inicie o servidor de desenvolvimento:
pnpm watch # Keep this running in one terminal -
Em um terminal separado, inicie o inspetor:
pnpm inspector -
Configure o ambiente:
- Adicione seu
CIRCLECI_TOKENà seção Variáveis de Ambiente na interface do inspetor - O token precisa de acesso de leitura aos seus projetos do CircleCI
- Opcionalmente, defina sua URL Base do CircleCI (padrão é
https://circleci.com)
- Adicione seu
Testes
-
Execute a suíte de testes:
pnpm test -
Execute os testes em modo de observação durante o desenvolvimento:
pnpm test:watch
Para diretrizes de contribuição mais detalhadas, consulte CONTRIBUTING.md