mcp-server-rfc
An MCP server for looking up IETF RFCs.
{
"mcpServers": {
"rfc": {
"command": "uvx",
"args": ["mcp-server-rfc"]
}
}
}
No clone, no virtualenv, no path. That is the whole installation. Your client spawns the server on your machine and talks to it over stdin and stdout.
A client showing the server as connected has not necessarily used it, and a model will happily answer an RFC question from memory instead. On Claude Desktop the per-server log records only the handshake, so it cannot tell you either way — docs/desktop-verification.md says where the evidence actually is.
Tools
| Tool | What it does |
|---|---|
search_rfcs |
Search titles, or the full text of every RFC if a mirror has been synced |
list_sections |
An RFC's headings with line numbers — the cheap first call |
get_rfc |
Read one section, or a line range |
Queries are literal by default; regex=true opts into pattern matching, and
under scope='fulltext' the dialect is whichever of rg or grep the machine
has, which the payload names in tool. Title results put current RFCs before
superseded ones, so a page cut short at limit keeps the document you want
rather than the one it replaced.
get_rfc refuses any read of more than 1500 lines that is not a named section,
answering with its size and a pointer to list_sections rather than filling the
context with a specification the model had one question about; a start_line of
1 does not get around it. full=true overrides it. A section you asked for by
name is never refused: list_sections reports how long
each one is, and max_lines caps any read, so the choice is informed rather
than blocked.
Every response carries a banner with the RFC's status and, when it applies, a warning that it has been superseded:
RFC 2616 — Hypertext Transfer Protocol -- HTTP/1.1 [DRAFT STANDARD]
!! OBSOLETED BY: RFC 7230, 7231, 7232, 7233, 7234, 7235
That warning is the reason to use this rather than let a model fetch
rfc-editor.org itself. Models cite dead specifications with great confidence.
Full-text search
Works with no setup, fetching documents on demand. Full-text search additionally requires a local mirror, which the user creates from a shell:
uvx mcp-server-rfc sync
The same command that runs the server runs its CLI: sync downloads the
corpus, status reports what is present, and uvx mcp-server-rfc <command> --help covers the rest. It is also the command the server names in the error
you get when full-text search is asked for without a mirror.
512 MB, a few minutes, entirely optional. The server deliberately does not expose a sync tool: half a gigabyte pulled from a volunteer-run mirror should be a person's decision, not a model's.
If a mirror already exists — synced for the companion skill, say — this server
picks it up automatically. It looks under the platform's data directory:
$XDG_DATA_HOME/rfc-ai-tooling, or %LOCALAPPDATA%\rfc-ai-tooling on Windows,
falling back to ~/.local/share/rfc-ai-tooling. Set $RFC_MIRROR to point at a
non-default location — in a container with no home directory, that or --mirror
is what to pass.
HTTP mode
The config above is the stdio transport, which needs a client that can spawn a process on your machine. A session running in the cloud — claude.ai on the web, Cowork — cannot, and no configuration fixes that. For those, the server has to be deployed somewhere they can reach:
mcp-server-rfc --transport http --host 0.0.0.0 --port 8080
RFC_TRANSPORT, HOST and PORT are read from the environment too. The
repository carries a Dockerfile and a fly.toml that do this. No public
instance of this server exists and none is planned — if you want one, you host
it, and you should put authentication in front of it, since the server has none
and would otherwise be an open proxy to a volunteer-run mirror.
Full-text search is the one thing that does not survive: it reads a local 512 MB corpus, so a hosted instance returns an error saying so instead of silently answering a title search. The obsolescence banner, section reads and the unscoped-read guard all work, because they need only the 2 MB index.
If your client has a shell
Use the skill instead — Claude Code, Codex CLI, OpenClaw, Cursor and Zed all qualify. It does the same things with fewer moving parts and gives the agent ripgrep over the corpus:
npx skills add shbernal/rfc-ai-tooling # from the repo, into .claude/skills/
clawhub install @shbernal/rfc-lookup # or the last released version
This server is for clients that give the model no shell of its own. Claude Desktop is the clearest case: its chat cannot run a command on your machine, but it will spawn this server there.
Source, issues and the skill: https://github.com/shbernal/rfc-ai-tooling
MIT.
Metadata
Release files for mcp-server-rfc 0.5.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mcp_server_rfc-0.5.2.tar.gz | 37.5 kB | Without provenance | Details for mcp_server_rfc-0.5.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mcp_server_rfc-0.5.2-py3-none-any.whl | Python 3 | none | any | Details for mcp_server_rfc-0.5.2-py3-none-any.whl |
Total release size: 67.1 kB
Release files / mcp_server_rfc-0.5.2.tar.gz
| Download URL | mcp_server_rfc-0.5.2.tar.gz |
|---|---|
| Size | 37.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
98fef75e2e732e1b9875f32e48d24ac6cf40c57ae58a064b986b483cb7058521
|
|
BLAKE2b-256 checksum How to use checksums |
4d8ec68aaff38590af484730c68ca49d47b019ced2a347d3c16393431708b110
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mcp_server_rfc-0.5.2-py3-none-any.whl
| Download URL | mcp_server_rfc-0.5.2-py3-none-any.whl |
|---|---|
| Size | 29.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
062b5b3586e7c141bfdd8d177508082c97a553ab3babe0c30e20a37b0f97780e
|
|
BLAKE2b-256 checksum How to use checksums |
33212553b63f704793a646ee0bf45b1b4789def6977dddf070d25ec340d266b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.5 {"installer":{"name":"uv","version":"0.13.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for mcp-server-rfc 0.5.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.