Skip to content

MCP · Flask · SQLite FTS5

RFCs, meet AI.

Query the IETF standards corpus through natural language — no scraping, no parsing, just ask.

# Point any MCP client to:
https://rfc-mcp.connorw600.dev/mcp

# Try it with curl:
curl https://rfc-mcp.connorw600.dev/api/v1/rfcs/9000

Why rfc-mcp

Query the IETF standards corpus through AI — no setup required

A public instance runs at https://rfc-mcp.connorw600.dev/ — free to use, no registration. Or run your own.

🧩

MCP protocol native

Exposes the corpus as tools and prompts to AI agents over Streamable HTTP (/mcp). Works with opencode, Claude, Cline, Cursor, VS Code, Continue.dev, Zed, and 30+ other MCP clients.

🔍

Full-text search over whole RFCs and individual sections via SQLite FTS5. Section-level queries bounded by reliable <section> markup or best-effort heuristics.

🗄️

Per-section lookup

Each RFC is split into sections — structured (from xml2rfc markup) or heuristic (pattern-matched from plain text). Drill into section_id like "2.1" or "A".

🔗

Relation graph

Every RFC carries its relations: obsoletes, obsoleted-by, updates, updated-by, see-also. Trace the standards lineage through the API or MCP tools.

📦

Single container

One uvicorn process, one port. Flask API and MCP server in the same process. Docker image built with Gitea CI/CD. Self-host in minutes.

Auto-synced corpus

Daily rsync from rfc-editor.org. Container starts immediately; data syncs and reindexes in the background. No manual refresh.

Quickstart

Query the API with curl

# Get an RFC
curl https://rfc-mcp.connorw600.dev/api/v1/rfcs/9000

# Full-text search
curl 'https://rfc-mcp.connorw600.dev/api/v1/search?q=DNS&security&limit=3'

# Section lookup
curl https://rfc-mcp.connorw600.dev/api/v1/rfcs/9000/sections/2.1

Configure your MCP client

{
  "mcpServers": {
    "rfc-mcp": {
      "type": "streamable-http",
      "url": "https://rfc-mcp.connorw600.dev/mcp"
    }
  }
}

See Agent Configuration for client-specific setup guides.


rfc-mcp — MIT licensed