- komodo_list, komodo_get, komodo_create, komodo_update, komodo_delete, komodo_execute, komodo_logs with resource_type routing - JWT auth with token caching and auto-refresh on 401 - HTTP/SSE transport on port 9800 - TypeScript, @modelcontextprotocol/sdk, zod schemas - README.md with setup instructions - references/api.md with full endpoint mapping
205 lines
6.3 KiB
Markdown
205 lines
6.3 KiB
Markdown
# Komodo MCP Server
|
|
|
|
MCP server for the [Komodo](https://komo.do) build/deploy platform. Exposes 7 tools that map to Komodo's full RPC API surface — list, get, create, update, delete, execute, and logs — via the Model Context Protocol.
|
|
|
|
## Setup
|
|
|
|
### Prerequisites
|
|
|
|
- Node.js 22+
|
|
- A running Komodo instance with API access
|
|
|
|
### Environment Variables
|
|
|
|
| Variable | Required | Default | Description |
|
|
|----------|----------|---------|-------------|
|
|
| `KOMODO_BASE_URL` | Yes | `http://10.10.2.114:9120` | Base URL of your Komodo instance |
|
|
| `KOMODO_USERNAME` | Yes | — | Komodo login username |
|
|
| `KOMODO_PASSWORD` | Yes | — | Komodo login password |
|
|
| `PORT` | No | `9800` | Port for the HTTP/SSE transport |
|
|
|
|
`KOMODO_URL` is accepted as a legacy alias for `KOMODO_BASE_URL`.
|
|
|
|
### Install & Build
|
|
|
|
```bash
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
### Run
|
|
|
|
```bash
|
|
npm start
|
|
```
|
|
|
|
Or for development with live reload:
|
|
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
The server starts on `http://0.0.0.0:9800/mcp` with a health check at `/health`.
|
|
|
|
### MCP Client Configuration
|
|
|
|
Add to your MCP client config (e.g. `mcp.json` or equivalent):
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"komodo": {
|
|
"url": "http://localhost:9800/mcp"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Tools
|
|
|
|
### `komodo_list`
|
|
|
|
List or search Komodo resources.
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `resource_type` | enum | Yes | Resource type (see below) |
|
|
| `search` | string | No | Search query — uses Search* endpoint instead of List* |
|
|
| `project` | string | No | Filter by project name or ID |
|
|
|
|
Returns a JSON array of matching resources.
|
|
|
|
### `komodo_get`
|
|
|
|
Get a single resource by ID or name.
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `resource_type` | enum | Yes | Resource type |
|
|
| `id` | string | Yes | Resource ID or name |
|
|
|
|
### `komodo_create`
|
|
|
|
Create a new resource.
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `resource_type` | enum | Yes | Resource type |
|
|
| `params` | object | No | Fields for the corresponding Create* endpoint |
|
|
|
|
Available for: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, tag.
|
|
|
|
### `komodo_update`
|
|
|
|
Update an existing resource by ID.
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `resource_type` | enum | Yes | Resource type |
|
|
| `id` | string | Yes | Resource ID or name |
|
|
| `params` | object | No | Fields to update |
|
|
|
|
### `komodo_delete`
|
|
|
|
Delete a resource by ID or name.
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `resource_type` | enum | Yes | Resource type |
|
|
| `id` | string | Yes | Resource ID or name |
|
|
|
|
Available for: stack, build, server, procedure, deployment, alerter, sync_resource, tag.
|
|
|
|
### `komodo_execute`
|
|
|
|
Execute a Komodo operation (build, deploy, procedure run, server actions, etc.).
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `operation` | enum | Yes | Operation to run (see below) |
|
|
| `id` | string | No | Resource ID or name |
|
|
| `params` | object | No | Additional operation parameters |
|
|
|
|
**Operations:**
|
|
|
|
| Operation | Description |
|
|
|-----------|-------------|
|
|
| `run_build` | Trigger a build |
|
|
| `deploy_stack` | Deploy a stack |
|
|
| `deploy_stack_service` | Deploy a single stack service |
|
|
| `run_procedure` | Run a procedure |
|
|
| `run_procedure_stage` | Run a specific procedure stage |
|
|
| `run_deployment_action` | Run a deployment action |
|
|
| `run_deployment_sync` | Sync a deployment |
|
|
| `run_resource_sync` | Run a resource sync |
|
|
| `run_stack_refresh_cache` | Refresh stack cache |
|
|
| `run_stack_refresh_content` | Refresh stack content |
|
|
| `run_stack_pull` | Pull stack (git pull) |
|
|
| `run_stack_pull_deployment` | Pull and deploy stack |
|
|
| `run_stack_stop` | Stop a stack |
|
|
| `run_stack_restart` | Restart a stack |
|
|
| `run_stack_pause` | Pause a stack |
|
|
| `run_stack_unpause` | Unpause a stack |
|
|
| `run_stack_remove_orphan_containers` | Remove orphan containers |
|
|
| `run_stack_toggle_service_dependencies` | Toggle service dependencies |
|
|
| `run_stack_auto_update` | Trigger auto-update |
|
|
| `run_stack_commit` | Commit stack changes |
|
|
| `run_server_refresh` | Refresh server state |
|
|
| `run_server_refresh_containers` | Refresh server containers |
|
|
| `run_server_update_periphery` | Update periphery |
|
|
| `run_server_prune_images` | Prune server images |
|
|
| `run_server_prune_containers` | Prune server containers |
|
|
| `run_server_prune_networks` | Prune server networks |
|
|
| `run_server_stats` | Get server stats |
|
|
| `run_server_run_command` | Run a command on server |
|
|
| `run_server_scripts` | Run server scripts |
|
|
| `run_server_copy` | Copy between servers |
|
|
| `run_server_move` | Move between servers |
|
|
| `run_deployment_execute` | Execute a deployment |
|
|
| `run_deployment_redeploy` | Redeploy a deployment |
|
|
| `run_deployment_destroy` | Destroy a deployment |
|
|
| `run_deployment_stop` | Stop a deployment |
|
|
| `run_deployment_logs` | Get deployment logs via execute |
|
|
| `run_sync_deployment` | Sync a deployment |
|
|
| `get_mcp_token` | Get an MCP token |
|
|
|
|
### `komodo_logs`
|
|
|
|
Get logs for a deployment or stack.
|
|
|
|
| Parameter | Type | Required | Description |
|
|
|-----------|------|----------|-------------|
|
|
| `resource_type` | enum | Yes | `deployment` or `stack` |
|
|
| `id` | string | Yes | Resource ID or name |
|
|
| `tail` | number | No | Number of recent log lines |
|
|
|
|
## Resource Types
|
|
|
|
All tools that accept `resource_type` support these values:
|
|
|
|
| Value | Komodo Resource |
|
|
|-------|----------------|
|
|
| `stack` | Docker Compose stacks |
|
|
| `build` | Build configurations |
|
|
| `server` | Managed servers |
|
|
| `procedure` | Automation procedures |
|
|
| `deployment` | Deployments |
|
|
| `alerter` | Alert configurations |
|
|
| `image_registry_account` | Container registry accounts |
|
|
| `sync_resource` | Sync resources |
|
|
| `user` | Users |
|
|
| `tag` | Tags |
|
|
| `execution` | Execution history |
|
|
| `access_request` | Access requests |
|
|
|
|
## Architecture
|
|
|
|
- **Transport:** HTTP/SSE via `StreamableHTTPServerTransport` (MCP protocol)
|
|
- **Auth:** JWT login via `POST /auth/login`, token cached in memory, auto-refreshed on 401
|
|
- **API:** Komodo RPC-style — all calls are `POST /{read|write|execute}/{RequestName}`
|
|
- **No REST paths:** The server does not use REST-style paths (`/servers`, `/api/servers`) which serve SPA HTML
|
|
|
|
## License
|
|
|
|
Private — BuzzbeeSCD
|