{"id":27698548,"url":"https://github.com/pulumi/mcp-server","last_synced_at":"2025-04-26T19:32:14.105Z","repository":{"id":286623647,"uuid":"960003907","full_name":"pulumi/mcp-server","owner":"pulumi","description":"Pulumi MCP Server","archived":false,"fork":false,"pushed_at":"2025-04-10T12:48:27.000Z","size":193,"stargazers_count":14,"open_issues_count":0,"forks_count":3,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-04-26T12:55:16.179Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pulumi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-03T17:46:47.000Z","updated_at":"2025-04-20T23:15:21.000Z","dependencies_parsed_at":"2025-04-25T17:08:10.641Z","dependency_job_id":null,"html_url":"https://github.com/pulumi/mcp-server","commit_stats":null,"previous_names":["pulumi/mcp-server"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulumi%2Fmcp-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulumi%2Fmcp-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulumi%2Fmcp-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pulumi%2Fmcp-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pulumi","download_url":"https://codeload.github.com/pulumi/mcp-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251041398,"owners_count":21527185,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-04-25T16:57:37.909Z","updated_at":"2025-04-26T19:32:14.086Z","avatar_url":"https://github.com/pulumi.png","language":"TypeScript","funding_links":[],"categories":["Cloud Infrastructure","Cloud \u0026 DevOps MCP Servers","Cloud Platforms","Production-Ready Servers","官方 MCP 服务器列表","サーバー実装","Developer Tools","🌐 Web Development","📂 By Category","Server Implementations"],"sub_categories":["🏗️ Infrastructure as Code","☁️ \u003ca name=\"cloud-platforms\"\u003e\u003c/a\u003eクラウドプラットフォーム","How to Submit","☁️ Cloud \u0026 Infrastructure","☁️ \u003ca name=\"cloud-platforms\"\u003e\u003c/a\u003eCloud Platforms"],"readme":"# Pulumi MCP Server\n\n\u003e **Note:** This MCP server is currently under active development. Its API (including available commands and their arguments) is experimental and may introduce breaking changes without notice. Please file an issue on [GitHub](https://github.com/pulumi/mcp-server/issues) if you encounter bugs or need support for additional Pulumi commands.\n\nA server implementing the [Model Context Protocol](https://modelcontextprotocol.io) (MCP) for interacting with Pulumi CLI using the Pulumi Automation API and Pulumi Cloud API.\n\nThis package allows MCP clients to perform Pulumi operations like retrieving package information, previewing changes, deploying updates, and retrieving stack outputs programmatically without needing the Pulumi CLI installed directly in the client environment.\n\n## Usage\n\nThe Pulumi CLI has to be installed on you machine.\n\nThis package is primarily intended to be integrated into applications that can use MCP servers as AI tools. For example, here is how you can include Pulumi MCP Server in Claude desktop's MCP configuration file:\n\n```json\n{\n  \"mcpServers\": {\n    \"pulumi\": {\n      \"command\": \"npx\",\n      \"args\": [\"@pulumi/mcp-server@latest\"]\n    }\n  }\n}\n```\n\n## Docker Container\n\nYou can also run the Pulumi MCP Server as a Docker container. This approach eliminates the need to install Node.js and the package dependencies directly on your host machine.\n\n### Building the Container\n\nTo build the container:\n\n```bash\ndocker build -t pulumi/mcp-server:latest .\n```\n\n### Using with MCP Clients\n\nTo use the containerized server with MCP clients, you'll need to configure the client to use the Docker container. For example, in Claude desktop's MCP configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"pulumi\": {\n      \"command\": \"docker\",\n      \"args\": [\"run\", \"-i\", \"--rm\", \"pulumi/mcp-server:latest\"]\n    }\n  }\n}\n```\n\nFor Pulumi operations that require access to local Pulumi projects, you'll need to mount the appropriate directories. For example, if your Pulumi project is in `~/projects/my-pulumi-app`:\n\n```json\n{\n  \"mcpServers\": {\n    \"pulumi\": {\n      \"command\": \"docker\",\n      \"args\": [\"run\", \"-i\", \"--rm\", \"-v\", \"~/projects/my-pulumi-app:/app/project\", \"pulumi/mcp-server:latest\"]\n    }\n  }\n}\n```\n\nThen when using the MCP tools, you would reference the project directory as `/app/project` in your requests.\n\n## Available Commands\n\nThe server exposes handlers for the following Pulumi operations, callable via MCP requests:\n\n*   **`preview`**: Runs `pulumi preview` on a specified stack.\n    *   `workDir` (string, required): The working directory containing the `Pulumi.yaml` project file.\n    *   `stackName` (string, optional): The stack name to operate on (defaults to 'dev').\n*   **`up`**: Runs `pulumi up` to deploy changes for a specified stack.\n    *   `workDir` (string, required): The working directory containing the `Pulumi.yaml` project file.\n    *   `stackName` (string, optional): The stack name to operate on (defaults to 'dev').\n*   **`stack-output`**: Retrieves outputs from a specified stack after a successful deployment.\n    *   `workDir` (string, required): The working directory containing the `Pulumi.yaml` project file.\n    *   `stackName` (string, optional): The stack name to retrieve outputs from (defaults to 'dev').\n    *   `outputName` (string, optional): The specific stack output name to retrieve. If omitted, all outputs for the stack are returned.\n*   **`get-resource`**: Returns information about a specific Pulumi Registry resource, including its inputs and outputs.\n    *   `provider` (string, required): The cloud provider (e.g., 'aws', 'azure', 'gcp', 'random') or `github.com/org/repo` for Git-hosted components.\n    *   `module` (string, optional): The module to query (e.g., 's3', 'ec2', 'lambda').\n    *   `resource` (string, required): The resource type name (e.g., 'Bucket', 'Function', 'Instance').\n*   **`list-resources`**: Lists available resources within a Pulumi provider package, optionally filtered by module.\n    *   `provider` (string, required): The cloud provider (e.g., 'aws', 'azure', 'gcp', 'random') or `github.com/org/repo` for Git-hosted components.\n    *   `module` (string, optional): The module to filter by (e.g., 's3', 'ec2', 'lambda').\n\n## Development\n\n1.  Clone the repository.\n2.  Install dependencies: `make ensure`\n3.  Build the project: `make build`\n4.  Test the project: `make test`\n\n## License\n\nThis project is licensed under the Apache-2.0 License. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulumi%2Fmcp-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpulumi%2Fmcp-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpulumi%2Fmcp-server/lists"}