fix: align all API mappings with live Core v2.3.3, close #4-#11

- Remove 72 phantom endpoints from types.ts (non-existent in live API)
- Fix 11 naming drifts (ListSyncResources→ListResourceSyncs, RunStackPull→PullStack, etc.)
- Add missing execute ops: pull_stack, deploy_stack_service (RunStackService), run_sync
- Remove phantom resource types: execution, access_request, terminal, alert
- Add komodo_copy tool (11 resource types) and komodo_rename tool (12 types)
- Add 14 new list_detail types (swarm_*, config, extra_args, etc.)
- Fix komodo-client.ts: fallback to KOMODO_INIT_ADMIN_USERNAME/PASSWORD env vars
- Rewrite references/api.md to match actual OpenAPI v2.3.3 spec
- Remove terminal from test script RESOURCE_DEFS (no longer valid resource type)
This commit is contained in:
2026-09-08 11:01:51 +00:00
parent 86e874ed6a
commit e5f1200577
11 changed files with 402 additions and 330 deletions
+129 -139
View File
@@ -1,12 +1,12 @@
# Komodo API — Endpoint-to-Tool Mapping (v2.0)
# Komodo API — Endpoint-to-Tool Mapping (v2.1)
Full reference of Komodo RPC endpoints and which MCP tool handles them.
Full reference of Komodo RPC endpoints (OpenAPI v2.3.3) and which MCP tool handles them.
## Auth
| Endpoint | Method | Description |
|----------|--------|-------------|
| `POST /auth/login` | — | JWT login (handled internally by komodo-client.ts) |
| `POST /auth/login/LoginLocalUser` | — | JWT login (handled internally by komodo-client.ts) |
| API Key headers | — | `X-Api-Key` + `X-Api-Secret` (preferred, set via env vars) |
---
@@ -24,48 +24,17 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
| `read/ListDeployments` | deployment |
| `read/ListAlerters` | alerter |
| `read/ListImageRegistryAccounts` | image_registry_account |
| `read/ListSyncResources` | sync_resource |
| `read/ListResourceSyncs` | sync_resource |
| `read/ListUsers` | user |
| `read/ListTags` | tag |
| `read/ListExecutions` | execution |
| `read/ListAccessRequests` | access_request |
| `read/ListActions` | action |
| `read/ListRepos` | repo |
| `read/ListBuilders` | builder |
| `read/ListSwarms` | swarm |
| `read/ListVariables` | variable |
| `read/ListUserGroups` | user_group |
| `read/ListAlerts` | alert |
| `read/ListTerminals` | terminal |
| `read/ListGitProviderAccounts` | git_provider_account |
### Search Endpoints (via `search` param)
| Komodo RPC | Resource Type |
|------------|---------------|
| `read/SearchStacks` | stack |
| `read/SearchBuilds` | build |
| `read/SearchServers` | server |
| `read/SearchProcedures` | procedure |
| `read/SearchDeployments` | deployment |
| `read/SearchAlerters` | alerter |
| `read/SearchImageRegistryAccounts` | image_registry_account |
| `read/SearchSyncResources` | sync_resource |
### Other Read → `komodo_list`
| Komodo RPC | Notes |
|------------|-------|
| `read/ListStackServices` | List stack services |
| `read/GetStackServices` | List stack services |
| `read/GetGlobalStats` | Global statistics |
| `read/GetResourceStats` | Resource statistics |
| `read/ListTagMappings` | Tag mappings |
| `read/ListBinding` | Bindings |
| `read/ListResources` | All resources |
| `read/ListResourceSyncContents` | Sync contents |
| `read/ListServerStats` | Server statistics |
---
## `komodo_get` — Get Single Resource
@@ -79,24 +48,15 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
| `read/GetDeployment` | deployment |
| `read/GetAlerter` | alerter |
| `read/GetImageRegistryAccount` | image_registry_account |
| `read/GetSyncResource` | sync_resource |
| `read/GetUser` | user |
| `read/GetResourceSync` | sync_resource |
| `read/GetTag` | tag |
| `read/GetAccessRequest` | access_request |
| `read/GetAction` | action |
| `read/GetRepo` | repo |
| `read/GetBuilder` | builder |
| `read/GetSwarm` | swarm |
| `read/GetVariable` | variable |
| `read/GetUserGroup` | user_group |
| `read/GetAlert` | alert |
| `read/GetGitProviderAccount` | git_provider_account |
| `read/GetBuildAggregatedStatus` | Build aggregated status |
| `read/GetConcurrencyLimitUsage` | Concurrency limits |
| `read/GetResourceSyncDifferences` | Sync differences |
| `read/GetResource` | Single resource |
| `read/GetBinding` | Single binding |
| `read/GetLicenseInfo` | License info |
---
@@ -119,9 +79,7 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
| `write/CreateSwarm` | swarm |
| `write/CreateVariable` | variable |
| `write/CreateUserGroup` | user_group |
| `write/CreateTerminal` | terminal |
| `write/CreateGitProviderAccount` | git_provider_account |
| `write/CreateTagMapping` | Tag mapping |
---
@@ -137,7 +95,6 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
| `write/UpdateAlerter` | alerter |
| `write/UpdateImageRegistryAccount` | image_registry_account |
| `write/UpdateResourceSync` | sync_resource |
| `write/UpdateUser` | user |
| `write/UpdateTagColor` | tag |
| `write/UpdateAction` | action |
| `write/UpdateRepo` | repo |
@@ -147,50 +104,6 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
| `write/UpdateUserGroup` | user_group |
| `write/UpdateGitProviderAccount` | git_provider_account |
### Other Write → `komodo_update`
| Komodo RPC | Notes |
|------------|-------|
| `write/UpdateStackServiceNames` | Stack service names |
| `write/UpdateServerTemplate` | Server template |
| `write/UpdateServerTemplateInstances` | Server template instances |
| `write/BindStack` | Bind stack |
| `write/BindServer` | Bind server |
| `write/UpdateBinding` | Update binding |
| `write/UpdateAllBindings` | Update all bindings |
| `write/MarkResourceSyncDeployed` | Mark sync deployed |
| `write/UpdateUserPermissions` | User permissions |
| `write/UpdateConcurrencyLimit` | Concurrency limits |
| `write/AcknowledgeAccessRequest` | Access request |
| `write/UpdateTagMapping` | Tag mapping |
| `write/UpdateProcedureSchedule` | Procedure schedule |
| `write/UpdateUserAdmin` | User admin status |
| `write/UpdateUserBasePermissions` | User base permissions |
| `write/UpdateServiceUserDescription` | Service user desc |
| `write/UpdateOnboardingKey` | Onboarding key |
| `write/UpdatePermissionOnResourceType` | Permission on type |
| `write/UpdatePermissionOnTarget` | Permission on target |
| `write/UpdateResourceMeta` | Resource metadata |
| `write/RefreshStackCache` | Refresh stack cache |
| `write/RefreshBuildCache` | Refresh build cache |
| `write/RefreshRepoCache` | Refresh repo cache |
| `write/RefreshResourceSyncPending` | Refresh sync pending |
| `write/CommitSync` | Commit sync |
| `write/RotateServerKeys` | Rotate server keys |
| `write/WriteBuildFileContents` | Write build file |
| `write/WriteStackFileContents` | Write stack file |
| `write/WriteSyncFileContents` | Write sync file |
| `write/CheckDeploymentForUpdate` | Check deployment update |
| `write/CheckStackForUpdate` | Check stack update |
| `write/SetEveryoneUserGroup` | Set everyone group |
| `write/SetUsersInUserGroup` | Set users in group |
| `write/SetLastSeenUpdate` | Set last seen |
| `write/PushRecentlyViewed` | Push recently viewed |
| `write/UpdateVariableDescription` | Variable description |
| `write/UpdateVariableIsSecret` | Variable secret flag |
| `write/UpdateTagColor` | Tag color |
| `write/UpdateServerPublicKey` | Server public key |
---
## `komodo_delete` — Delete Resource
@@ -203,7 +116,7 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
| `write/DeleteProcedure` | procedure |
| `write/DeleteDeployment` | deployment |
| `write/DeleteAlerter` | alerter |
| `write/DeleteSyncResource` | sync_resource |
| `write/DeleteResourceSync` | sync_resource |
| `write/DeleteTag` | tag |
| `write/DeleteAction` | action |
| `write/DeleteRepo` | repo |
@@ -211,20 +124,8 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
| `write/DeleteSwarm` | swarm |
| `write/DeleteVariable` | variable |
| `write/DeleteUserGroup` | user_group |
| `write/DeleteTerminal` | terminal |
| `write/DeleteGitProviderAccount` | git_provider_account |
### Other Delete → `komodo_delete`
| Komodo RPC | Notes |
|------------|-------|
| `write/DeleteAllTerminals` | Delete all terminals |
| `write/DeleteApiKeyForServiceUser` | Delete API key |
| `write/DeleteImageRegistryAccount` | Delete registry account |
| `write/DeleteOnboardingKey` | Delete onboarding key |
| `write/DeleteUser` | Delete user |
| `write/DeleteTagMapping` | Delete tag mapping |
---
## `komodo_execute` — Execute Operations
@@ -234,19 +135,14 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
|-----------|------------|
| `run_build` | `execute/RunBuild` |
| `deploy_stack` | `execute/DeployStack` |
| `deploy_stack_service` | `execute/DeployStackService` |
| `deploy_stack_service` | `execute/RunStackService` |
| `deploy` | `execute/Deploy` |
| `deploy_stack_if_changed` | `execute/DeployStackIfChanged` |
| `destroy_stack` | `execute/DestroyStack` |
| `destroy_container` | `execute/DestroyContainer` |
| `destroy_deployment` | `execute/DestroyDeployment` |
| `run_deployment_execute` | `execute/Deploy` |
| `run_deployment_redeploy` | `execute/Deploy` |
| `run_deployment_destroy` | `execute/DestroyDeployment` |
| `run_deployment_stop` | `execute/StopDeployment` |
| `run_deployment_logs` | `execute/RunDeploymentLogs` |
| `run_deployment_action` | `execute/RunDeploymentAction` |
| `run_deployment_sync` | `execute/RunDeploymentSync` |
| `pull_stack` | `execute/PullStack` |
| `pull_deployment` | `execute/PullDeployment` |
### Repo Operations
| Operation | Komodo RPC |
@@ -254,7 +150,6 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
| `build_repo` | `execute/BuildRepo` |
| `clone_repo` | `execute/CloneRepo` |
| `pull_repo` | `execute/PullRepo` |
| `pull_deployment` | `execute/PullDeployment` |
| `cancel_repo_build` | `execute/CancelRepoBuild` |
| `clear_repo_cache` | `execute/ClearRepoCache` |
@@ -262,34 +157,20 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
| Operation | Komodo RPC |
|-----------|------------|
| `run_procedure` | `execute/RunProcedure` |
| `run_procedure_stage` | `execute/RunProcedureStage` |
| `run_action` | `execute/RunAction` |
| `run_sync` | `execute/RunSync` |
| `cancel_action` | `execute/CancelAction` |
| `cancel_build` | `execute/CancelBuild` |
| `cancel_procedure` | `execute/CancelProcedure` |
### Stack Operations
### Stack Lifecycle
| Operation | Komodo RPC |
|-----------|------------|
| `run_stack_refresh_cache` | `execute/RunStackRefreshCache` |
| `run_stack_refresh_content` | `execute/RunStackRefreshContent` |
| `run_stack_pull` | `execute/RunStackPull` |
| `run_stack_pull_deployment` | `execute/RunStackPullDeployment` |
| `run_stack_stop` | `execute/StopStack` |
| `run_stack_restart` | `execute/RestartStack` |
| `run_stack_pause` | `execute/PauseStack` |
| `run_stack_unpause` | `execute/UnpauseStack` |
| `run_stack_remove_orphan_containers` | `execute/RunStackRemoveOrphanContainers` |
| `run_stack_toggle_service_dependencies` | `execute/RunStackToggleServiceDependencies` |
| `run_stack_auto_update` | `execute/RunStackAutoUpdate` |
| `run_stack_commit` | `execute/RunStackCommit` |
| `start_stack` | `execute/StartStack` |
| `stop_stack` | `execute/StopStack` |
| `restart_stack` | `execute/RestartStack` |
| `pause_stack` | `execute/PauseStack` |
| `unpause_stack` | `execute/UnpauseStack` |
| `run_resource_sync` | `execute/RunResourceSync` |
| `run_sync_deployment` | `execute/RunSyncDeployment` |
### Container Lifecycle
| Operation | Komodo RPC |
@@ -317,13 +198,10 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
### Server Operations
| Operation | Komodo RPC |
|-----------|------------|
| `run_server_refresh` | `execute/RunServerRefresh` |
| `run_server_refresh_containers` | `execute/RunServerRefreshContainers` |
| `run_server_update_periphery` | `execute/RunServerUpdatePeriphery` |
| `run_server_prune_images` | `execute/PruneImages` |
| `run_server_prune_containers` | `execute/PruneContainers` |
| `run_server_prune_networks` | `execute/PruneNetworks` |
| `run_server_stats` | `execute/RunServerStats` |
| `run_server_run_command` | `execute/RunServerRunCommand` |
| `run_server_scripts` | `execute/RunServerScripts` |
| `run_server_copy` | `execute/RunServerCopy` |
@@ -374,16 +252,11 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
### Admin & Misc
| Operation | Komodo RPC |
|-----------|------------|
| `run_server_refresh` | `execute/RunServerRefresh` |
| `run_server_refresh_containers` | `execute/RunServerRefreshContainers` |
| `run_server_update_periphery` | `execute/RunServerUpdatePeriphery` |
| `global_auto_update` | `execute/GlobalAutoUpdate` |
| `backup_core_database` | `execute/BackupCoreDatabase` |
| `rotate_core_keys` | `execute/RotateCoreKeys` |
| `global_auto_update` | `execute/GlobalAutoUpdate` |
| `send_alert` | `execute/SendAlert` |
| `test_alerter` | `execute/TestAlerter` |
| `sleep` | `execute/Sleep` |
| `get_mcp_token` | `execute/GetMcpToken` |
---
@@ -481,3 +354,120 @@ Full reference of Komodo RPC endpoints and which MCP tool handles them.
| full_actions | `read/ListFullActions` |
| full_alerters | `read/ListFullAlerters` |
| full_resource_syncs | `read/ListFullResourceSyncs` |
| swarm_configs | `read/ListSwarmConfigs` |
| swarm_networks | `read/ListSwarmNetworks` |
| swarm_nodes | `read/ListSwarmNodes` |
| swarm_secrets | `read/ListSwarmSecrets` |
| swarm_services | `read/ListSwarmServices` |
| swarm_stacks | `read/ListSwarmStacks` |
| swarm_tasks | `read/ListSwarmTasks` |
| git_providers_from_config | `read/ListGitProvidersFromConfig` |
| image_registries_from_config | `read/ListImageRegistriesFromConfig` |
| common_build_extra_args | `read/ListCommonBuildExtraArgs` |
| common_deployment_extra_args | `read/ListCommonDeploymentExtraArgs` |
| common_stack_build_extra_args | `read/ListCommonStackBuildExtraArgs` |
| common_stack_extra_args | `read/ListCommonStackExtraArgs` |
| image_history | `read/ListImageHistory` |
| all_stack_services | `read/ListAllStackServices` |
---
## `komodo_copy` — Copy Resources
| Resource Type | Komodo RPC |
|---------------|------------|
| stack | `write/CopyStack` |
| build | `write/CopyBuild` |
| server | `write/CopyServer` |
| deployment | `write/CopyDeployment` |
| procedure | `write/CopyProcedure` |
| alerter | `write/CopyAlerter` |
| action | `write/CopyAction` |
| repo | `write/CopyRepo` |
| builder | `write/CopyBuilder` |
| swarm | `write/CopySwarm` |
| sync_resource | `write/CopyResourceSync` |
---
## `komodo_rename` — Rename Resources
| Resource Type | Komodo RPC |
|---------------|------------|
| stack | `write/RenameStack` |
| build | `write/RenameBuild` |
| server | `write/RenameServer` |
| deployment | `write/RenameDeployment` |
| procedure | `write/RenameProcedure` |
| alerter | `write/RenameAlerter` |
| action | `write/RenameAction` |
| repo | `write/RenameRepo` |
| builder | `write/RenameBuilder` |
| swarm | `write/RenameSwarm` |
| tag | `write/RenameTag` |
| user_group | `write/RenameUserGroup` |
---
## Other Notable Endpoints (not exposed as MCP tools)
These exist in the API but are not currently mapped to MCP tools. They can be added if needed.
### Auth (31 endpoints)
GitHub/Google/OIDC OAuth, passkey/TOTP 2FA, API key management, account management.
### Read — Additional
| Komodo RPC | Description |
|------------|-------------|
| `read/GetCoreInfo` | Core API configuration info |
| `read/GetVersion` | Core API version |
| `read/GetSystemInformation` | Server system information |
| `read/GetSystemStats` | Server system stats |
| `read/GetDeploymentStats` | Deployment container stats |
| `read/GetDeploymentContainer` | Deployment container info |
| `read/GetHistoricalServerStats` | Timeseries server stats |
| `read/GetBuildMonthlyStats` | Monthly build stats |
| `read/GetPermission` | User permission level on resource |
| `read/GetUsername` | Get username by ID |
| `read/GetResourceMatchingContainer` | Find resource for container |
| `read/GetUpdate` | Get update data |
| `read/FindUser` | Find user (admin) |
| `read/Get*ActionState` (9) | Action state for each resource type |
| `read/ExportAllResourcesToToml` | Export all resources to TOML |
| `read/ExportResourcesToToml` | Export specific resources to TOML |
### Write — Additional
| Komodo RPC | Description |
|------------|-------------|
| `write/CreateLocalUser` | Create local user (admin) |
| `write/CreateServiceUser` | Create service user (admin) |
| `write/CreateNetwork` | Create docker network |
| `write/CreateDeploymentFromContainer` | Create deployment from container |
| `write/CreateApiKeyForServiceUser` | Create API key for service user |
| `write/AddUserToUserGroup` | Add user to group (admin) |
| `write/RemoveUserFromUserGroup` | Remove user from group (admin) |
| `write/CloseAlert` | Close alert (admin) |
| `write/BatchDeleteAllTerminals` | Batch delete terminals |
| `write/RefreshStackCache` | Refresh stack cache |
| `write/RefreshBuildCache` | Refresh build cache |
| `write/RefreshRepoCache` | Refresh repo cache |
| `write/RefreshResourceSyncPending` | Refresh sync pending |
| `write/CommitSync` | Commit sync |
| `write/CheckDeploymentForUpdate` | Check deployment update |
| `write/CheckStackForUpdate` | Check stack update |
| `write/WriteBuildFileContents` | Write build file contents |
| `write/WriteStackFileContents` | Write stack file contents |
| `write/WriteSyncFileContents` | Write sync file contents |
| `write/RotateServerKeys` | Rotate server keys |
| `write/UpdatePermissionOnResourceType` | Update permission on type |
| `write/UpdatePermissionOnTarget` | Update permission on target |
| `write/UpdateResourceMeta` | Update resource metadata |
| `write/UpdateServerPublicKey` | Update server public key |
| `write/UpdateUserAdmin` | Update user admin status |
| `write/UpdateUserBasePermissions` | Update user base permissions |
| `write/UpdateVariableDescription` | Update variable description |
| `write/UpdateVariableIsSecret` | Update variable secret flag |
| `write/SetEveryoneUserGroup` | Set everyone group |
| `write/SetUsersInUserGroup` | Set users in group |
| `write/SetLastSeenUpdate` | Set last seen update |
| `write/PushRecentlyViewed` | Push recently viewed |
-8
View File
@@ -254,13 +254,6 @@ RESOURCE_DEFS: dict[str, dict] = {
"name_field": "name",
"has_update": True,
},
"terminal": {
"create_params": lambda name: {"name": name},
"update_params": None, # No update endpoint
"id_field": "id",
"name_field": "name",
"has_update": False,
},
}
# Test tiers
@@ -268,7 +261,6 @@ TIERS: list[list[str]] = [
["tag", "variable", "user_group"],
["procedure", "action", "repo", "builder", "alerter", "sync_resource"],
["server", "stack", "build", "deployment", "swarm"],
["terminal"],
]
+24 -10
View File
@@ -14,6 +14,8 @@ import { summaryInputSchema, handleSummary } from "./tools/summary.js";
import { inspectInputSchema, handleInspect } from "./tools/inspect.js";
import { searchLogsInputSchema, handleSearchLogs } from "./tools/search-logs.js";
import { listDetailInputSchema, handleListDetail } from "./tools/list-detail.js";
import { copyInputSchema, handleCopy } from "./tools/copy.js";
import { renameInputSchema, handleRename } from "./tools/rename.js";
const PORT = parseInt(process.env.PORT || "9800", 10);
const client = new KomodoClient();
@@ -22,42 +24,42 @@ const transports: Record<string, StreamableHTTPServerTransport> = {};
function createServerInstance(): McpServer {
const server = new McpServer({
name: "komodo-mcp-server",
version: "2.0.0",
version: "2.1.0",
});
server.registerTool("komodo_list", {
description:
"List or search Komodo resources. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, execution, access_request, action, repo, builder, swarm, variable, user_group, alert, terminal, git_provider_account. Returns a JSON array.",
"List or search Komodo resources. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, action, repo, builder, swarm, variable, user_group, git_provider_account. Returns a JSON array.",
inputSchema: listInputSchema,
}, async (args) => handleList(args, client));
server.registerTool("komodo_get", {
description:
"Get a single Komodo resource by ID or name. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, execution, access_request, action, repo, builder, swarm, variable, user_group, alert, git_provider_account. Returns the full resource object.",
"Get a single Komodo resource by ID or name. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, tag, action, repo, builder, swarm, variable, user_group, git_provider_account. Returns the full resource object.",
inputSchema: getInputSchema,
}, async (args) => handleGet(args, client));
server.registerTool("komodo_create", {
description:
"Create a new Komodo resource. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, tag, action, repo, builder, swarm, variable, user_group, terminal, git_provider_account. Provide params object with Create* endpoint fields.",
"Create a new Komodo resource. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, tag, action, repo, builder, swarm, variable, user_group, git_provider_account. Provide params object with Create* endpoint fields.",
inputSchema: createInputSchema,
}, async (args) => handleCreate(args, client));
server.registerTool("komodo_update", {
description:
"Update an existing Komodo resource by ID. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, action, repo, builder, swarm, variable, user_group, git_provider_account. Provide params with fields to update.",
"Update an existing Komodo resource by ID. resource_type: stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, tag, action, repo, builder, swarm, variable, user_group, git_provider_account. Provide params with fields to update.",
inputSchema: updateInputSchema,
}, async (args) => handleUpdate(args, client));
server.registerTool("komodo_delete", {
description:
"Delete a Komodo resource by ID or name. resource_type: stack, build, server, procedure, deployment, alerter, sync_resource, tag, action, repo, builder, swarm, variable, user_group, terminal, git_provider_account.",
"Delete a Komodo resource by ID or name. resource_type: stack, build, server, procedure, deployment, alerter, sync_resource, tag, action, repo, builder, swarm, variable, user_group, git_provider_account.",
inputSchema: deleteInputSchema,
}, async (args) => handleDelete(args, client));
server.registerTool("komodo_execute", {
description:
"Execute a Komodo operation. 100+ operations including: run_build, deploy_stack, deploy, destroy_stack, run_procedure, run_action, build_repo, clone_repo, pull_repo, container lifecycle (start/stop/restart/pause/unpause), deployment lifecycle, stack lifecycle, server operations (refresh, prune, run_command, scripts, copy, move), swarm operations, batch operations (batch_run_build, batch_deploy, etc.), and admin ops (backup_core_database, global_auto_update).",
"Execute a Komodo operation. Operations include: build/deploy (run_build, deploy, deploy_stack, destroy_stack, pull_stack), repo (build_repo, clone_repo, pull_repo), procedure/action (run_procedure, run_action, run_sync), stack lifecycle (start/stop/restart/pause/unpause), container lifecycle, deployment lifecycle, server ops (refresh_containers, prune_images/containers/networks, run_command, scripts, copy, move), swarm ops (remove nodes/services/configs/secrets/stacks, create/rotate config/secret), batch ops, and admin (backup_core_database, rotate_core_keys, global_auto_update, send_alert, test_alerter).",
inputSchema: executeInputSchema,
}, async (args) => handleExecute(args, client));
@@ -69,7 +71,7 @@ function createServerInstance(): McpServer {
server.registerTool("komodo_summary", {
description:
"Get summary/stats for a Komodo resource type. resource_type: build (GetBuildsSummary), deployment (GetDeploymentsSummary), server (GetServersSummary), stack (GetStacksSummary), alerter (GetAlertersSummary), procedure (GetProceduresSummary), sync_resource (GetResourceSyncsSummary), repo (GetReposSummary), builder (GetBuildersSummary), swarm (GetSwarmsSummary), action (GetActionsSummary).",
"Get summary/stats for a Komodo resource type. resource_type: build, deployment, server, stack, alerter, procedure, sync_resource, repo, builder, swarm, action.",
inputSchema: summaryInputSchema,
}, async (args) => handleSummary(args, client));
@@ -87,10 +89,22 @@ function createServerInstance(): McpServer {
server.registerTool("komodo_list_detail", {
description:
"Extended listing for specific Docker/infrastructure objects. list_type: containers, all_containers, images, networks, volumes, system_processes, schedules, permissions, api_keys, secrets, updates, build_versions, compose_projects, user_target_permissions, full_stacks, full_builds, full_servers, full_deployments, full_procedures, full_repos, full_builders, full_swarms, full_actions, full_alerters, full_resource_syncs. Optional server filter.",
"Extended listing for Docker/infrastructure objects. list_type: containers, all_containers, images, networks, volumes, system_processes, schedules, permissions, api_keys, secrets, updates, build_versions, compose_projects, user_target_permissions, full_stacks, full_builds, full_servers, full_deployments, full_procedures, full_repos, full_builders, full_swarms, full_actions, full_alerters, full_resource_syncs, swarm_configs, swarm_networks, swarm_nodes, swarm_secrets, swarm_services, swarm_stacks, swarm_tasks, git_providers_from_config, image_registries_from_config, common_build_extra_args, common_deployment_extra_args, common_stack_build_extra_args, common_stack_extra_args, image_history, all_stack_services. Optional server filter.",
inputSchema: listDetailInputSchema,
}, async (args) => handleListDetail(args, client));
server.registerTool("komodo_copy", {
description:
"Copy a Komodo resource. resource_type: stack, build, server, deployment, procedure, alerter, action, repo, builder, swarm, sync_resource. Provide id of the source resource and optional name for the copy.",
inputSchema: copyInputSchema,
}, async (args) => handleCopy(args, client));
server.registerTool("komodo_rename", {
description:
"Rename a Komodo resource. resource_type: stack, build, server, deployment, procedure, alerter, action, repo, builder, swarm, tag, user_group. Provide id and the new name.",
inputSchema: renameInputSchema,
}, async (args) => handleRename(args, client));
return server;
}
@@ -128,7 +142,7 @@ const httpServer = createServer(async (req, res) => {
// Health check
if (req.method === "GET" && req.url === "/health") {
res.writeHead(200, { "Content-Type": "application/json" });
res.end(JSON.stringify({ status: "ok", name: "komodo-mcp-server", version: "2.0.0" }));
res.end(JSON.stringify({ status: "ok", name: "komodo-mcp-server", version: "2.1.0" }));
return;
}
+2 -2
View File
@@ -12,8 +12,8 @@ export class KomodoClient {
constructor() {
this.baseUrl =
process.env.KOMODO_BASE_URL || process.env.KOMODO_URL || "http://10.10.2.114:9120";
this.username = process.env.KOMODO_USERNAME || "";
this.password = process.env.KOMODO_PASSWORD || "";
this.username = process.env.KOMODO_USERNAME || process.env.KOMODO_INIT_ADMIN_USERNAME || "";
this.password = process.env.KOMODO_PASSWORD || process.env.KOMODO_INIT_ADMIN_PASSWORD || "";
this.apiKey = process.env.KOMODO_API_KEY || null;
this.apiSecret = process.env.KOMODO_API_SECRET || null;
this.useApiKey = !!(this.apiKey && this.apiSecret);
+48
View File
@@ -0,0 +1,48 @@
import { z } from "zod";
import { KomodoClient } from "../komodo-client.js";
import { COPY_REQUEST_MAP } from "../types.js";
const CopyableType = z.enum([
"stack", "build", "server", "deployment", "procedure",
"alerter", "action", "repo", "builder", "swarm", "sync_resource",
]);
export const copyInputSchema = {
resource_type: CopyableType.describe(
"Resource type to copy (stack, build, server, deployment, procedure, alerter, action, repo, builder, swarm, sync_resource)",
),
id: z.string().describe("Resource ID or name to copy"),
name: z.string().optional().describe("Name for the new copy"),
};
export async function handleCopy(
args: {
resource_type: z.infer<typeof CopyableType>;
id: string;
name?: string;
},
client: KomodoClient,
): Promise<{ content: { type: "text"; text: string }[] }> {
const { resource_type, id, name } = args;
const requestName = COPY_REQUEST_MAP[resource_type];
if (!requestName) {
throw new Error(
`No COPY endpoint available for resource type: ${resource_type}`,
);
}
const params: Record<string, unknown> = { id };
if (name) params.name = name;
const result = await client.rpc("write", requestName, params);
return {
content: [
{
type: "text",
text: JSON.stringify(result, null, 2),
},
],
};
}
+1 -1
View File
@@ -4,7 +4,7 @@ import { ExecuteOperation, EXECUTE_REQUEST_MAP } from "../types.js";
export const executeInputSchema = {
operation: ExecuteOperation.describe(
"Execute operation (run_build, deploy_stack, deploy_stack_service, run_procedure, run_procedure_stage, run_deployment_action, run_deployment_sync, run_resource_sync, run_stack_refresh_cache, run_stack_refresh_content, run_stack_pull, run_stack_pull_deployment, run_stack_stop, run_stack_restart, run_stack_pause, run_stack_unpause, run_stack_remove_orphan_containers, run_stack_toggle_service_dependencies, run_stack_auto_update, run_stack_commit, run_server_refresh, run_server_refresh_containers, run_server_update_periphery, run_server_prune_images, run_server_prune_containers, run_server_prune_networks, run_server_stats, run_server_run_command, run_server_scripts, run_server_copy, run_server_move, run_deployment_execute, run_deployment_redeploy, run_deployment_destroy, run_deployment_stop, run_deployment_logs, run_sync_deployment, get_mcp_token)",
"Execute operation (run_build, deploy_stack, deploy_stack_service, deploy, deploy_stack_if_changed, destroy_stack, destroy_container, destroy_deployment, pull_stack, pull_deployment, build_repo, clone_repo, pull_repo, cancel_repo_build, clear_repo_cache, run_procedure, run_action, run_sync, cancel_action, cancel_build, cancel_procedure, start_stack, stop_stack, restart_stack, pause_stack, unpause_stack, start_container, stop_container, restart_container, pause_container, unpause_container, start_all_containers, stop_all_containers, restart_all_containers, pause_all_containers, unpause_all_containers, start_deployment, stop_deployment, restart_deployment, pause_deployment, unpause_deployment, run_server_refresh_containers, run_server_prune_images, run_server_prune_containers, run_server_prune_networks, run_server_run_command, run_server_scripts, run_server_copy, run_server_move, rotate_all_server_keys, prune_buildx, prune_docker_builders, prune_system, prune_volumes, delete_image, delete_network, delete_volume, remove_swarm_nodes, remove_swarm_services, remove_swarm_configs, remove_swarm_secrets, remove_swarm_stacks, create_swarm_config, create_swarm_secret, rotate_swarm_config, rotate_swarm_secret, update_swarm_node, batch_run_build, batch_deploy_stack, batch_deploy_stack_if_changed, batch_deploy, batch_pull_stack, batch_pull_repo, batch_build_repo, batch_clone_repo, batch_run_procedure, batch_run_action, batch_destroy_deployment, batch_destroy_stack, backup_core_database, rotate_core_keys, global_auto_update, send_alert, test_alerter)",
),
id: z.string().optional().describe("Resource ID or name for the operation"),
params: z
+1 -1
View File
@@ -12,7 +12,7 @@ const GET_PARAM_KEY: Record<string, string> = {
export const getInputSchema = {
resource_type: ResourceType.describe(
"Resource type to get (stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, execution, access_request)",
"Resource type to get (stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, tag, action, repo, builder, swarm, variable, user_group, git_provider_account)",
),
id: z.string().describe("Resource ID or name"),
};
+10
View File
@@ -10,6 +10,16 @@ const listDetailType = z.enum([
"full_stacks", "full_builds", "full_servers", "full_deployments",
"full_procedures", "full_repos", "full_builders", "full_swarms",
"full_actions", "full_alerters", "full_resource_syncs",
// Swarm detail lists
"swarm_configs", "swarm_networks", "swarm_nodes", "swarm_secrets",
"swarm_services", "swarm_stacks", "swarm_tasks",
// Config lists
"git_providers_from_config", "image_registries_from_config",
// Extra args
"common_build_extra_args", "common_deployment_extra_args",
"common_stack_build_extra_args", "common_stack_extra_args",
// Other
"image_history", "all_stack_services",
]);
export const listDetailInputSchema = {
+2 -2
View File
@@ -8,12 +8,12 @@ import {
export const listInputSchema = {
resource_type: ResourceType.describe(
"Resource type to list (stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, execution, access_request)",
"Resource type to list (stack, build, server, procedure, deployment, alerter, image_registry_account, sync_resource, user, tag, action, repo, builder, swarm, variable, user_group, git_provider_account)",
),
search: z
.string()
.optional()
.describe("Optional search/filter query — uses the Search* endpoint instead of List*"),
.describe("Optional search/filter query — filters results server-side"),
project: z
.string()
.optional()
+51
View File
@@ -0,0 +1,51 @@
import { z } from "zod";
import { KomodoClient } from "../komodo-client.js";
import { RENAME_REQUEST_MAP } from "../types.js";
const RenameableType = z.enum([
"stack", "build", "server", "deployment", "procedure",
"alerter", "action", "repo", "builder", "swarm", "tag", "user_group",
]);
export const renameInputSchema = {
resource_type: RenameableType.describe(
"Resource type to rename (stack, build, server, deployment, procedure, alerter, action, repo, builder, swarm, tag, user_group)",
),
id: z.string().describe("Resource ID or name to rename"),
name: z.string().describe("New name for the resource"),
};
export async function handleRename(
args: {
resource_type: z.infer<typeof RenameableType>;
id: string;
name: string;
},
client: KomodoClient,
): Promise<{ content: { type: "text"; text: string }[] }> {
const { resource_type, id, name } = args;
const requestName = RENAME_REQUEST_MAP[resource_type];
if (!requestName) {
throw new Error(
`No RENAME endpoint available for resource type: ${resource_type}`,
);
}
const params: Record<string, unknown> = { id, name };
if (resource_type === "tag") {
params.tag = id;
delete params.id;
}
const result = await client.rpc("write", requestName, params);
return {
content: [
{
type: "text",
text: JSON.stringify(result, null, 2),
},
],
};
}
+134 -167
View File
@@ -11,74 +11,48 @@ export const ResourceType = z.enum([
"sync_resource",
"user",
"tag",
"execution",
"access_request",
"action",
"repo",
"builder",
"swarm",
"variable",
"user_group",
"alert",
"terminal",
"git_provider_account",
]);
export type ResourceType = z.infer<typeof ResourceType>;
export const ExecuteOperation = z.enum([
// Build & Deploy
"run_build",
"deploy_stack",
"deploy_stack_service",
"run_procedure",
"run_procedure_stage",
"run_deployment_action",
"run_deployment_sync",
"run_resource_sync",
"run_stack_refresh_cache",
"run_stack_refresh_content",
"run_stack_pull",
"run_stack_pull_deployment",
"run_stack_stop",
"run_stack_restart",
"run_stack_pause",
"run_stack_unpause",
"run_stack_remove_orphan_containers",
"run_stack_toggle_service_dependencies",
"run_stack_auto_update",
"run_stack_commit",
"run_server_refresh",
"run_server_refresh_containers",
"run_server_update_periphery",
"run_server_prune_images",
"run_server_prune_containers",
"run_server_prune_networks",
"run_server_stats",
"run_server_run_command",
"run_server_scripts",
"run_server_copy",
"run_server_move",
"run_deployment_execute",
"run_deployment_redeploy",
"run_deployment_destroy",
"run_deployment_stop",
"run_deployment_logs",
"run_sync_deployment",
"get_mcp_token",
"deploy",
"deploy_stack_if_changed",
"destroy_stack",
"destroy_container",
"destroy_deployment",
"pull_stack",
"pull_deployment",
// Repo operations
"build_repo",
"clone_repo",
"pull_repo",
"pull_deployment",
"cancel_repo_build",
"clear_repo_cache",
// Procedure & Action
"run_procedure",
"run_action",
"run_sync",
"cancel_action",
"cancel_build",
"cancel_procedure",
// Stack lifecycle
"start_stack",
"stop_stack",
"restart_stack",
"pause_stack",
"unpause_stack",
// Container lifecycle
"start_container",
"stop_container",
"restart_container",
@@ -89,12 +63,23 @@ export const ExecuteOperation = z.enum([
"restart_all_containers",
"pause_all_containers",
"unpause_all_containers",
// Deployment lifecycle
"start_deployment",
"stop_deployment",
"restart_deployment",
"pause_deployment",
"unpause_deployment",
"start_stack",
// Server operations
"run_server_refresh_containers",
"run_server_prune_images",
"run_server_prune_containers",
"run_server_prune_networks",
"run_server_run_command",
"run_server_scripts",
"run_server_copy",
"run_server_move",
"rotate_all_server_keys",
// Docker prune & cleanup
"prune_buildx",
"prune_docker_builders",
"prune_system",
@@ -102,6 +87,7 @@ export const ExecuteOperation = z.enum([
"delete_image",
"delete_network",
"delete_volume",
// Swarm operations
"remove_swarm_nodes",
"remove_swarm_services",
"remove_swarm_configs",
@@ -112,6 +98,7 @@ export const ExecuteOperation = z.enum([
"rotate_swarm_config",
"rotate_swarm_secret",
"update_swarm_node",
// Batch operations
"batch_run_build",
"batch_deploy_stack",
"batch_deploy_stack_if_changed",
@@ -124,17 +111,16 @@ export const ExecuteOperation = z.enum([
"batch_run_action",
"batch_destroy_deployment",
"batch_destroy_stack",
// Admin & misc
"backup_core_database",
"rotate_core_keys",
"rotate_all_server_keys",
"global_auto_update",
"send_alert",
"test_alerter",
"sleep",
]);
export type ExecuteOperation = z.infer<typeof ExecuteOperation>;
// Maps resource_type to the list/search RPC request name
// Maps resource_type to the list RPC request name
export const LIST_REQUEST_MAP: Record<ResourceType, string> = {
stack: "ListStacks",
build: "ListBuilds",
@@ -143,49 +129,34 @@ export const LIST_REQUEST_MAP: Record<ResourceType, string> = {
deployment: "ListDeployments",
alerter: "ListAlerters",
image_registry_account: "ListImageRegistryAccounts",
sync_resource: "ListSyncResources",
sync_resource: "ListResourceSyncs",
user: "ListUsers",
tag: "ListTags",
execution: "ListExecutions",
access_request: "ListAccessRequests",
action: "ListActions",
repo: "ListRepos",
builder: "ListBuilders",
swarm: "ListSwarms",
variable: "ListVariables",
user_group: "ListUserGroups",
alert: "ListAlerts",
terminal: "ListTerminals",
git_provider_account: "ListGitProviderAccounts",
};
// Maps resource_type to the search RPC request name
export const SEARCH_REQUEST_MAP: Record<ResourceType, string> = {
stack: "SearchStacks",
build: "SearchBuilds",
server: "SearchServers",
procedure: "SearchProcedures",
deployment: "SearchDeployments",
alerter: "SearchAlerters",
image_registry_account: "SearchImageRegistryAccounts",
sync_resource: "SearchSyncResources",
user: "ListUsers",
tag: "ListTags",
execution: "ListExecutions",
access_request: "ListAccessRequests",
action: "ListActions",
repo: "ListRepos",
builder: "ListBuilders",
swarm: "ListSwarms",
variable: "ListVariables",
user_group: "ListUserGroups",
alert: "ListAlerts",
terminal: "ListTerminals",
git_provider_account: "ListGitProviderAccounts",
// Note: Search* endpoints exist for core resource types only.
// Types not listed here fall back to their List* endpoint.
export const SEARCH_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
stack: "ListStacks",
build: "ListBuilds",
server: "ListServers",
procedure: "ListProcedures",
deployment: "ListDeployments",
alerter: "ListAlerters",
image_registry_account: "ListImageRegistryAccounts",
sync_resource: "ListResourceSyncs",
};
// Maps resource_type to the get RPC request name
export const GET_REQUEST_MAP: Record<ResourceType, string> = {
export const GET_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
stack: "GetStack",
build: "GetBuild",
server: "GetServer",
@@ -193,19 +164,14 @@ export const GET_REQUEST_MAP: Record<ResourceType, string> = {
deployment: "GetDeployment",
alerter: "GetAlerter",
image_registry_account: "GetImageRegistryAccount",
sync_resource: "GetSyncResource",
user: "GetUser",
sync_resource: "GetResourceSync",
tag: "GetTag",
execution: "GetExecution",
access_request: "GetAccessRequest",
action: "GetAction",
repo: "GetRepo",
builder: "GetBuilder",
swarm: "GetSwarm",
variable: "GetVariable",
user_group: "GetUserGroup",
alert: "GetAlert",
terminal: "GetTerminal",
git_provider_account: "GetGitProviderAccount",
};
@@ -226,7 +192,6 @@ export const CREATE_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
swarm: "CreateSwarm",
variable: "CreateVariable",
user_group: "CreateUserGroup",
terminal: "CreateTerminal",
git_provider_account: "CreateGitProviderAccount",
};
@@ -240,7 +205,6 @@ export const UPDATE_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
alerter: "UpdateAlerter",
image_registry_account: "UpdateImageRegistryAccount",
sync_resource: "UpdateResourceSync",
user: "UpdateUser",
tag: "UpdateTagColor",
action: "UpdateAction",
repo: "UpdateRepo",
@@ -259,7 +223,7 @@ export const DELETE_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
procedure: "DeleteProcedure",
deployment: "DeleteDeployment",
alerter: "DeleteAlerter",
sync_resource: "DeleteSyncResource",
sync_resource: "DeleteResourceSync",
tag: "DeleteTag",
action: "DeleteAction",
repo: "DeleteRepo",
@@ -267,7 +231,6 @@ export const DELETE_REQUEST_MAP: Partial<Record<ResourceType, string>> = {
swarm: "DeleteSwarm",
variable: "DeleteVariable",
user_group: "DeleteUserGroup",
terminal: "DeleteTerminal",
git_provider_account: "DeleteGitProviderAccount",
};
@@ -276,101 +239,37 @@ export const EXECUTE_REQUEST_MAP: Record<
ExecuteOperation,
{ route: "execute" | "read" | "write"; name: string }
> = {
// Build & Deploy
run_build: { route: "execute", name: "RunBuild" },
deploy_stack: { route: "execute", name: "DeployStack" },
deploy_stack_service: { route: "execute", name: "DeployStackService" },
run_procedure: { route: "execute", name: "RunProcedure" },
run_procedure_stage: { route: "execute", name: "RunProcedureStage" },
run_deployment_action: { route: "execute", name: "RunDeploymentAction" },
run_deployment_sync: { route: "execute", name: "RunDeploymentSync" },
run_resource_sync: { route: "execute", name: "RunResourceSync" },
run_stack_refresh_cache: {
route: "execute",
name: "RunStackRefreshCache",
},
run_stack_refresh_content: {
route: "execute",
name: "RunStackRefreshContent",
},
run_stack_pull: { route: "execute", name: "RunStackPull" },
run_stack_pull_deployment: {
route: "execute",
name: "RunStackPullDeployment",
},
run_stack_stop: { route: "execute", name: "RunStackStop" },
run_stack_restart: { route: "execute", name: "RunStackRestart" },
run_stack_pause: { route: "execute", name: "RunStackPause" },
run_stack_unpause: { route: "execute", name: "RunStackUnpause" },
run_stack_remove_orphan_containers: {
route: "execute",
name: "RunStackRemoveOrphanContainers",
},
run_stack_toggle_service_dependencies: {
route: "execute",
name: "RunStackToggleServiceDependencies",
},
run_stack_auto_update: { route: "execute", name: "RunStackAutoUpdate" },
run_stack_commit: { route: "execute", name: "RunStackCommit" },
run_server_refresh: { route: "execute", name: "RunServerRefresh" },
run_server_refresh_containers: {
route: "execute",
name: "RunServerRefreshContainers",
},
run_server_update_periphery: {
route: "execute",
name: "RunServerUpdatePeriphery",
},
run_server_prune_images: {
route: "execute",
name: "RunServerPruneImages",
},
run_server_prune_containers: {
route: "execute",
name: "RunServerPruneContainers",
},
run_server_prune_networks: {
route: "execute",
name: "RunServerPruneNetworks",
},
run_server_stats: { route: "execute", name: "RunServerStats" },
run_server_run_command: {
route: "execute",
name: "RunServerRunCommand",
},
run_server_scripts: { route: "execute", name: "RunServerScripts" },
run_server_copy: { route: "execute", name: "RunServerCopy" },
run_server_move: { route: "execute", name: "RunServerMove" },
run_deployment_execute: {
route: "execute",
name: "RunDeploymentExecute",
},
run_deployment_redeploy: {
route: "execute",
name: "RunDeploymentRedeploy",
},
run_deployment_destroy: {
route: "execute",
name: "RunDeploymentDestroy",
},
run_deployment_stop: { route: "execute", name: "RunDeploymentStop" },
run_deployment_logs: { route: "execute", name: "RunDeploymentLogs" },
run_sync_deployment: { route: "execute", name: "RunSyncDeployment" },
get_mcp_token: { route: "execute", name: "GetMcpToken" },
deploy_stack_service: { route: "execute", name: "RunStackService" },
deploy: { route: "execute", name: "Deploy" },
deploy_stack_if_changed: { route: "execute", name: "DeployStackIfChanged" },
destroy_stack: { route: "execute", name: "DestroyStack" },
destroy_container: { route: "execute", name: "DestroyContainer" },
destroy_deployment: { route: "execute", name: "DestroyDeployment" },
pull_stack: { route: "execute", name: "PullStack" },
pull_deployment: { route: "execute", name: "PullDeployment" },
// Repo operations
build_repo: { route: "execute", name: "BuildRepo" },
clone_repo: { route: "execute", name: "CloneRepo" },
pull_repo: { route: "execute", name: "PullRepo" },
pull_deployment: { route: "execute", name: "PullDeployment" },
cancel_repo_build: { route: "execute", name: "CancelRepoBuild" },
clear_repo_cache: { route: "execute", name: "ClearRepoCache" },
// Procedure & Action
run_procedure: { route: "execute", name: "RunProcedure" },
run_action: { route: "execute", name: "RunAction" },
run_sync: { route: "execute", name: "RunSync" },
cancel_action: { route: "execute", name: "CancelAction" },
cancel_build: { route: "execute", name: "CancelBuild" },
cancel_procedure: { route: "execute", name: "CancelProcedure" },
// Stack lifecycle
start_stack: { route: "execute", name: "StartStack" },
stop_stack: { route: "execute", name: "StopStack" },
restart_stack: { route: "execute", name: "RestartStack" },
pause_stack: { route: "execute", name: "PauseStack" },
unpause_stack: { route: "execute", name: "UnpauseStack" },
// Container lifecycle
start_container: { route: "execute", name: "StartContainer" },
stop_container: { route: "execute", name: "StopContainer" },
restart_container: { route: "execute", name: "RestartContainer" },
@@ -381,12 +280,32 @@ export const EXECUTE_REQUEST_MAP: Record<
restart_all_containers: { route: "execute", name: "RestartAllContainers" },
pause_all_containers: { route: "execute", name: "PauseAllContainers" },
unpause_all_containers: { route: "execute", name: "UnpauseAllContainers" },
// Deployment lifecycle
start_deployment: { route: "execute", name: "StartDeployment" },
stop_deployment: { route: "execute", name: "StopDeployment" },
restart_deployment: { route: "execute", name: "RestartDeployment" },
pause_deployment: { route: "execute", name: "PauseDeployment" },
unpause_deployment: { route: "execute", name: "UnpauseDeployment" },
start_stack: { route: "execute", name: "StartStack" },
// Server operations
run_server_refresh_containers: {
route: "execute",
name: "RunServerRefreshContainers",
},
run_server_prune_images: { route: "execute", name: "PruneImages" },
run_server_prune_containers: { route: "execute", name: "PruneContainers" },
run_server_prune_networks: { route: "execute", name: "PruneNetworks" },
run_server_run_command: {
route: "execute",
name: "RunServerRunCommand",
},
run_server_scripts: { route: "execute", name: "RunServerScripts" },
run_server_copy: { route: "execute", name: "RunServerCopy" },
run_server_move: { route: "execute", name: "RunServerMove" },
rotate_all_server_keys: {
route: "execute",
name: "RotateAllServerKeys",
},
// Docker prune & cleanup
prune_buildx: { route: "execute", name: "PruneBuildx" },
prune_docker_builders: { route: "execute", name: "PruneDockerBuilders" },
prune_system: { route: "execute", name: "PruneSystem" },
@@ -394,6 +313,7 @@ export const EXECUTE_REQUEST_MAP: Record<
delete_image: { route: "execute", name: "DeleteImage" },
delete_network: { route: "execute", name: "DeleteNetwork" },
delete_volume: { route: "execute", name: "DeleteVolume" },
// Swarm operations
remove_swarm_nodes: { route: "execute", name: "RemoveSwarmNodes" },
remove_swarm_services: { route: "execute", name: "RemoveSwarmServices" },
remove_swarm_configs: { route: "execute", name: "RemoveSwarmConfigs" },
@@ -404,6 +324,7 @@ export const EXECUTE_REQUEST_MAP: Record<
rotate_swarm_config: { route: "execute", name: "RotateSwarmConfig" },
rotate_swarm_secret: { route: "execute", name: "RotateSwarmSecret" },
update_swarm_node: { route: "execute", name: "UpdateSwarmNode" },
// Batch operations
batch_run_build: { route: "execute", name: "BatchRunBuild" },
batch_deploy_stack: { route: "execute", name: "BatchDeployStack" },
batch_deploy_stack_if_changed: {
@@ -422,16 +343,12 @@ export const EXECUTE_REQUEST_MAP: Record<
name: "BatchDestroyDeployment",
},
batch_destroy_stack: { route: "execute", name: "BatchDestroyStack" },
// Admin & misc
backup_core_database: { route: "execute", name: "BackupCoreDatabase" },
rotate_core_keys: { route: "execute", name: "RotateCoreKeys" },
rotate_all_server_keys: {
route: "execute",
name: "RotateAllServerKeys",
},
global_auto_update: { route: "execute", name: "GlobalAutoUpdate" },
send_alert: { route: "execute", name: "SendAlert" },
test_alerter: { route: "execute", name: "TestAlerter" },
sleep: { route: "execute", name: "Sleep" },
};
// Maps resource_type to the summary RPC request name
@@ -517,4 +434,54 @@ export const LIST_DETAIL_REQUEST_MAP: Record<string, string> = {
full_actions: "ListFullActions",
full_alerters: "ListFullAlerters",
full_resource_syncs: "ListFullResourceSyncs",
// Swarm detail lists
swarm_configs: "ListSwarmConfigs",
swarm_networks: "ListSwarmNetworks",
swarm_nodes: "ListSwarmNodes",
swarm_secrets: "ListSwarmSecrets",
swarm_services: "ListSwarmServices",
swarm_stacks: "ListSwarmStacks",
swarm_tasks: "ListSwarmTasks",
// Config lists
git_providers_from_config: "ListGitProvidersFromConfig",
image_registries_from_config: "ListImageRegistriesFromConfig",
// Extra args
common_build_extra_args: "ListCommonBuildExtraArgs",
common_deployment_extra_args: "ListCommonDeploymentExtraArgs",
common_stack_build_extra_args: "ListCommonStackBuildExtraArgs",
common_stack_extra_args: "ListCommonStackExtraArgs",
// Other
image_history: "ListImageHistory",
all_stack_services: "ListAllStackServices",
};
// Maps copy resource type to the Copy* RPC request name
export const COPY_REQUEST_MAP: Record<string, string> = {
stack: "CopyStack",
build: "CopyBuild",
server: "CopyServer",
deployment: "CopyDeployment",
procedure: "CopyProcedure",
alerter: "CopyAlerter",
action: "CopyAction",
repo: "CopyRepo",
builder: "CopyBuilder",
swarm: "CopySwarm",
sync_resource: "CopyResourceSync",
};
// Maps rename resource type to the Rename* RPC request name
export const RENAME_REQUEST_MAP: Record<string, string> = {
stack: "RenameStack",
build: "RenameBuild",
server: "RenameServer",
deployment: "RenameDeployment",
procedure: "RenameProcedure",
alerter: "RenameAlerter",
action: "RenameAction",
repo: "RenameRepo",
builder: "RenameBuilder",
swarm: "RenameSwarm",
tag: "RenameTag",
user_group: "RenameUserGroup",
};