Octopus Deploy MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OCTOPUS_API_KEY | Yes | Your Octopus Deploy API key | |
| OCTOPUS_SERVER_URL | Yes | The URL of your Octopus Deploy server (e.g., https://your-octopus.com) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_spacesB | List all spaces in the Octopus Deploy instance. Spaces is the main organizational unit in Octopus Deploy, Spaces keep the different projects, infrastructure and tenants completely separate. Spaces typically represent team or project boundary, but not customer boundary (use tenants for those). Always use this tool first to check that the requested space exists. |
| list_projectsA | This tool lists all projects in a given space. Projects let you manage software applications and services, each with their own deployment process, lifecycles, and variables. Projects are where you define what you are deploying and how it should be deployed. The space name is required, if you can't find the space name, ask the user directly for the name of the space. Optionally filter by partial name match using partialName parameter. |
| list_environmentsA | List environments in a space This tool lists all environments in a given space. The space name is required. Use this tool as early as possible to understand which environments are configured. Optionally filter by partial name match using partialName parameter. |
| list_deploymentsA | List deployments in a space This tool lists deployments in a given space. The space name is required. When requesting latest deployment consider which deployment state the user is interested in (successful or all). Optional filters include: projects (array of project IDs), environments (array of environment IDs), tenants (array of tenant IDs), channels (array of channel IDs), taskState (one of: Canceled, Cancelling, Executing, Failed, Queued, Success, TimedOut), and take (number of results to return). |
| get_tenant_variablesA | Get tenant variables by type This tool retrieves different types of tenant variables. Use variableType parameter to specify which type:
|
| get_missing_tenant_variablesA | Get missing tenant variables This tool retrieves tenant variables that are missing values. Optionally filter by tenant, project, or environment. |
| get_kubernetes_live_statusA | Get Kubernetes live status for a project and environment This tool retrieves the live status of Kubernetes resources for a specific project and environment. Optionally include a tenant ID for multi-tenant deployments. |
| get_deployment_processB | Get deployment process by ID This tool retrieves a deployment process by its ID. Each project has a deployment process attached, and releases/deployments can also have frozen processes attached. |
| get_branchesA | Get Git branches for a version-controlled project This tool retrieves Git branches for a specific project in a space. The space name and project ID are required. Optionally provide searchByName, skip, and take parameters for filtering and pagination. |
| get_current_userA | Get information about the current authenticated user This tool retrieves information about the currently authenticated user from the Octopus Deploy API. |
| get_variablesA | This tool gets all project and library variable set variables for a given project. Projects can contain variables (specific to a project), library variable sets (shared collections of variables associated with many projects), and tenant variables (variables related to a tenants connected to the project) If you want to retrieve tenant variables for a tenant connected to the project, use the get_tenant_variables tool. |
| get_task_from_urlA | Get task details from an Octopus Deploy task URL. Returns full task details including execution logs and state. This tool is a URL-to-ID resolver that returns the same body as the Accepts task URLs like: https://your-octopus.com/app#/Spaces-1/tasks/ServerTasks-456 Key features:
For deployment URLs: If you have a deployment URL, use this workflow:
Tasks represent background operations in Octopus Deploy, such as deployments, health checks, and system maintenance. Each task has a unique ID and can be monitored for status and progress. |
| get_deployment_from_urlA | Get deployment details from an Octopus Deploy deployment URL. Returns comprehensive deployment information including the task ID needed to view execution logs. Accepts deployment URLs like: https://your-octopus.com/app#/Spaces-1/projects/my-app/deployments/releases/1.0.0/deployments/Deployments-123 Returns:
Recommended workflow for investigating deployment issues:
Handles space ID to space name resolution automatically. |
| find_releasesA | Find releases in an Octopus Deploy space. Three modes, picked by which arguments are supplied:
Each summary includes a resourceUri for fetching the full release body (release notes, packages, build information, custom fields). |
| find_runbooksA | Find runbooks in an Octopus Deploy project. Two project kinds are supported:
Modes:
Each summary includes multiTenancyMode and environmentScope so callers can determine which environments and tenants are valid targets before invoking run_runbook. |
| find_tenantsA | Find tenants in a space - can retrieve a single tenant by ID or list all tenants This unified tool can either:
Tenants represent customers or clients in Octopus Deploy, allowing you to manage deployments and configurations specific to each tenant. Tenants can be grouped into tenant tags for easier management and deployment targeting. Tenants can also represent geographical locations, organizational units, or any other logical grouping. Optionally provide filtering and pagination parameters when listing. |
| find_deployment_targetsA | Find deployment targets (machines) in a space - can retrieve a single target by ID or list all targets This unified tool can either:
You can optionally filter by various parameters like name, roles, health status, etc. when listing. |
| find_certificatesA | Find certificates in a space - can retrieve a single certificate by ID or list all certificates This unified tool can either:
You can optionally filter by various parameters like name, archived status, tenant, etc. when listing. |
| find_accountsA | Find accounts in a space - can retrieve a single account by ID or list all accounts This unified tool can either:
You can optionally filter by various parameters like name, account type, etc. when listing. |
| find_interruptionsA | Find interruptions (manual interventions, guided failures, deployment approvals) in an Octopus Deploy space. Interruptions are the Octopus surface equivalent to pending approvals: a deployment or runbook run pauses and waits for a human to take action. Use this tool to enumerate them or to look up a single one. Modes (picked by which arguments you supply):
Each summary includes:
|
| find_eventsA | Search the Octopus Deploy audit log (also called the Events log) — every meaningful action recorded against a space: deployments, release creations, modifications, user logins, machine registrations, variable edits, tenant changes, and so on. Modes (the
Search modes (within
Performance tip: the per-event Filter semantics:
Permissions: requires |
| find_feature_togglesA | List customer feature toggles in an Octopus Deploy project. Each summary includes per-environment state (isEnabled, rolloutPercentage, clientRolloutPercentage) so "where is X turned on" is answerable from the list response. Heavy fields (description, tenant lists, segments, minimum versions) live in the resource body. Dereference the returned resourceUri (octopus://spaces/{spaceName}/projects/{projectId}/featuretoggles/{slug}) for the full toggle body. Use update_feature_toggle to flip an environment on/off or change rollout percentages on an existing toggle. This MCP server does not expose toggle creation, deletion, renaming, or rollout-group management — direct customers to the Octopus UI for those. |
| update_feature_toggleA | Adjust an existing customer feature toggle in an Octopus Deploy project. Narrow surface — flip an environment on/off, change rollout percentages, or update the toggle-level description / default state. Internally fetches the current toggle, applies your patches in memory, and PUTs the merged body, so unmentioned environments and unmentioned fields are preserved. Deliberately not exposed: name/slug rename, tag changes, rollout group attach/detach, tenant targeting, segments, minimum version, adding or removing environment configurations entirely. For those, use the Octopus UI. Patches that reference an environment not already configured on the toggle are rejected with reason: environment_not_configured. The tool does not add new environment configurations. |
| create_releaseC | Create a new release for an Octopus Deploy project This tool creates a new release for a project. The space name and project name are required. All other parameters are optional and will use Octopus defaults if not specified. |
| deploy_releaseA | Deploy a release to one or more environments in Octopus Deploy This tool supports both tenanted and untenanted deployments:
The tool automatically determines which deployment type to use based on the parameters provided. |
| run_runbookA | Run a runbook against one or more environments in Octopus Deploy. Runbooks execute operational processes (DB backups, smoke tests, environment refresh, etc.) against the specified environments. For tenanted runs, supply tenants and/or tenantTags. Two project kinds:
|
| grep_task_logA | Search a server task's activity log with grep-style semantics. Returns only matching lines (with optional symmetric context windows). This is the canonical way to inspect task logs — there is no full-log resource URI, because exposing one would tempt callers to inhale multi-megabyte bodies when grep is almost always the better primitive. Use this when you know what to look for (a specific error string, a step name, a pattern). For structured access to the activity tree (step hierarchy, categories, timing) use the octopus://spaces/{spaceName}/tasks/{taskId}/details resource instead. Parameter conventions mirror GNU grep so the schema is self-explanatory:
Response includes totalMatches (true count across the whole log), totalLines, the matched lines with 1-indexed lineNumber, optional before/after context arrays, and a taskDetailsResourceUri for the structured fall-through. |
| grep_llms_txtA | Search the Octopus API catalog at octopus://api/llms.txt with grep-style semantics. The catalog is large (~300+ KB) — call this rather than reading the resource body directly. llms.txt is structured as:
Useful patterns:
Parameter conventions mirror GNU grep:
Response: totalMatches (true count across the whole file), totalLines, the matched lines with 1-indexed lineNumber, optional before/after context arrays, and catalogResourceUri for the structured fall-through. |
| executeA | Reach Octopus REST endpoints not covered by the curated tools. Use this only after grep_llms_txt has shown you the right method and path. Method gating is hard-coded server-side, three tiers:
The HTTP method enum is the gate. The tool will not honour any 'isRead' flag the agent invents — the runtime classifies based on the actual method. Other gates (in order): 0. Path shape: must be '/api' or start with '/api/'. Absolute URLs, '~/api/...', '/octopus/portal/...', query strings, fragments, '..' segments, and percent-encoded slashes are all rejected up front.
Discover endpoints with grep_llms_txt. Use octopus://api/capabilities to see which toolsets are enabled and whether write/delete modes are on. |
| read_resourceA | Universal fetch for any 'octopus://' URI returned by any other tool. Use this whenever you see fields like 'resourceUri' or 'taskResourceUri' in a response and need the full body. How to use:
This tool is the backstop for clients that do not natively implement the MCP 'resources/read' primitive. Clients that DO support resources/read (Claude Code, MCP Inspector) can call it directly and skip this tool. Either path returns byte-identical bodies. Tools that return resource URIs include: find_releases, get_deployment_from_url, get_task_from_url, and others. When in doubt, call read_resource on any 'octopus://' string you encounter. Note: there is intentionally no octopus://...tasks/{id}/log resource. Call the grep_task_log tool to search task logs without inhaling the full body. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/OctopusDeploy/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server