Endpoint
Streamable HTTP MCP, 2026-07-28 protocol revision. Stateless. Wide-open CORS. No authentication. The handshake-based revisions 2025-11-25, 2025-06-18 and 2025-03-26 are still answered via initialize, under a published Deprecation and Sunset.
https://mcp.specification.website/mcpServer card: /.well-known/mcp/server-card.json. Landing page: mcp.specification.website/.
Tools
| Tool | What it returns |
|---|---|
search(query, limit?) | Ranked spec pages with title, status, category, URL, and body excerpts. |
list_topics({ category?, status?, limit? }) | Filtered index — slug, title, status, summary, URL. |
get_topic({ slug }) | Full canonical Markdown for one page — frontmatter, sources, body. |
get_checklist({ category?, status? }) | Tickable Markdown checklist grouped by category. |
get_categories() | The ten top-level categories with topic counts. |
get_changes({ since?, type?, limit? }) | What changed since a date — new pages, status promotions, rewrites, removals — each resolved to the current topics to re-audit. Re-check only the delta instead of the whole spec. |
Browser tools (WebMCP)
The same lookup surface is also exposed in the browser via WebMCP: /webmcp.js registers tools on document.modelContext for in-browser agents, generated at build time from the same content collection. Tool names and intent mirror the HTTP server above. A browser without a WebMCP implementation downloads none of it — a small inline guard injects the script only when the API is present.
| Tool | What it does |
|---|---|
search_spec(query, limit?) | Ranked keyword search over the spec — title, status, category, URL, summary. |
list_topics({ category?, status?, page?, page_size? }) | Paged topic index with the same filters as the HTTP tool. |
get_topic({ slug, offset?, limit? }) | One spec page as Markdown, returned in line pages with a continuation hint. |
open_search({ query? }) | Opens the on-page ⌘K search overlay for the user. |
open_checklist({ category? }) | Navigates the user to the checklist page. |
Prompts
| Prompt | What it generates |
|---|---|
audit_url(url, focus?) | An audit plan for a target URL against required spec items, optionally narrowed to a category (e.g. security). |
Connect from Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or%APPDATA%\Claude\claude_desktop_config.json (Windows) and add:
{
"mcpServers": {
"specification-website": {
"transport": "http",
"url": "https://mcp.specification.website/mcp"
}
}
}Restart Claude Desktop; the tools appear under the connector menu.
Other MCP clients
Any client that speaks Streamable HTTP MCP (2026-07-28 revision, or one of the older handshake-based revisions above) connects with one URL. There is no client SDK to install and no token to manage. MCP Inspector is the fastest way to poke at the schema.
Quick example — raw JSON-RPC
curl -sX POST https://mcp.specification.website/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search","arguments":{"query":"CSP","limit":3}}}'Design notes
- Single source of truth. Both this site and the MCP server build from the same Markdown files in
src/content/spec/. The Worker bundles a JSON manifest at build time so there is no runtime parsing and no drift. - Stateless. No sessions, no SSE. Every request is independent.
- No auth, no PII. Public read-only data; no cookies; no logs that identify individual callers beyond Cloudflare's standard request metadata.
- It is itself a worked example of the MCP and tool discovery spec page. Source under mcp/ in the repo (~600 lines of TypeScript).
Discoverability surfaces
- Server card at
/.well-known/mcp/server-card.json. Link: …; rel="mcp"response header on every page on this site.- Entry in
/.well-known/api-catalog(RFC 9727). - Cross-linked from the MCP and tool discovery spec page.