portainer-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORTAINER_URL | Yes | Portainer base URL (e.g. https://portainer.example.com:9443) | |
| PORTAINER_PASSWORD | Yes | Portainer password | |
| PORTAINER_USERNAME | Yes | Portainer username | |
| PORTAINER_VERIFY_SSL | No | Set to 'false' for self-signed certificates | true |
| PORTAINER_DEFAULT_ENDPOINT | No | Default endpoint ID for container/image/stack operations | 1 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| portainer_statusA | Check Portainer connection and authentication status. |
| portainer_endpoints_listB | List all Portainer environments (endpoints). |
| portainer_endpoint_inspectC | Get details of a specific Portainer environment (endpoint). Args: endpoint_id: The ID of the endpoint to inspect |
| portainer_stacks_listA | List all Portainer stacks. |
| portainer_stack_inspectA | Get details of a stack including its compose file content. Args: stack_id: The ID of the stack to inspect |
| portainer_stack_deployA | Deploy a new stack from a docker-compose string. Args: name: Name of the new stack compose_content: Docker Compose file content (YAML string) endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_stack_updateA | Update an existing stack, optionally with new compose content. Args: stack_id: The ID of the stack to update compose_content: New Docker Compose content (YAML). If omitted, redeploys existing. endpoint_id: Endpoint ID (uses default if omitted) |
| portainer_stack_deleteA | Delete a stack. Args: stack_id: The ID of the stack to delete |
| portainer_stack_startC | Start a stopped stack. Args: stack_id: The ID of the stack to start |
| portainer_stack_stopB | Stop a running stack. Args: stack_id: The ID of the stack to stop |
| portainer_containers_listA | List containers on an endpoint. Args: endpoint_id: Target endpoint ID (uses default if omitted) show_all: If true, show all containers including stopped ones |
| portainer_container_inspectA | Get detailed information about a container. Args: container_id: Container ID or name endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_container_startB | Start a stopped container. Args: container_id: Container ID or name endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_container_stopB | Stop a running container. Args: container_id: Container ID or name endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_container_restartB | Restart a container. Args: container_id: Container ID or name endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_container_removeA | Remove a container. Args: container_id: Container ID or name force: Force removal of a running container (default false) endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_container_logsA | Get container logs. Args: container_id: Container ID or name tail: Number of lines from the end of the logs (default 100, max 1000) endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_container_logs_grepA | Search container logs for lines matching a regex pattern. Returns only matching lines (with optional context). Useful for finding specific errors, status codes, or keywords without downloading the full log. Args: container_id: Container ID or name pattern: Regex pattern to search for (case-insensitive) tail: Number of log lines to fetch before filtering (default 500, max 1000) context_lines: Lines of context around each match (default 0, max 5) endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_stack_logs_errorsA | Scan all running containers in a stack for errors. Fetches logs from every running container whose name starts with the given stack name and filters for common error patterns: HTTP 4xx/5xx, exceptions, fatal/critical/emergency log levels, panics, OOM, PHP errors, segfaults, etc. Args: stack_name: Stack name prefix (e.g. "taylor", "blog", "somnlyx") tail: Log lines per container to scan (default 500, max 1000) endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_laravel_errorsA | Get Laravel application-level errors from storage/logs/laravel.log. Executes inside each running backend/horizon container of a stack to read the actual Laravel error log (not nginx access log). Returns production.ERROR entries with exception messages and context. Use this AFTER portainer_stack_logs_errors to get root cause details behind HTTP 500 errors seen in nginx access logs. Args: stack_name: Stack name prefix (e.g. "taylor", "blog", "somnlyx") tail: Number of error lines to return per container (default 50, max 200) endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_laravel_tinkerA | Execute PHP code via Laravel Tinker inside a stack's backend container. Finds a running backend container for the given stack and runs
Args: stack_name: Stack name prefix (e.g. "taylor", "blog", "somnlyx") code: PHP code to execute (will be passed to tinker --execute) endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_container_statsA | Get live CPU, memory, and network stats for a container. Args: container_id: Container ID or name endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_container_execA | Execute a command inside a running container and return its output. Args: container_id: Container ID or name command: Shell command to execute (run via sh -c) workdir: Working directory inside the container user: User to run the command as (e.g. 'root', '1000:1000') endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_images_listA | List Docker images on an endpoint. Args: endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_image_inspectA | Get detailed information about a Docker image. Args: image_id: Image ID or name:tag endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_image_pullA | Pull a Docker image from a registry. Args: image_name: Image name (e.g. 'nginx', 'ghcr.io/org/app') tag: Image tag (default 'latest') registry_auth: Optional base64-encoded JSON ({"username":..,"password":..,"serveraddress":..}) forwarded as X-Registry-Auth. Required for private registries. endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_image_removeA | Remove a Docker image. Args: image_id: Image ID or name:tag endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_volumes_listB | List Docker volumes on an endpoint. Args: endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_volume_inspectA | Get detailed information about a Docker volume. Args: volume_name: Volume name endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_volume_createA | Create a Docker volume. Args: name: Volume name driver: Volume driver (default 'local') labels: Optional labels as key-value pairs endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_volume_removeA | Remove a Docker volume. Args: volume_name: Volume name force: Force removal even if in use (default false) endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_networks_listC | List Docker networks on an endpoint. Args: endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_network_inspectB | Get detailed information about a Docker network. Args: network_id: Network ID or name endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_network_createA | Create a Docker network. Args: name: Network name driver: Network driver (default 'bridge'; use 'overlay' for Swarm) internal: Restrict external access (default false) labels: Optional labels as key-value pairs endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_network_removeA | Remove a Docker network. Args: network_id: Network ID or name endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_network_connectB | Connect a container to a network. Args: network_id: Network ID or name container_id: Container ID or name endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_network_disconnectA | Disconnect a container from a network. Args: network_id: Network ID or name container_id: Container ID or name force: Force disconnect (default false) endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_docker_infoA | Get Docker system information for an endpoint (OS, CPU, memory, containers count, etc). Args: endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_docker_disk_usageA | Get Docker disk usage (containers, images, volumes, build cache). Args: endpoint_id: Target endpoint ID (uses default if omitted) |
| portainer_users_listB | List all Portainer users. |
| portainer_user_inspectA | Get details of a specific Portainer user. Args: user_id: The ID of the user to inspect |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
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/ginkida/portainer-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server