spinnaker-mcp

Servidor MCP que expõe a plataforma Spinnaker CD via API Gate para gerenciamento de pipelines e deploys

Documentação

Spinnaker MCP banner

Spinnaker-MCP

npm CI Coverage Go Docker Pulls GitHub Stars License

Official MCP Registry Glama MCP Server MCPServers.org mcp.so ToolSDK Registry listed on awesome-mcp-servers mcpindex

Uma ponte que expõe qualquer instância do Spinnaker como um servidor MCP v1 através da API Gate, escrita em Go.


O que você obtém

CategoriaFerramentaDescrição
Aplicaçõeslist_applicationsListar todas as aplicações do Spinnaker
get_applicationObter informações detalhadas da aplicação (contas, clusters, atributos)
Pipelineslist_pipelinesListar configurações de pipeline para uma aplicação
get_pipelineObter a configuração completa de um pipeline específico
trigger_pipelineDisparar um pipeline com parâmetros opcionais
save_pipelineSalvar/criar uma definição de pipeline
update_pipelineAtualizar uma definição de pipeline existente
delete_pipelineExcluir uma definição de pipeline
get_pipeline_historyObter histórico de revisões de uma configuração de pipeline
Execuçõeslist_executionsListar execuções recentes, filtráveis por status
get_executionObter detalhes completos da execução (estágios, saídas, tempos)
search_executionsBusca avançada por tipo de gatilho, intervalo de tempo, status
cancel_executionCancelar uma execução em andamento com motivo opcional
pause_executionPausar uma execução em andamento no estágio atual
resume_executionRetomar uma execução pausada
restart_stageReiniciar um estágio com falha dentro de uma execução
evaluate_expressionAvaliar uma expressão SpEL em relação a uma execução
Estratégiaslist_strategiesListar configurações de estratégia de implantação
save_strategyCriar ou atualizar uma estratégia de implantação
delete_strategyExcluir uma estratégia de implantação
Infraestruturalist_server_groupsListar grupos de servidores (alvos de implantação) com contagens de instâncias
list_load_balancersListar balanceadores de carga em todas as contas e regiões
list_clustersListar nomes de clusters agrupados por conta
get_clusterObter detalhes do cluster, incluindo grupos de servidores
get_scaling_activitiesObter atividades de escalonamento de um cluster
get_target_server_groupConsulta de grupo de servidores baseada em alvo (mais novo, mais antigo, etc.)
list_firewallsListar todos os firewalls/grupos de segurança entre contas
get_firewallObter detalhes do firewall por conta, região e nome
get_instanceObter detalhes da instância (saúde, metadados, tempo de inicialização)
get_console_outputObter saída do console da instância para depuração
find_imagesPesquisar imagens de máquina por tags, região, conta
get_image_tagsListar tags de imagem para um repositório
list_networksListar VPCs/redes por provedor de nuvem
list_subnetsListar sub-redes por provedor de nuvem
list_accountsListar todas as contas/credenciais de nuvem configuradas
get_accountObter detalhes e permissões da conta
Tarefasget_taskObter status de tarefa de orquestração (implantar, redimensionar, reverter)

Tudo é exposto via JSON-RPC. LLMs e agentes podem: initialize -> listTools -> callTool e interagir com suas implantações do Spinnaker.


Início rápido

npm (transporte stdio)

npx spinnaker-mcp

Ou instale globalmente:

npm install -g spinnaker-mcp
spinnaker-mcp

Isso baixa o binário Go pré-compilado para sua plataforma e o executa com transporte stdio.

Docker

docker run --rm -e GATE_URL=http://spin-gate:8084 -e TRANSPORT=stdio drumsergio/spinnaker-mcp:0.3.1

Build local

git clone https://github.com/GeiserX/spinnaker-mcp
cd spinnaker-mcp

cp .env.example .env && $EDITOR .env

go run ./cmd/server

Configuração

VariávelPadrãoDescrição
GATE_URLhttp://localhost:8084Endpoint da API Gate do Spinnaker (sem barra final)
GATE_TOKEN(vazio)Token Bearer para autenticação
GATE_USER(vazio)Nome de usuário de autenticação básica (alternativa ao token)
GATE_PASS(vazio)Senha de autenticação básica
GATE_CERT_FILE(vazio)Caminho para certificado de cliente x509 (PEM)
GATE_KEY_FILE(vazio)Caminho para chave de cliente x509 (PEM)
GATE_INSECUREfalseIgnorar verificação de certificado TLS
TRANSPORT(vazio = HTTP)Defina como stdio para transporte stdio
MCP_PORT8085Porta do transporte HTTP (ignorada quando TRANSPORT=stdio)
MCP_BIND_ADDR127.0.0.1Endereço de bind do transporte HTTP (defina como 0.0.0.0 para ouvir em todas as interfaces)

Prioridade de autenticação: Token Bearer > Autenticação básica > Certificado de cliente x509 > Sem autenticação.

Coloque-os em um arquivo .env (de .env.example) ou defina-os no ambiente.

Configuração do Claude Code / Claude Desktop

{
  "mcpServers": {
    "spinnaker": {
      "command": "npx",
      "args": ["-y", "spinnaker-mcp"],
      "env": {
        "GATE_URL": "https://spin-gate.example.com",
        "GATE_TOKEN": "your-token-here"
      }
    }
  }
}

Testes

go test -v -race ./...

Testado com Inspector. Antes de fazer um PR, certifique-se de que este servidor MCP se comporta bem através dessa ferramenta.

Créditos

Spinnaker -- plataforma de entrega contínua de código aberto

MCP-GO -- implementação Go do MCP

GoReleaser -- lançamentos multi-arquitetura sem dor

Mantenedores

@GeiserX.

Contribuindo

Sinta-se à vontade para mergulhar! Abra uma issue ou envie PRs.

Spinnaker-MCP segue o Código de Conduta do Contributor Covenant.

Outros servidores MCP por GeiserX