Borrowing it
Nothing to install: this file belongs to YawLabs/caddy-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/YawLabs/caddy-mcp/main/CLAUDE.mdgit clone --depth 1 https://github.com/YawLabs/caddy-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/yawlabs/caddy-mcp/claude-md)<a href="https://agentmods.dev/instructions/yawlabs/caddy-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/yawlabs/caddy-mcp/claude-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/yawlabs/caddy-mcp/claude-md"><img src="https://agentmods.dev/badge/instructions/yawlabs/caddy-mcp/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.02400 | $0.02400 |
| Opus 5.5 | $0.00960 | $0.00960 |
| Sonnet 5.5 | $0.00480 | $0.00480 |
| Haiku 4.5 | $0.00240 | $0.00240 |
Grade A, and why
caddy-mcp CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 14d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 103 lines — stays where its author put it; the contents beside it link to each section on GitHub.
caddy-mcp
MCP server for managing Caddy web servers via the admin API. 18 tools across config management, route operations, TLS, and server operations.
Architecture
src/index.ts— CLI entry point. Starts stdio MCP server.src/server.ts— Creates McpServer, registers all tools and resources. ExportscreateCaddyServer()andstartServer().src/api.ts— Caddy admin API client (fetch wrapper). All tools call through this. Also owns the retry policy (shouldRetry: only a missing response or a 502/503/504 retries; only idempotent method/path pairs retry, unless the connection was refused; a config change whose timeout fired never retries), the per-request timeout budget (getTimeoutFor), and the ETagIf-Matchcache used for optimistic concurrency. The cache refuses to store an ETag Caddy could not parse back as anIf-Match(isEchoableEtag, a mirror of Caddy's own quote-and-two-fields parse), which is what a config key containing whitespace produces.src/format.ts— Converts API responses to MCP tool result format.src/snapshots.ts— Ring of the last 10 config snapshots (module-level, per-process). Backscaddy_revert; auto-captured beforecaddy_load, and before acaddy_config_delete,caddy_config_setorcaddy_config_by_idat the config root (no other delete or set is snapshotted). Acaddy_config_by_idcall is at the root when Caddy resolves itsidto/configand its subpath is empty or a lone.... The tool finds out by asking Caddy, not by comparing against the top-level@id:GET /id/<id>/@idanswers with an ETag of"<resolved path>/@id <hash>"(api.idObjectPathparses it), which also catches a numeric@idand a nested one under keys whose..Caddy'spath.Joincollapses. An id that does not resolve inside the config tree is refused. All three tools share one root write branch and one root delete branch insrc/tools/config.ts. Whether a path IS the root isapi.isRootConfigPath, which sharesnormalizePathwith the request functions and also absorbs the lone trailing...segment Caddy strips before it picks a method. In-memory by default;CADDY_MCP_SNAPSHOT_DIRpersists them to disk and rehydrates on first access, so rollback survives a restart.src/tools/config.ts— Low-level config CRUD: get, set, delete, load, revert, config_by_id.src/tools/routes.ts— Route management: reverse_proxy shortcut, add_route, list_routes, remove_route.src/tools/adapt.ts— Config format conversion (Caddyfile → JSON).src/tools/tls.ts— TLS/HTTPS settings management.src/tools/operational.ts— Status, list_servers, upstreams, PKI, metrics, stop. Also owns theTLS:label in the server summaries, which replays Caddy's automatic-HTTPS rule (autohttps.go+app.go:535) over the stored config instead of guessing from the listen port — including a port-range parser that mirrorscaddy.ParseNetworkAddress.src/resources.ts— MCP resources: caddy://config, caddy://upstreams, caddy://metrics, caddy://servers.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 14d ago Changed · +1 lines · +1 tokens per session 1ef8f86c6d2e
- 20d ago Changed · +6 lines · +117 tokens per session 7adfc1347665
- 23d ago Changed 7230ec59fd6b
- 1mo ago Changed · +214 tokens per session 8654bdd5c854
- 1mo ago Changed · +199 tokens per session 346fee4aa9f0
- 1mo ago Changed · +294 tokens per session 7e9100f043c5
- 1mo ago Changed · +2 lines · +86 tokens per session 32152deaea13
- 2mo ago First seen · 94 lines · 1,489 tokens per session scan A f23a15b5050f
caddy-mcp CLAUDE.md is an instructions file published in the GitHub repository YawLabs/caddy-mcp (13 stars, last pushed 2d ago), licensed MIT. It adds 2,400 tokens to every session, about $0.0096 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
vscode buildNext.instructions.md
Working notes and architecture documentation for the new esbuild-based build system in build/next. Use when making changes to the new build pipeline (transpile/bundle commands, NLS plugin, source-map handling, resource copying, or self-hosting watch tasks).
next.js AGENTS.md
AGENTS.md instructions for vercel/next.js, covering next.js development guide, codebase structure, monorepo overview, core package: packages/next and other important packages.
vscode oss-third-party-notices.instructions.md
Instructions for microsoft/vscode, covering vs code oss third-party-notices pipeline, architecture, pipeline flow in ci, cache eligibility and rollout and applying the notice (cutover).
langchain AGENTS.md
AGENTS.md instructions for langchain-ai/langchain, covering global development guidelines for the langchain monorepo, corridor security analysis, project architecture and context, monorepo structure and development tools & commands.
vscode copilot-instructions.md
Copilot instructions for microsoft/vscode, covering vs code copilot instructions, project overview, root folders, core architecture (src/ folder) and built-in extensions (extensions/ folder).
deno copilot-instructions.md
Copilot instructions for denoland/deno, covering deno development guide for github copilot, network access, high level overview, key directories and key files to understand first.