Turn a Markdown file into a local MCP server, with zero dependencies.
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"markdown-mcp-server","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# mdMCP Turn a Markdown file into a local MCP server, with zero dependencies. ``` pip install mdmcp ``` ## Quickstart **1. Write a tool file:** ```markdown ## Tool: health_check Check if a URL is reachable. ### Parameters - url (string, required): URL to check ### Execute \```bash STATUS=$(curl -sf -o /dev/null -w '%{http_code}' -m 5 "$MDMCP_URL") echo "HTTP $STATUS" \``` ``` **2. Serve it:** ```bash mdmcp serve tools.md ``` **3. Connect to Claude Code:** ```json { "mcpServers": { "my-tools": { "command": "mdmcp", "args": ["serve", "tools.md"] } } } ``` That's it. Your Markdown is now an MCP server. ## How it works - `## Tool: name` defines a tool - `### Parameters` defines input schema (envvar-based, no string interpolation) - `### Execute` contains a bash script inside a fenced code block - Parameters are passed as `$MDMCP_<NAME>` environment variables ## Commands ```bash mdmcp list tools.md # List available tools mdmcp run tools.md tool_name '{}' # Run a tool once mdmcp serve tools.md # Start MCP stdio server ``` ## Security - **Minimal env**: only PATH, HOME, USER, SHELL, LANG, TERM are inherited. API keys and tokens are NOT exposed to tool scripts. - **No string interpolation**: parameters are passed as environment variables, not injected into shell code. - **Required param validation**: missing required parameters return an error before execution. - **Timeout + process cleanup**: 30s timeout with process group kill to prevent zombies. ## Tips - Always quote `"$MDMCP_VAR"` in bash to prevent word splitting - Use `${MDMCP_VAR:-default}` for optional params with bash-side defaults - You can use `python3 -c` inside bash for complex logic (see `examples/data-tools.md`) - Use `set -eu` at the top of scripts for safer execution ## Examples See the [`examples/`](examples/) directory: - **ops-tools.md** — disk usage, port check, git log, docker status, health check - **dev-tools.md** — find TODOs, …
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.