Puppet Enterprise MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Puppet Enterprise MCP Serverrun Puppet on all production nodes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Puppet Enterprise MCP Server
An MCP (Model Context Protocol) server that exposes the full Puppet Enterprise API to AI assistants. Connect Claude, Cursor, or any MCP-compatible client to manage your Puppet infrastructure through natural language.
Tools (60+)
Orchestrator
Tool | Description |
| Run Puppet on nodes (enforce or noop) |
| Execute a Puppet task on nodes |
| Execute a Puppet plan |
| Stop a running job |
| Stop a running plan |
| List orchestrator jobs |
| Get job details |
| Get nodes in a job |
| Get job report |
| Get job events |
| List plan jobs |
| Get plan job details |
| Get plan job events |
| List available tasks |
| Get task details |
| List available plans |
| Get plan details |
| List scheduled jobs |
| Delete a scheduled job |
| Check node reachability |
| Get node usage details |
Node Classifier
Tool | Description |
| List all node groups |
| Get a node group |
| Create a node group |
| Update a node group |
| Delete a node group |
| Get classification for a node |
| List known classes |
| List environments |
| Get node check-in history |
| Refresh class definitions |
| Unpin nodes from all groups |
RBAC
Tool | Description |
| List all PE users |
| Get user details |
| Get current authenticated user |
| Create a local user |
| Update a user |
| Delete a user |
| Revoke user access |
| Reinstate a revoked user |
| List RBAC roles |
| Get a role |
| Create a role |
| List user groups |
| List available permissions |
| Generate an auth token |
Code Manager
Tool | Description |
| Deploy code to environments |
| Check deployment status |
PuppetDB
Tool | Description |
| Run a PQL query |
| List all nodes |
| Get node details |
| Get node facts |
| List facts |
| List Puppet reports |
| List catalogs |
| Query resources |
| List all fact names |
| List PuppetDB environments |
| Get inventory data |
Status
Tool | Description |
| PE console services status |
| Orchestrator status |
| Puppet Server status |
| PuppetDB status |
Related MCP server: Portainer MCP Server
Setup
Prerequisites
A Puppet Enterprise instance
A PE API token (generate via
puppet-access loginor the RBAC API)Node.js 20+
Environment Variables
Variable | Required | Description |
| Yes | PE primary server hostname |
| Yes | PE API authentication token |
| No | CA certificate PEM content |
| No | Set |
Install & Build
npm install
npm run buildRun Directly
PUPPET_HOST=puppet.example.com PUPPET_TOKEN=your-token node dist/index.jsDocker
docker build -t puppet-mcp-server .
docker run -e PUPPET_HOST=puppet.example.com -e PUPPET_TOKEN=your-token puppet-mcp-serverMCP Client Configuration
Claude Desktop / Claude Code
Add to your MCP settings:
{
"mcpServers": {
"puppet": {
"command": "node",
"args": ["/path/to/puppet-mcp/dist/index.js"],
"env": {
"PUPPET_HOST": "puppet.example.com",
"PUPPET_TOKEN": "your-pe-api-token"
}
}
}
}Hosting for Customers (SSE/Streamable HTTP)
To host this as a remote MCP server over HTTP for multiple customers, wrap the stdio server with a transport adapter. For example using @modelcontextprotocol/sdk's SSEServerTransport or StreamableHTTPServerTransport:
import express from "express";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
// Create per-customer server instances with their own PUPPET_HOST/PUPPET_TOKENSee the MCP specification for transport options.
Generating a PE API Token
# On the PE primary server:
puppet-access login --lifetime 1y
# Or via the API:
curl -k -X POST https://puppet.example.com:4433/rbac-api/v1/auth/token \
-H "Content-Type: application/json" \
-d '{"login": "admin", "password": "your-password", "lifetime": "1y"}'License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/TheDevFactory/puppet-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server