Version: 0.1.28
Portainer Agent MCP Server + A2A Agent
Agent package for Portainer container management — Docker environments, stacks, Kubernetes clusters, registries, users, and edge devices.
This repository is actively maintained - Contributions are welcome!
The MCP Server can be run in two modes: stdio (for local testing) or http (for networked access).
PORTAINER_URL: The URL of the target Portainer service.PORTAINER_TOKEN: The API token or access token.PORTAINER_SSL_VERIFY: Verify SSL certificate (default: True).
export PORTAINER_URL="http://localhost:9000"
export PORTAINER_TOKEN="your_token"
portainer-mcp --transport "stdio"export PORTAINER_URL="http://localhost:9000"
export PORTAINER_TOKEN="your_token"
portainer-mcp --transport "http" --host "0.0.0.0" --port "8000"export PORTAINER_URL="http://localhost:9000"
export PORTAINER_TOKEN="your_token"
portainer-agent --provider openai --model-id gpt-4o --api-key sk-...docker build -t portainer-agent .docker run -d \
--name portainer-agent \
-p 8000:8000 \
-e TRANSPORT=http \
-e PORTAINER_URL="http://your-service:9000" \
-e PORTAINER_TOKEN="your_token" \
knucklessg1/portainer-agent:latestservices:
portainer-agent:
image: knucklessg1/portainer-agent:latest
environment:
- HOST=0.0.0.0
- PORT=8000
- TRANSPORT=http
- PORTAINER_URL=http://your-service:9000
- PORTAINER_TOKEN=your_token
ports:
- 8000:8000{
"mcpServers": {
"portainer": {
"command": "uv",
"args": [
"run",
"--with",
"portainer-agent",
"portainer-mcp"
],
"env": {
"PORTAINER_URL": "http://your-service:9000",
"PORTAINER_TOKEN": "your_token"
}
}
}
}python -m pip install portainer-agentuv pip install portainer-agentThis agent uses pydantic-graph orchestration for intelligent routing and optimal context management.
---
title: Portainer Agent Graph Agent
---
stateDiagram-v2
[*] --> RouterNode: User Query
RouterNode --> DomainNode: Classified Domain
RouterNode --> [*]: Low confidence / Error
DomainNode --> [*]: Domain Result
- RouterNode: A fast, lightweight LLM (e.g.,
nvidia/nemotron-3-super) that classifies the user's query into one of the specialized domains. - DomainNode: The executor node. For the selected domain, it dynamically sets environment variables to temporarily enable ONLY the tools relevant to that domain, creating a highly focused sub-agent (e.g.,
gpt-4o) to complete the request. This preserves LLM context and prevents tool hallucination.