Connect the Pulumi MCP server to Unblocked to give AI agents live infrastructure context
Unblocked connects to Pulumi’s MCP server so AI coding agents can query your stacks, cloud resources, and policy violations live — then its Context Engine reconciles what they find with the code, pull requests, and conversations behind your infrastructure.
Pulumi integration details
What the Pulumi integration adds
Infrastructure code shows what a program declares, not what is actually deployed. Which stacks exist, which resources they manage, and which ones break policy live in Pulumi Cloud, so an agent changing a Pulumi program works without knowing the state it will touch. Pulumi’s MCP server exposes that state and the Pulumi Registry to AI agents, and Unblocked connects to it once so every agent can ask about your infrastructure without its own Pulumi setup.
This is a third-party MCP server: Pulumi hosts and maintains it, and Unblocked connects to it as a verified MCP server. Nothing is ingested or indexed — Unblocked calls the read-only tools you select at the moment a question needs them, so answers reflect your stacks and resources as Pulumi Cloud reports them now.
Wiring Pulumi’s MCP server straight into an agent gives it a resource search. Unblocked’s Context Engine reasons across those results and your other sources — following a policy violation on a storage bucket to the pull request that changed its stack, the ticket that requested it, and the Slack thread where the exception was discussed — and returns one cited answer.
Once connected, any MCP-compatible coding agent — Claude Code, Cursor, Devin, GitHub Copilot, Codex — reaches Pulumi context through a single Unblocked MCP server connection.
What you get
- Live stacks and resources — Agents list the stacks in your Pulumi Cloud organization and search the resources they manage across clouds, as they stand now rather than as a snapshot.
- Policy violations in context — Agents see which resources violate your Pulumi policies, so a fix to an infrastructure program starts from the actual compliance problem.
- Read-only, no-deploy tool control — Only read-only tools are offered, so agents can inspect stacks and resources but never start Neo tasks or change infrastructure. Choose which tools Unblocked may call from Settings → Data Sources.
- Context Engine reasoning — Pulumi results are reconciled with your code, pull requests, tickets, and conversations, so a resource leads to the change and the decision behind it — with citations.
How to connect Pulumi to Unblocked
Prerequisites
- An Unblocked account (free to start).
- A Pulumi Cloud organization and a Pulumi access token that can read it — resource search requires the Essentials, Pro, or Enterprise edition.
- An MCP-compatible coding agent (Claude Code, Cursor, Devin, etc.) to use the context in your editor.
Step 1: Connect Pulumi to Unblocked
- In Unblocked, go to Settings → Data Sources → Connect another data source, and under Cloud Infrastructure select Pulumi.
- The Pulumi MCP server URL is filled in for you. Choose HTTP Headers, add an Authorization header with your Pulumi access token as Bearer YOUR_TOKEN and an X-Pulumi-Org header with your organization name, then click Connect.
- Once Unblocked discovers the server’s tools, select the read-only tools it may use and click Save Settings.
Step 2: Install the Unblocked MCP server
On macOS or Linux, one command auto-detects and configures the supported agents on your machine:
curl -fsSL https://getunblocked.com/install-mcp.sh | bash On Windows, or when you prefer remote MCP, add the server manually using the configuration below, or follow the manual install guide .
Claude Code
Add the remote server, then run /mcp in Claude Code, select unblocked, and log in via OAuth:
claude mcp add -s user --transport http unblocked https://getunblocked.com/api/mcpsseCursor
Open View: Open MCP Settings → Add Custom MCP, add the server, then click Connect to authenticate via OAuth:
{
"mcpServers": {
"unblocked": {
"url": "https://getunblocked.com/api/mcpsse"
}
}
}Other MCP clients
Any MCP-compatible client (Devin, Codex, VS Code, Claude Desktop, and others) can connect to the remote server with OAuth:
https://getunblocked.com/api/mcpssePulumi MCP server tools
Pulumi hosts and maintains this MCP server. Unblocked calls only the read-only tools you select, at the moment a question needs them:
get-stacksReturns the stacks in your Pulumi Cloud organization.resource-searchSearches the cloud resources your Pulumi stacks manage and returns the matches.get-policy-violationsReturns the policy violations Pulumi Cloud has recorded against your resources.get-usersReturns the members of your Pulumi Cloud organization.list-resourcesLists the resource types available in the Pulumi Registry.get-resourceReturns the details of one resource type from the Pulumi Registry.
Connect Pulumi to Claude Code, Cursor, and other AI agents
To give Claude Code, Cursor, GitHub Copilot, Codex, or another MCP-compatible AI coding agent access to Pulumi context, connect Pulumi to Unblocked and add the single Unblocked MCP server to your agent.
Unblocked acts as the MCP context layer for your Pulumi data, searching stacks and resources alongside your other connected sources and returning cited results through these tools:
context_researchResearches a question across your connected sources and calls the Pulumi tools you selected when stacks, resources, or policy violations are relevant, returning a synthesized answer with citations.context_get_urlsFetches the full content behind URLs your agent encounters across connected sources — Jira, Linear, Notion, Confluence, Slack, GitHub, and more.
Questions to ask an AI agent about Pulumi
Questions you (or your agent) can ask Unblocked about your Pulumi data:
Which resources in the production stack violate our tagging policy, and which pull request last changed them?
What stacks does the payments service deploy, and is there a ticket about splitting them?
Who added this database to the staging stack, and was there a Slack thread about its sizing?
What does the Pulumi Registry say about this resource type, and how have we configured it elsewhere in our code?