The Deployer MCP
An MCP server that allows AI agents to analyze code repositories, generate deployment plans with cost estimates, and deploy applications to AWS, Google Cloud, Azure, DigitalOcean, or custom VPS servers. It handles infrastructure setup, domain configuration, database provisioning, and ongoing operations like scaling and log monitoring within the user's own cloud account.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://app.thedploy.com/api/v1/mcpWhat its tools do
23 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (15)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to thedploy.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Analyze a public Git repository to identify services and deployment blockers
- Generate a deployment plan with estimated monthly costs for cloud resources
- Deploy applications to AWS, GCP, Azure, or DigitalOcean accounts
- Manage running applications including scaling, logs, and health checks
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- thedeployer 0.2.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 23 advertised
- Resources
- 13 advertised
- Resource templates
- 0 advertised
- Prompts
- 3 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
23 advertised
check_repo — Check a repository
Checks whether a public GitHub, GitLab or Bitbucket repository will deploy: the services it found, what's missing (each with its fix), the environment variables it needs, and what it would cost a month on DigitalOcean, AWS, Google Cloud and Azure. Reads the code and changes nothing. Works without signing in. A check can take up to a minute; one still running returns a check_id that fetches its result.
{
"type": "object",
"properties": {
"repo": {
"type": "string",
"description": "owner/name, or the repository's URL"
},
"check_id": {
"type": "string",
"description": "The check_id of an earlier check, to get its result"
}
}
}{
"title": "Check a repository",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}plan_deploy — Plan a deploy
Plans deploying a repository with the user's account on The Deployer: the repository check, plus the user's connected cloud and git accounts, any project they already have for it, and the steps left, with links. Changes nothing.
{
"type": "object",
"required": [
"repo"
],
"properties": {
"repo": {
"type": "string",
"description": "owner/name, or the repository's URL"
},
"cloud": {
"enum": [
"digitalocean",
"aws",
"gcp",
"azure"
],
"type": "string",
"description": "The cloud to plan for. Optional."
}
}
}{
"title": "Plan a deploy",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}status — Project status
Lists the user's projects on The Deployer, or one project: whether each is live, its live addresses, and its latest deployment and where that is. Changes nothing.
{
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "A project's id, name or repository. Leave out to list them all."
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "Project status",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}logs — Deployment logs
The log of a project's latest deployment, or of a given deployment, newest lines last, with secrets removed. errors_only keeps only errors and warnings. The lines are the build's and the app's own output. Changes nothing.
{
"type": "object",
"properties": {
"lines": {
"type": "integer",
"maximum": 400,
"minimum": 1,
"description": "How many lines, newest last. Default 80."
},
"project": {
"type": "string",
"description": "The project's id, name or repository. Optional with one project."
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
},
"errors_only": {
"type": "boolean",
"description": "Only errors and warnings"
},
"deployment_id": {
"type": "integer",
"description": "A specific deployment, instead of the latest"
}
}
}{
"title": "Deployment logs",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}redeploy — Redeploy a live project
Puts the latest code on a live project's branch online: pulls it and restarts the app, like Pull & Restart in The Deployer. Changes a live app. Only for a project that is already live. Takes a few minutes.
{
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "The live project's id, name or repository. Optional with one project."
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "Redeploy a live project",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}request_done_for_you — Request done-for-you help
Asks The Deployer's team to do it for the user: launch (put an app online in the user's own cloud account), launch_secure (the same, with exposed keys and other security problems fixed first) or move (move an app from another host, such as Heroku, into it). Tells the team, and returns the price, the delivery promise and the link where the user finishes the order and pays. Never charges anything.
{
"type": "object",
"required": [
"offer"
],
"properties": {
"note": {
"type": "string",
"description": "Anything the team should know, such as the current host or a deadline"
},
"repo": {
"type": "string",
"description": "The repository, if there is one"
},
"offer": {
"enum": [
"launch",
"launch_secure",
"move"
],
"type": "string"
}
}
}{
"title": "Request done-for-you help",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}guide — How to use The Deployer
The Deployer's playbooks, by topic: what The Deployer does, the order of an end-to-end deploy, what code needs to deploy and how to fix it, how failed deployments are fixed, and domains, scaling, env, databases, access, environments, servers, adoption and teams. Works without signing in. Changes nothing.
{
"type": "object",
"properties": {
"topic": {
"enum": [
"overview",
"end_to_end",
"readiness",
"fix_failed_deploy",
"env",
"domains",
"scaling",
"services",
"access",
"environments",
"servers",
"adopt",
"team"
],
"type": "string",
"description": "Default overview"
}
}
}{
"title": "How to use The Deployer",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}account — Account and connections
Who the connection acts for, what it may do (Operate or Limited), the connected cloud accounts and code hosts with their ids, the workspaces the person is a member of, and how many projects they can see. Changes nothing.
{
"type": "object",
"properties": {
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "Account and connections",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}project — Project in depth, with the next step
One project in depth: phase, services found in the repository, env names the code reads and which are still missing (never values), hosting plans with monthly costs, pending code-review changes, to-dos only the person can do, recent deployments, live URLs, and next_steps: what is left to do, in order. Changes nothing.
{
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "The project's id, name or repository (owner/name)."
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "Project in depth, with the next step",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}deployment — Deployment progress and failure guidance
Where a deployment is (every step), what it waits on (a health-check proposal or a manual step), and for a failed one: the kind of failure, what to do about it, and the last error lines. Defaults to the project's latest deployment. Changes nothing.
{
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "The project's id, name or repository. Optional with one project."
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
},
"wait_seconds": {
"type": "integer",
"maximum": 120,
"minimum": 0,
"description": "Seconds to wait for the status or step to change"
},
"deployment_id": {
"type": "integer",
"description": "A specific deployment, instead of the latest"
}
}
}{
"title": "Deployment progress and failure guidance",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}diagnose — Check a live server
Read-only checks on a live project: url (requests the project's live addresses from The Deployer's side), containers (what runs and its state), app_logs (the app's own recent output, secrets removed), resources (load, memory, disk) or web_server (the HTTPS proxy's log). Fixed commands only; changes nothing. All but url need a server (not managed services). Needs Deploy access on the project.
{
"type": "object",
"required": [
"project"
],
"properties": {
"node": {
"type": "string",
"description": "The server, default app-1"
},
"check": {
"enum": [
"url",
"containers",
"resources",
"web_server",
"app_logs"
],
"type": "string"
},
"lines": {
"type": "integer",
"maximum": 400,
"minimum": 10
},
"project": {
"type": "string",
"description": "The project's id, name or repository (owner/name)."
},
"container": {
"type": "string",
"description": "For app_logs: one container's name"
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "Check a live server",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}create_project — Create a project
Creates a project from a repository the person's connected code host can read, on one of their connected cloud accounts, and starts the repository scan. Nothing is deployed and nothing costs money yet. With one connected cloud, that one is used; otherwise cloud (a provider) or cloud_connection_id picks it. Needs Operate access.
{
"type": "object",
"required": [
"repo"
],
"properties": {
"name": {
"type": "string",
"description": "The project's name. Default: the repository's name"
},
"repo": {
"type": "string",
"description": "owner/name, or the repository's URL"
},
"cloud": {
"enum": [
"digitalocean",
"aws",
"gcp",
"azure"
],
"type": "string"
},
"branch": {
"type": "string",
"description": "The branch to deploy. Default: the repository's default"
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
},
"git_connection_id": {
"type": "integer"
},
"cloud_connection_id": {
"type": "integer"
}
}
}{
"title": "Create a project",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}set_env — Set env variables
Sets (or deletes) env variable values for the service a project deploys. Values are stored encrypted and are never returned. Other values are kept. On a live project, the services whose env changed are redeployed; otherwise the values apply on the next deployment. Multi-line values are stored as credential files. Needs Operate access.
{
"type": "object",
"required": [
"project"
],
"properties": {
"delete": {
"type": "array",
"items": {
"type": "string"
},
"description": "Names to remove"
},
"values": {
"type": "object",
"description": "Names to values, e.g. {\"API_URL\": \"https://...\"}",
"additionalProperties": {
"type": "string"
}
},
"project": {
"type": "string",
"description": "The project's id, name or repository (owner/name)."
},
"service": {
"type": "string",
"description": "Service id or name, when the project has several"
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "Set env variables",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}launch — Launch a project
The first (or a full) deployment of a project into the person's cloud, once a hosting plan is selected. Without confirm=true it changes nothing and returns the plan and its monthly cost. With confirm=true it creates resources the person's cloud provider bills them for; it takes 5 to 20 minutes. Needs Operate access.
{
"type": "object",
"required": [
"project"
],
"properties": {
"confirm": {
"type": "boolean",
"description": "true deploys; without it nothing is created"
},
"project": {
"type": "string",
"description": "The project's id, name or repository (owner/name)."
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
},
"confirm_cost": {
"type": "boolean",
"description": "true allows a plan above the account's cost ceiling"
}
}
}{
"title": "Launch a project",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}api_catalog — List the operations
Every operation of The Deployer's app available through this server, grouped: account, connections, projects, env, build, code, architecture, deploy, domains, scaling, access, services, environments, blueprints, servers, adopt, team. Each is marked as a read or a change. Works without signing in.
{
"type": "object",
"properties": {
"group": {
"enum": [
"account",
"connections",
"projects",
"env",
"build",
"code",
"architecture",
"deploy",
"fixes",
"domains",
"scaling",
"access",
"services",
"environments",
"blueprints",
"servers",
"adopt",
"team"
],
"type": "string"
}
}
}{
"title": "List the operations",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}api_schema — Describe an operation
The query and body fields of the operations at one path, for each method it has, with their types. Changes nothing.
{
"type": "object",
"required": [
"path"
],
"properties": {
"path": {
"type": "string",
"description": "e.g. /projects/12/scaling"
}
}
}{
"title": "Describe an operation",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}api_read — Read an operation's answer
Runs one read (GET) operation of The Deployer's app as the person: domains, scaling, schedules, databases and other cloud services, app access, environments, blueprints, servers and more. Changes nothing. Secrets are never returned. Documented at https://portal.thedploy.com/docs.
{
"type": "object",
"required": [
"path"
],
"properties": {
"path": {
"type": "string",
"description": "The operation's path with ids filled in, e.g. /projects/12/scaling"
},
"query": {
"type": "object",
"description": "Query parameters"
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "Read an operation's answer",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}api — Change something through an operation
Runs one change (POST, PUT, PATCH or DELETE) of The Deployer's app as the person, with the same permission checks the app applies: domains, scaling, start/stop and schedules, databases and other cloud services, app access, build inputs, code review, hosting plans, retries, environments, blueprints, servers, adoption and more. Needs Operate access. Some changes cost money or change a live app. Secrets are never returned. Documented at https://portal.thedploy.com/docs.
{
"type": "object",
"required": [
"method",
"path"
],
"properties": {
"body": {
"type": "object",
"description": "The JSON body, for POST, PUT and PATCH"
},
"path": {
"type": "string",
"description": "The operation's path with ids filled in, e.g. /projects/12/scaling"
},
"query": {
"type": "object",
"description": "Query parameters"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH",
"DELETE"
],
"type": "string"
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "Change something through an operation",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}fixes — Code problems to fix
Fix requests: problems in the person's code that stop a deploy, found by The Deployer (a failed deployment, or the repository check) and assigned to the person's coding agent. Lists the open ones, in every project or one. Changes nothing.
{
"type": "object",
"properties": {
"project": {
"type": "string",
"description": "The project's id, name or repository (owner/name)."
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "Code problems to fix",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}fix — One code problem in full
One fix request: the goal and rules (The Deployer's brief), and the evidence, which is what the build or app printed, fenced and marked as data from the repository and logs. Changes nothing.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The fix request's id, fr_..."
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "One code problem in full",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}claim_fix — Take a code problem
Assigns a fix request to this agent for 15 minutes, so no other agent works on it; claiming it again extends the time.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "Take a code problem",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}report_fix — Report the fix you pushed
Reports a pushed fix: the branch and the commit sha. The Deployer reads the commit from the git host, checks the change (no CI, agent settings or .env files; no secrets), then deploys it or opens a pull request for the person to ship, depending on the project's settings.
{
"type": "object",
"required": [
"id",
"branch",
"sha"
],
"properties": {
"id": {
"type": "string"
},
"sha": {
"type": "string",
"description": "The pushed commit's sha"
},
"note": {
"type": "string",
"description": "What changed, in a sentence or two"
},
"branch": {
"type": "string",
"description": "The branch the fix was pushed to"
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
}
}
}{
"title": "Report the fix you pushed",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}fix_status — Follow a fix
Where a fix request is: checked, deploying, live, or open again with a new error. wait_seconds waits up to 120 seconds for it to change. Changes nothing.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"workspace": {
"type": "string",
"description": "A teammate's workspace id. Default: your own."
},
"wait_seconds": {
"type": "integer",
"maximum": 120,
"minimum": 0
}
}
}{
"title": "Follow a fix",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
3 advertised
deploy_this_repo — Deploy this repository with The Deployer
Take the repository in the current folder (or the one named) from code to a live app in my own cloud with The Deployer, asking me before anything that costs money.
- repo
- A repository, if not the current folder
fix_my_deployment — Fix my failed deployment
Find out why my latest deployment on The Deployer failed, fix it (in my local code when that's where the problem is), and get it live.
- repo
- A repository, if not the current folder
make_it_deployable — Make this code deployable
Check whether the code in this folder will deploy, and fix what would stop it.
- repo
- A repository, if not the current folder
Resources
13 advertised
overview — What The Deployer is, your tools, and the rules
thedeployer://guide/overviewend_to_end — From a repository to a live app, step by step
thedeployer://guide/end_to_endreadiness — What code needs to deploy, and fixing it locally
thedeployer://guide/readinessfix_failed_deploy — A deployment failed: diagnose, fix, retry
thedeployer://guide/fix_failed_deployenv — Env variables, build inputs, credential files, env from Git and secret managers
thedeployer://guide/envdomains — Domains, DNS zones, delegation and HTTPS
thedeployer://guide/domainsscaling — Resize, start/stop and schedules
thedeployer://guide/scalingservices — Databases, caches, queues, buckets and email
thedeployer://guide/servicesaccess — Who can open the app
thedeployer://guide/accessenvironments — Dev/UAT/Staging environments and blueprints
thedeployer://guide/environmentsservers — Cloud, shared and own servers
thedeployer://guide/serversadopt — Adopt running apps, migrate with no downtime, move off Heroku
thedeployer://guide/adoptteam — Acting in a teammate's workspace
thedeployer://guide/team90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
- 2026-11-07: 2 of 2 checks answered
- 2026-11-09: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 2088 ms
- 95th percentile latency
- 2088 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 2088 ms · metadata changed · 23 tool(s), 13 resource(s), 0 resource template(s), 3 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http the-deployer-mcp-thedploy https://app.thedploy.com/api/v1/mcpCodex
codex mcp add the-deployer-mcp-thedploy --url https://app.thedploy.com/api/v1/mcpCursor
{
"mcpServers": {
"the-deployer-mcp-thedploy": {
"url": "https://app.thedploy.com/api/v1/mcp"
}
}
}Cline
{
"mcpServers": {
"the-deployer-mcp-thedploy": {
"type": "streamableHttp",
"url": "https://app.thedploy.com/api/v1/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"the-deployer-mcp-thedploy": {
"type": "http",
"url": "https://app.thedploy.com/api/v1/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http the-deployer-mcp-thedploy https://app.thedploy.com/api/v1/mcpClaude Desktop
https://app.thedploy.com/api/v1/mcpWindsurf
{
"mcpServers": {
"the-deployer-mcp-thedploy": {
"serverUrl": "https://app.thedploy.com/api/v1/mcp"
}
}
}Let your agent find its tools
Find servers like The Deployer MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other cloud and infrastructure servers
Do you run The Deployer MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.