Pulumi MCP Server

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

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add pulumi -- npx -y @pulumi/mcp-server@latest stdio
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "pulumi": {
      "command": "npx",
      "args": [
        "-y",
        "@pulumi/mcp-server@latest",
        "stdio"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "pulumi": {
      "command": "npx",
      "args": [
        "-y",
        "@pulumi/mcp-server@latest",
        "stdio"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "pulumi": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@pulumi/mcp-server@latest",
        "stdio"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.pulumi]
command = "npx"
args = ["-y", "@pulumi/mcp-server@latest", "stdio"]
Gemini CLITerminal
gemini mcp add --scope user pulumi npx -- -y @pulumi/mcp-server@latest stdio
Local (container)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add pulumi -- docker run -i --rm mcp/pulumi:latest stdio
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "pulumi": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp/pulumi:latest",
        "stdio"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "pulumi": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp/pulumi:latest",
        "stdio"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "pulumi": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp/pulumi:latest",
        "stdio"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.pulumi]
command = "docker"
args = ["run", "-i", "--rm", "mcp/pulumi:latest", "stdio"]
Gemini CLITerminal
gemini mcp add --scope user pulumi docker -- run -i --rm mcp/pulumi:latest stdio

Settings 5

PULUMI_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.

What it does

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.

What it needs

RuntimeNode.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.

Limits

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.

Who it suits

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.

Tools 12

pulumi-registry-list-resources
List the resource types a provider or module offers
pulumi-registry-list-functions
List the function types a provider or module offers
pulumi-registry-get-resource
Return the schema and details of one registry resource
pulumi-registry-get-function
Return the schema and details of one provider function
pulumi-registry-get-type
Return the schema of a referenced property type
pulumi-cli-preview
Show the changes a stack update would make, with a diff
pulumi-cli-up
Deploy a project's stack, creating or changing cloud resources
pulumi-cli-stack-output
Read the output values of an existing stack
pulumi-cli-refresh
Update stack state to match what exists in the cloud
pulumi-resource-search
Search and count deployed resources in a Pulumi Cloud organisation
neo-task-launcher
Start a Pulumi Neo task and return its link
deploy-to-aws
Return Pulumi's guide for deploying an existing app to AWS

Similar servers