IETF RFC MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IETF RFC MCP ServerShow me the abstract of RFC 9110"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
IETF RFC MCP Server
A Model Context Protocol server that gives an LLM first-class access to the IETF document corpus — RFCs, Internet-Drafts, the STD/BCP/FYI series and published errata — running on Cloudflare Workers.
Endpoint: https://rfc.banbanlab.xyz/mcp
claude mcp add --transport http ietf-rfc https://rfc.banbanlab.xyz/mcpFor Claude Desktop and other clients:
{
"mcpServers": {
"ietf-rfc": {
"type": "http",
"url": "https://rfc.banbanlab.xyz/mcp"
}
}
}No authentication — the RFC corpus is public.
Tools
Tool | What it does |
| Find RFCs by title, optionally also abstract |
| Status, date, authors, abstract, keywords, series membership |
| Section outline with per-section sizes |
| One section including its subsections |
| Full text, windowed by |
|
|
| Obsoletes/updates, and the chain to the current document |
| Errata with original text, correction and status |
| Work in progress, not yet published as RFCs |
RFCs are long — RFC 9110 alone is half a megabyte — so the intended path is
list_rfc_sections then get_rfc_section, not get_rfc. The tool descriptions
say so, which is what steers the model.
Related MCP server: Rememberizer MCP Server
Design
Stateless, so no Durable Object
Cloudflare's own MCP guidance points at McpAgent, which is backed by a Durable
Object. Every tool here is a pure lookup with nothing to remember between calls,
so the state a Durable Object exists to hold does not exist. The server instead
uses the MCP SDK's WebStandardStreamableHTTPServerTransport in stateless mode:
Request in, Response out, a fresh server per request.
The practical consequence is that this runs on a plain Worker, with no Workers Paid requirement and one less hop per call.
The index is built offline, not in the Worker
Two things callers want have no per-document endpoint upstream — you can only download the whole dataset:
Dataset | Size | Provides |
| ~14 MB | STD/BCP/FYI membership, draft → RFC mapping |
| ~11 MB | every erratum ever filed |
Parsing either inside a request would exhaust a Worker's CPU budget on every
call. scripts/build-index.mjs therefore downloads and reshapes them on a
laptop or in CI, and uploads the result to KV. The Worker only ever reads one
small value per lookup and never writes.
Errata are sharded by RFC number in blocks of 100. That number falls out of two
limits pulling opposite ways: one key per RFC would mean ~2,500 writes per
rebuild, over KV's free-tier allowance of 1,000 writes/day, while a single key
would put megabytes of JSON.parse back into the request path.
Text parsing is the hard part
The canonical plain-text rendering spans two incompatible eras:
Pre-2019 RFCs are paginated — a footer, a form feed and a running header every 58 lines, landing in the middle of sentences.
xml2rfc v3 RFCs have no page breaks but are much longer.
src/rfctext.ts normalises both. Splitting on the form feed makes the
de-pagination exact: the footer is always the last non-blank line before the
break and the header the first after it, so neither has to be pattern-matched
against the whole document, where [Page 3] might legitimately appear inside a
quoted example.
Section detection keys on headings sitting at column 0, since body prose is
always indented. The earliest RFCs break that rule by centring top-level
headings — RFC 791 sets 1. INTRODUCTION at column 28 while its body sits at
column 2 — so centred lines are accepted too, but only when isolated between
blank lines and free of column alignment. Without those extra conditions the
rule swallows RFC 9110's status-code registry, RFC 791's bit-pattern tables and
RFC 9293's ASCII diagrams.
The parser is checked against nine real RFCs spanning 1981 to 2022, not just synthetic fixtures.
Caching
Every upstream subrequest is pinned to the Cloudflare edge cache via
cf.cacheTtl: 30 days for RFC text (immutable once published), 7 days for
metadata, 1 hour for search and draft state. Parsed documents are additionally
memoised per isolate, capped at four, because section browsing is inherently
repetitive — list the outline, then pull two or three sections.
The RFC Editor and the Datatracker are volunteer-run. Being a polite consumer of them is a design requirement, not an optimisation.
Development
npm install
npm test # parser unit tests
npm run typecheck
npm run dev # local server at http://localhost:8787Deployment
npx wrangler kv namespace create RFC_INDEX # once; put the id in wrangler.jsonc
npm run push-index # build and upload the lookup index
npm run deployGET /health reports whether the index is present.
The index is refreshed weekly by .github/workflows/refresh-index.yml, which
needs a CLOUDFLARE_API_TOKEN repository secret with Workers KV Storage: Edit
permission, plus CLOUDFLARE_ACCOUNT_ID.
Data sources and attribution
Data comes from rfc-editor.org and the IETF Datatracker. This project is not affiliated with or endorsed by the IETF, the IETF Trust or the RFC Editor. RFCs themselves are published under the IETF Trust Legal Provisions.
Licence
MIT — see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables Large Language Models to search and access IETF RFC documents with pagination support.Last updated313MIT
- Alicense-qualityDmaintenanceA Model Context Protocol server enabling LLMs to search, retrieve, and manage documents through Rememberizer's knowledge management API.Last updated35Apache 2.0
- Flicense-qualityDmaintenanceA simple Model Context Protocol server that enables searching and retrieving relevant documentation snippets from Langchain, Llama Index, and OpenAI official documentation.Last updated
- Flicense-qualityDmaintenanceA Model Context Protocol server that provides LLM-friendly access to the official GovInfo API for searching and retrieving U.S. government documents including bills, laws, regulations, and other official publications.Last updated5
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Agentic search over your Dewey document collections from any MCP-compatible client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/acquo/ietf-rfc-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server