Pulumi MCP Server
OFFICIAL SERVERPulumi's hosted MCP endpoint for stacks, resource search, registry schemas and Neo tasks
Local Pulumi server that looks up registry schemas and runs preview, up and refresh on your stacks
Official · Pulumi Corporation TypeScript Local · stdio DevOps and monitoringCloud platforms
20 popularity score ↓ 8.9k/wk
Opens the app, which asks before it adds the server.
claude mcp add pulumi -- npx -y @pulumi/mcp-server@latest stdio{
"mcpServers": {
"pulumi": {
"command": "npx",
"args": [
"-y",
"@pulumi/mcp-server@latest",
"stdio"
]
}
}
}{
"mcpServers": {
"pulumi": {
"command": "npx",
"args": [
"-y",
"@pulumi/mcp-server@latest",
"stdio"
]
}
}
}{
"servers": {
"pulumi": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@pulumi/mcp-server@latest",
"stdio"
]
}
}
}[mcp_servers.pulumi]
command = "npx"
args = ["-y", "@pulumi/mcp-server@latest", "stdio"]gemini mcp add --scope user pulumi npx -- -y @pulumi/mcp-server@latest stdioOpens the app, which asks before it adds the server.
claude mcp add pulumi -- docker run -i --rm mcp/pulumi:latest stdio{
"mcpServers": {
"pulumi": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"mcp/pulumi:latest",
"stdio"
]
}
}
}{
"mcpServers": {
"pulumi": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"mcp/pulumi:latest",
"stdio"
]
}
}
}{
"servers": {
"pulumi": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"mcp/pulumi:latest",
"stdio"
]
}
}
}[mcp_servers.pulumi]
command = "docker"
args = ["run", "-i", "--rm", "mcp/pulumi:latest", "stdio"]gemini mcp add --scope user pulumi docker -- run -i --rm mcp/pulumi:latest stdioPULUMI_ACCESS_TOKEN |
Optional: Pulumi Cloud access token; needed by pulumi-resource-search and neo-task-launcher, and for stack operations inside the container. |
|---|---|
PULUMI_API_URL |
Optional: Pulumi Cloud API address for resource search; https://api.pulumi.com by default. |
MCP_HTTP_HOST |
Optional: Address the http mode binds to; 0.0.0.0 by default. |
MCP_CORS_MODE |
Optional: CORS mode for http mode: strict (default), development or disabled. |
MCP_ALLOWED_ORIGINS |
Optional: Comma-separated browser origins allowed in http mode. |
In a container, a setting goes in with -e NAME=value after docker run.
This is the self-run edition of Pulumi's MCP server, published on npm as @pulumi/mcp-server by Pulumi Corporation. It runs on your machine over stdio and works through the Pulumi CLI you already have installed.
It does two kinds of work. The registry tools ask the local CLI for a provider's schema (via `pulumi package get-schema`), cache it in a .cache folder beside the installed package, and answer questions about resource types, functions and property types, so an assistant can write Pulumi code against real schemas. The CLI tools use Pulumi's Automation API on a project folder you name: they preview changes, deploy them with `pulumi up`, refresh state against the cloud, and read stack outputs. Each takes a working directory and a stack name that defaults to 'dev'; preview, up and refresh create that stack if it does not exist yet.
Two tools call Pulumi Cloud directly with a PULUMI_ACCESS_TOKEN: a resource search across your organisation (20 results by default, set with `top`; it uses your CLI's default org unless `org` is given), and a launcher that hands a task to Pulumi Neo and returns a link to it. The package also ships two prompts, deploy-to-aws and convert-terraform-to-typescript.
The 0.2.0 code registers 12 tools, one more than the README's table: deploy-to-aws is exposed as a tool as well as a prompt, and the convert-terraform-to-typescript prompt is not in the README at all (dist/index.js on unpkg). Pulumi's current docs page now describes only its hosted server at mcp.ai.pulumi.com, which does not run pulumi up.
| Runtime | Node.jsorDocker |
|---|
Node.js with npx for the npm way, or Docker for the mcp/pulumi image. The Pulumi CLI must be installed and on PATH on the machine that runs the server. Deploy, preview and refresh need a Pulumi project folder, a logged-in Pulumi backend and the cloud credentials that project uses. The resource search and Neo tools need a Pulumi Cloud access token in PULUMI_ACCESS_TOKEN; Neo is an Essentials, Pro or Enterprise feature billed to the organisation.
pulumi-cli-up deploys without a confirmation step of its own; any approval comes from the client. Stack tools default to the stack 'dev' when none is named. Resource search accepts field filters and AND/OR/NOT but no wildcards, fuzzy matching or boosting. The `http` mode listens on 0.0.0.0:3000 by default (MCP_HTTP_HOST and --port change it) and has no sign-in of its own. 0.2.0 (September 2025) is the latest release, its GitHub repository (github.com/pulumi/mcp-server) did not answer when read, and Pulumi's docs now point to the hosted server instead. The README's Docker example mounts a project with a ~ path; use an absolute path.
Suits someone who already uses the Pulumi CLI and wants an assistant to look up provider schemas and run preview, up and refresh against projects on their own machine. Because it can deploy and change real cloud resources with your credentials, it fits personal or sandbox stacks more than shared production ones. If you mainly need to list stacks, search resources, check policy violations or hand work to Neo without installing anything, Pulumi's hosted server (pulumi-remote-mcp-server, mcp.ai.pulumi.com) is the maintained option and never runs pulumi up; it lacks this server's local deploy tools.
pulumi-registry-list-resourcespulumi-registry-list-functionspulumi-registry-get-resourcepulumi-registry-get-functionpulumi-registry-get-typepulumi-cli-previewpulumi-cli-uppulumi-cli-stack-outputpulumi-cli-refreshpulumi-resource-searchneo-task-launcherdeploy-to-aws