MCP Server for Spinnaker — manage applications, pipelines, and deployments via the Model Context Protocol
Spinnaker-MCP
A bridge that exposes any Spinnaker instance as an MCP v1 server via the Gate API, written in Go.
What you get
| Category | Tool | Description |
|----------|------|-------------|
| Applications | list_applications | List all Spinnaker applications |
| | get_application | Get detailed application info (accounts, clusters, attributes) |
| Pipelines | list_pipelines | List pipeline configurations for an application |
| | get_pipeline | Get a specific pipeline's full configuration |
| | trigger_pipeline | Trigger a pipeline with optional parameters |
| | save_pipeline | Save/create a pipeline definition |
| | update_pipeline | Update an existing pipeline definition |
| | delete_pipeline | Delete a pipeline definition |
| | get_pipeline_history | Get revision history for a pipeline config |
| Executions | list_executions | List recent executions, filterable by status |
| | get_execution | Get full execution details (stages, outputs, timing) |
| | search_executions | Rich search by trigger type, time range, status |
| | cancel_execution | Cancel a running execution with optional reason |
| | pause_execution | Pause a running execution at the current stage |
| | resume_execution | Resume a paused execution |
| | restart_stage | Restart a failed stage within an execution |
| | evaluate_expression | Evaluate a SpEL expression against an execution |
| Strategies | list_strategies | List deployment strategy configurations |
| | save_strategy | Create or update a deployment strategy |
| | delete_strategy | Delete a deployment strategy |
| Infrastructure | list_server_groups | List server groups (deployment targets) with instance counts |
| | list_load_balancers | List load balancers across all accounts and regions |
| | list_clusters | List cluster names grouped by account |
| | get_cluster | Get cluster details including server groups |
| | get_scaling_activities | Get scaling activities for a cluster |
| | get_target_server_group | Target-based server group lookup (newest, oldest, etc.) |
| | list_firewalls | List all firewalls/security groups across accounts |
| | get_firewall | Get firewall details by account, region, and name |
| | get_instance | Get instance details (health, metadata, launch time) |
| | get_console_output | Get instance console output for debugging |
| | find_images | Search for machine images by tags, region, account |
| | get_image_tags | List image tags for a repository |
| | list_networks | List VPCs/networks by cloud provider |
| | list_subnets | List subnets by cloud provider |
| | list_accounts | List all configured cloud accounts/credentials |
| | get_account | Get account details and permissions |
| Tasks | get_task | Get orchestration task status (deploy, resize, rollback) |
Everything is exposed over JSON-RPC. LLMs and agents can: initialize -> listTools -> callTool and interact with your Spinnaker deployments.
Quick-start
npm (stdio transport)
npx spinnaker-mcp
Or install globally:
npm install -g spinnaker-mcp
spinnaker-mcp
This downloads the pre-built Go binary for your platform and runs it with stdio transport.
Docker
docker run --rm -e GATE_URL=http://spin-gate:8084 -e TRANSPORT=stdio drumsergio/spinnaker-mcp:0.3.0
Local build
git clone https://github.com/GeiserX/spinnaker-mcp
cd spinnaker-mcp
cp .env.example .env && $EDITOR .env
go run ./cmd/server
Configuration
| Variable | Default | Description |
|----------|---------|-------------|
| GATE_URL | http://localhost:8084 | Spinnaker Gate API endpoint (without trailing /) |
| GATE_TOKEN | (empty) | Bearer token for authentication |
| GATE_USER | (empty) | Basic auth username (alternative to token) |
| GATE_PASS | (empty) | Basic auth password |
| GATE_CERT_FILE | (empty) | Path to x509 client certificate (PEM) |
| GATE_KEY_FILE | (empty) | Path to x509 client key (PEM) |
| GATE_INSECURE | false | Skip TLS certificate verification |
| TRANSPORT | (empty = HTTP) | Set to stdio for stdio transport |
| MCP_PORT | 8085 | HTTP transport port (ignored when TRANSPORT=stdio) |
| MCP_BIND_ADDR | 127.0.0.1 | HTTP transport bind address (set to 0.0.0.0 to listen on all interfaces) |
Authentication priority: Bearer token > Basic auth > x509 client cert > No auth.
Put them in a .env file (from .env.example) or set them in the environment.
Claude Code / Claude Desktop configuration
{
"mcpServers": {
"spinnaker": {
"command": "npx",
"args": ["-y", "spinnaker-mcp"],
"env": {
"GATE_URL": "https://spin-gate.example.com",
"GATE_TOKEN": "your-token-here"
}
}
}
}
Testing
go test -v -race ./...
Tested with Inspector. Before making a PR, make sure this MCP server behaves well via that tool.
Credits
Spinnaker -- open-source continuous delivery platform
MCP-GO -- Go MCP implementation
GoReleaser -- painless multi-arch releases
Maintainers
Contributing
Feel free to dive in! Open an issue or submit PRs.
Spinnaker-MCP follows the Contributor Covenant Code of Conduct.
Other MCP Servers by GeiserX
- genieacs-mcp -- TR-069 device management
- cashpilot-mcp -- Passive income monitoring
- duplicacy-mcp -- Backup health monitoring
- lynxprompt-mcp -- AI configuration blueprints
- pumperly-mcp -- Fuel and EV charging prices
- telegram-archive-mcp -- Telegram message archive