MCP server for managing Traefik reverse proxy from Claude Code
Server has 25 tools with explicit schemas and descriptions, but quality is inconsistent. Most tools have basic descriptions (50-150 chars) and proper input schemas with type definitions. However, critical gaps exist: (1) No output schemas documented anywhere, LLMs cannot predict return structure; (2) Many parameter descriptions are minimal or missing context (e.g., 'Container name' lacks format/validation hints); (3) No error handling guidance, tools return raw errors without recovery hints; (4) Missing idempotency/destructiveness annotations despite 8 REVERSIBLE and 2 WRITE tools; (5) No pagination support on list tools despite potential for large result sets. Naming is generally good (verb_noun pattern), but some tools conflate concerns (e.g., 'doctor' does 6 checks in one call). Per-tool average ~52, dragged down by missing output schemas and error guidance.
Add multi-domain route for a service (makes it accessible via LAN/Tailscale)
Add a new middleware to traefik/dynamic/middlewares.yml (Traefik hot-reloads automatically)
Check if a domain is responding
Verify MCP configuration - checks that env vars and paths are correctly set
Check if a newer Traefik version is available and whether it's safe to update
Get logs from a Docker container
Create the traefik-public Docker network. Requires Docker running.
No output schemas documented. LLMs cannot predict return structure, field names, or types. This forces agents to guess what data is available and risks parsing errors.
Destructive/reversible tools lack error handling guidance. restart_container, rebuild_service, start_traefik, stop_traefik, create_network, init_stack, add_middleware, update_cors, add_domain_route, remove_domain_route have no recovery hints if they fail.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Comprehensive health check of the Traefik stack - checks Docker, network, container, API, ports, and config
Generate docker-compose traefik labels for a new project
Show current CORS configuration (allowed origins from cors-dev middleware)
Get details of a specific router
Initialize Traefik stack from scratch - creates network and starts containers. Requires Docker running.
List Docker containers on traefik-public network
List all multi-domain routes (LAN/Tailscale access)
Show available middleware types with example configurations
List all HTTP middlewares
List all HTTP routers with their rules and status
List all HTTP services registered in Traefik
Rebuild and recreate a Docker Compose service (runs `docker compose up -d --build <service>`)
Remove a multi-domain route
Restart a Docker container
Start the Traefik stack (docker compose up -d). Requires Docker running.
Stop the Traefik stack (docker compose down). Requires Docker running.
Get Traefik overview - version and component counts
Add or remove origins from the cors-dev middleware
Missing tool annotations. No readOnlyHint, destructiveHint, or idempotentHint declared in tool definitions. Agents cannot determine which tools are safe to retry or have side effects.
List tools lack pagination. list_routers, list_services, list_middlewares, list_containers, list_middleware_types, list_domain_routes have no limit/offset/cursor parameters. Large result sets will blow context windows.
Parameter descriptions lack validation hints. 'Container name', 'Domain', 'Middleware name' lack format/length/pattern constraints. LLMs cannot self-validate input before calling.