A Model Context Protocol (MCP) server implementation for Portainer, enabling AI assistants to interact with Docker containers and services through Portainer's API.
- 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
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
- Deno
- Portainer instance with API access
- Docker installed and running
- Clone the repository:
git https://github.com/BirajMainali/poratiner-ce-mcp-server.git
cd portainer-ce-mcpThe 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
The server provides the following tools for AI assistants:
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
FETCH_IMAGES: List all imagesDELETE_IMAGE_BUILD_CACHE: Clear build cacheDELETE_UNUSED_IMAGES: Remove unused images
FETCH_NETWORKS: List all networksINSPECT_NETWORK: Get network details
FETCH_SERVICES: List all servicesFETCH_SERVICE_LOG: Get service logs
deno compile --allow-env --allow-read --allow-net --env-file=.env src/main.tsnpx @modelcontextprotocol/inspector deno run --allow-env --allow-read --allow-net --env-file=.env src/main.ts{
"mcpServers": {
"poratiner": {
"command": "C:\\MCP\\portainer-ce-mcp\\src.exe", // use executable path
"args": [
"y"
]
}
}
}MIT
- 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
