Portainer MCP Server
by BirajMainali
A Model Context Protocol (MCP) server implementation for Portainer, enabling AI assistants to interact with Docker containers and services through Portainer's API. It allows AI to manage Docker resources through Portainer.
View on GitHub
Last updated: N/A
Portainer MCP Server
A Model Context Protocol (MCP) server implementation for Portainer, enabling AI assistants to interact with Docker containers and services through Portainer's API.
Features
- Docker container management (create, start, delete, fetch logs)
- Docker image management (fetch, delete unused, clear build cache)
- Docker network operations (inspect, fetch)
- Docker service management (fetch, logs)
- Resource limit management for containers
Project Structure
portainer-ce-mcp/
├── src/
│ ├── api/
│ │ └── portainer.ts # Portainer API integration
│ ├── constants/
│ │ └── index.ts # Tool names and other constants
│ ├── types/
│ │ └── index.ts # TypeScript type definitions
│ └── main.ts # Main server implementation
├── package.json # Project dependencies
├── package-lock.json # Dependency lock file
├── deno.json # Deno configuration
└── README.md # Project documentation
Prerequisites
- Deno
- Portainer instance with API access
- Docker installed and running
Installation
- Clone the repository:
git https://github.com/BirajMainali/poratiner-ce-mcp-server.git
cd portainer-ce-mcp
Configuration
The server requires the following environment variables:
PORTAINER_URL
: The URL of your Portainer instancePORTAINER_API_KEY
: Your Portainer API keyPORTAINER_ENV_ID
: Your Poratiner Environment Id
API Tools
The server provides the following tools for AI assistants:
Container Management
FETCH_DOCKER_CONTAINERS
: List all containersCREATE_DOCKER_CONTAINER
: Create a new containerSTART_DOCKER_CONTAINER
: Start a containerDELETE_DOCKER_CONTAINER
: Remove a containerFETCH_CONTAINER_LOGS
: Get container logsUPDATE_CONTAINER_RESOURCE_LIMITS
: Update container resourcesDELETE_STOPPED_CONTAINERS
: Clean up stopped containers
Image Management
FETCH_IMAGES
: List all imagesDELETE_IMAGE_BUILD_CACHE
: Clear build cacheDELETE_UNUSED_IMAGES
: Remove unused images
Network Operations
FETCH_NETWORKS
: List all networksINSPECT_NETWORK
: Get network details
Service Management
FETCH_SERVICES
: List all servicesFETCH_SERVICE_LOG
: Get service logs
Development
Building
deno compile --allow-env --allow-read --allow-net --env-file=.env src/main.ts
Inspect MCP Server
npx @modelcontextprotocol/inspector deno run --allow-env --allow-read --allow-net --env-file=.env src/main.ts
MCP Config
{
"mcpServers": {
"poratiner": {
"command": "C:\\MCP\\portainer-ce-mcp\\src.exe", // use executable path
"args": [
"y"
]
}
}
}
License
MIT
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request