mcp-caddy
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CADDY_HOST | No | Caddy admin API URL | http://localhost:2019 |
| CADDY_TIMEOUT | No | HTTP timeout in seconds | 30 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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 |
|---|---|
| server_infoA | Get Caddy server version and list of loaded modules. |
| get_configA | Get the full Caddy configuration as JSON. |
| get_config_pathB | Get a specific Caddy config node by path. config_path: e.g. '/apps/http/servers' or '/apps/tls'. |
| list_serversA | List all Caddy HTTP server blocks with their names, listen addresses, and route counts. |
| list_routesA | List all configured routes (virtual hosts) with hosts, handler, upstreams, listen addresses, and route index. |
| get_routeA | Get the full configuration of a specific route by index. Use list_routes to find server_name and index. |
| add_reverse_proxy_routeB | Add a reverse proxy route to Caddy. host: domain (e.g. 'app.example.com'). upstream: backend dial address (e.g. 'localhost:3000'). server_name: Caddy server block (auto-detects first server if empty). |
| add_static_file_serverA | Add a static file server route to Caddy. path: URL path to match (e.g., '/files/*'). root: filesystem directory to serve. server_name: auto-detects first server if empty. |
| add_redirectA | Add an HTTP redirect route. from_host: domain to redirect (e.g. 'old.example.com'). to_url: destination URL. status_code: 301 (permanent), 302 (temporary), 307, or 308. |
| delete_routeA | Delete a route by index from an HTTP server's route list. Use list_routes to find the index. Changes take effect immediately. |
| list_upstreamsA | List all reverse proxy upstreams with their health status and request counts. |
| get_certificatesA | List TLS certificate automation policies: subjects, ACME issuers, and CAs. |
| adapt_configC | Convert a Caddyfile snippet to JSON config using Caddy's built-in adapter. |
| reloadB | Reload Caddy config. source: raw JSON string (starts with '{') or path to a JSON config file. |
| update_config_pathA | Update a specific Caddy config path with a new value via PATCH. config_path: e.g. '/apps/http/servers/srv0/listen'. value: JSON string of the new value. |
| delete_config_pathA | Delete a specific Caddy config node at the given path. config_path: e.g. '/apps/http/servers/srv0'. Changes take effect immediately. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Each tool targets a distinct operation: adding different route types, listing different resources, getting specific config nodes, etc. No overlapping purposes; descriptions clearly differentiate.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., add_reverse_proxy_route, list_servers, delete_route). Only 'reload' is a single verb but it's standard and fits the pattern.
With 16 tools, the server is well-scoped for managing Caddy configurations. Each tool serves a clear purpose without excessive granularity or missing essential operations.
The set covers full lifecycle: create (add_*), read (list, get), update (update_config_path), delete (delete_route/delete_config_path), plus reload, config adaptation, and certificate info. No obvious gaps for typical Caddy management.