Skip to main content
Glama
arhancanli

internet-standards-mcp

Internet Standards

CI npm downloads OpenSSF Scorecard License: MIT

RFCs and IANA registries for coding agents, straight from the RFC Editor and IANA: the exact text of any RFC section, whether an RFC is still current and what replaces it today, the errata filed against a section, and registered values such as HTTP status codes, header fields, media types, ports and TLS cipher suites.

Models quote obsolete RFCs from memory. Ask one about HTTP/1.1 and it cites RFC 2616, which was replaced twice (by RFCs 7230 to 7235 in 2014, then by RFCs 9110 to 9112 in 2022). Internet Standards follows every obsoleted-by chain to its end, warns whenever a section comes from an obsolete RFC, and returns section text verbatim with the verified errata that correct it, so an agent can quote a requirement exactly and know it still applies.

  • rfc_info: status, whether it is current, what obsoletes it and the current replacements at the end of the chain, what updates it. Accepts RFC numbers, BCP/STD/FYI series (BCP 14 is RFC 2119 and RFC 8174) and Internet-Draft names.

  • rfc_section: one section's exact text by number (15.5.5) or title, with its verified and held errata; a phrase search across the RFC; or the table of contents, with subsections listed so an agent can drill down.

  • search_rfcs: topic search in which current documents rank above the ones they replaced.

  • iana_lookup: HTTP status codes, fields and methods, media types, URI schemes, port numbers, TLS cipher suites, link relations and DNS record types, each with its defining RFC section.

No account or key needed. Built and maintained by Arhan Canli.

Install

Install in Cursor Install in VS Code Install in Goose

Needs Node.js 20 or newer. No account or key.

Claude Code

claude mcp add internet-standards -- npx -y internet-standards-mcp

Claude Desktop: download internet-standards-mcp-<version>.mcpb from the latest release and open it. The bundle is signed; verify it with gh attestation verify <file> --repo arhancanli/internet-standards-mcp.

Any other client (Windsurf, Zed, Cline, Continue and others), in its MCP config file:

{
  "mcpServers": {
    "internet-standards": {
      "command": "npx",
      "args": [
        "-y",
        "internet-standards-mcp"
      ]
    }
  }
}

Docker

docker build -t internet-standards-mcp https://github.com/arhancanli/internet-standards-mcp.git && docker run -i --rm internet-standards-mcp

Hosted (Streamable HTTP): node src/server.mjs --http serves stateless MCP at POST /mcp (port from PORT, default 3000).

Related MCP server: rfc-server

Example

An agent calls rfc_info with:

{
  "ids": [
    "RFC 2616",
    "BCP 14",
    "draft-ietf-httpbis-semantics",
    "RFC 99999"
  ]
}

and gets back (recorded from the live server on 2026-09-26):

{
  "results": [
    {
      "id": "RFC 2616",
      "rfc": "RFC 2616",
      "title": "Hypertext Transfer Protocol -- HTTP/1.1",
      "status": "Draft Standard",
      "current": false,
      "obsoleted_by": [
        "RFC 7230",
        "RFC 7231",
        "RFC 7232",
        "RFC 7233",
        "RFC 7234",
        "RFC 7235"
      ],
      "current_replacements": [
        "RFC 9110",
        "RFC 9111",
        "RFC 9112"
      ],
      "updated_by": [
        "RFC 2817",
        "RFC 5785",
        "RFC 6266",
        "RFC 6585"
      ],
      "obsoletes": [
        "RFC 2068"
      ],
      "published": "June 1999",
      "authors": "R. Fielding, J. Gettys, J. Mogul, H. Frystyk, L. Masinter et al.",
      "url": "https://www.rfc-editor.org/rfc/rfc2616.html",
      "errata": "https://www.rfc-editor.org/errata/rfc2616",
      "info": "https://www.rfc-editor.org/info/rfc2616"
    },
    {
      "id": "BCP 14",
      "series": "BCP14",
      "rfc": "RFC 2119",
      "title": "Key words for use in RFCs to Indicate Requirement Levels",
      "status": "Best Current Practice",
      "current": true,
      "updated_by": [
        "RFC 8174"
      ],
      "published": "March 1997",
      "authors": "S. Bradner",
      "url": "https://www.rfc-editor.org/rfc/rfc2119.html",
      "errata": "https://www.rfc-editor.org/errata/rfc2119",
      "info": "https://www.rfc-editor.org/info/rfc2119"
    },
    {
      "id": "BCP 14",
      "series": "BCP14",
      "rfc": "RFC 8174",
      "title": "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words",
      "status": "Best Current Practice",
      "current": true,
      "updates": [
... (43 more lines)

Tools

Tool

What it does

iana_lookup

Looks up an entry in an IANA registry (HTTP status codes, fields, methods; media types; URI schemes; port numbers; TLS cipher suites; link relations; DNS record types) by exact value or name, else by text. Returns the entry and its defining RFC section.

rfc_info

For up to 20 RFCs (RFC 2616, BCP 14, STD 97 or a draft name): title, status, whether it is current, what obsoletes it and the current replacements at the end of that chain, what updates it, and links. Use before citing or implementing an RFC.

rfc_section

Returns the exact text of one RFC section (by number like 15.5.5 or by title) with the verified errata that apply to it; with find, lists the sections containing a phrase; with neither, the table of contents. Warns when the RFC is obsolete.

search_rfcs

Finds RFCs by topic words in titles, keywords and abstracts; current documents rank above the ones they replaced. Returns number, title, status, year and what obsoletes each.

How it behaves

  • Read-only: no tool changes anything outside this process.

  • Network: HTTPS only, to the hosts listed in package.json under factory.allowHosts, with a deadline, a size cap and bounded retries; a read that stalls is abandoned and retried. Nothing else is contacted, and nothing is logged except unexpected failures (to stderr, without your inputs).

  • Per-RFC lookups use the RFC Editor's small per-document records. The full RFC index (for search, series and drafts) and the errata export are downloaded compressed on first use, then kept in memory as parsed data for 12 hours; RFC texts and IANA registries for 24 hours.

  • Section text is the RFC Editor's published plain text with page footers and running headers removed; long sections are cut at 12,000 characters with an explicit marker.

  • Results are compact JSON with a matching output schema.

Benchmark

Measured 2026-09-26 with gpt-5.4-mini, 10 fixed tasks graded by fixed checks (bench/tasks.json, raw results in bench/results/).

Server

Correct

Input tokens

Output tokens

Tool calls

Median time

This server

5/10

30684

892

27

6.0 s

rfcxml-mcp, the most active RFC server

6/10

214403

865

27

5.3 s

Performance

Measured 2026-09-26 from Dubai, home connection against the live upstream, Node 24.19.0 (bench/perf.json, scripts/perf.mjs in the factory).

Call

First call

Repeat

Result size

rfc_info: RFC 2616, BCP 14, a draft name and a missing number

1814 ms

0.6 ms

2,055 chars

rfc_section: RFC 9110 section 12.5.1 with its errata

1868 ms

0.5 ms

6,171 chars

rfc_section: RFC 7231 section 6.5.4 (paginated, obsolete)

2795 ms

0.4 ms

997 chars

rfc_section: find a phrase in RFC 9110

636 ms

4.6 ms

5,094 chars

search_rfcs: http semantics

1212 ms

3.6 ms

1,190 chars

iana_lookup: HTTP status 418

358 ms

0.4 ms

245 chars

iana_lookup: media type application/json

278 ms

0.6 ms

206 chars

iana_lookup: port 5432

480 ms

1.1 ms

497 chars

First call: a fresh server process, including the TLS connection and the upstream's own time. Repeat: the same call again, answered from the in-process cache, so it shows this server's own overhead.

Tool definitions the model reads on every turn (name, description, input schema): 2,119 characters, against 3,643 for rfcxml-mcp, the most active RFC server. The full tool list, with the output schemas and annotations clients use to validate results, is 3,610 characters (3,636 for the alternative).

Data sources

  • RFC Editor: per-RFC records, RFC text, the RFC index and the errata database.

  • IANA protocol registries (CSV exports).

More MCP servers by Arhan Canli

  • End of Life: Is this version still supported? EOL dates, latest patch and upgrade target for 470+ products.

  • Package Truth: Checks packages exist before install: version, deprecation, vulnerabilities, licence. 7 ecosystems.

  • Citation Check: Verifies citations: finds fabricated or mismatched references and retractions, returns clean BibTeX.

  • Drug Label: FDA drug label answers with section citations, RxNorm name resolution, recalls and shortages.

  • Recall Check: One recall check across CPSC, FDA and NHTSA: match by name, model number, UPC or VIN.

  • Satellite Imagery: Find the clearest Sentinel-2, Landsat, Sentinel-1 or NAIP scene for any place, with band links.

  • The whole collection

License

MIT, Copyright (c) 2026 Arhan Canli.

Available Tools

4 tools
iana_lookupIANA registry lookupA
Read-onlyIdempotent

Looks up an entry in an IANA registry (HTTP status codes, fields, methods; media types; URI schemes; port numbers; TLS cipher suites; link relations; DNS record types) by exact value or name, else by text. Returns the entry and its defining RFC section.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
registryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
exactYes
totalYes
entriesYes
registryYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and idempotent behavior, so the bar is lower. The description adds valuable behavioral context: matching logic ('by exact value or name, else by text') and return content (entry plus its defining RFC section). This goes beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence that front-loads the core purpose, then lists supported registries, explains query semantics, and states the return value. Every clause earns its place with zero filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering safety, the description is largely complete for a lookup tool. Missing edge cases like 'not found' behavior and details on 'text' matching are minor gaps, not blockers. Overall it is adequately comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does enumerate registries (partially redundant with the enum) and clarifies that query matches exact value/name or text. However, it does not explicitly map the two parameters or address formatting, case sensitivity, or text matching nuances. Adds some but not full meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('looks up'), resource ('IANA registry'), and enumerates the registry categories. It is immediately distinguishable from RFC-focused sibling tools like rfc_info and search_rfcs, so an agent can select it without deep schema inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context implies usage for IANA lookups versus RFC-related siblings, but there is no explicit when-to-use or when-not-to-use guidance, nor any mention of alternatives. The usage is inferable but not directly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rfc_infoRFC status and replacementsA
Read-onlyIdempotent

For up to 20 RFCs (RFC 2616, BCP 14, STD 97 or a draft name): title, status, whether it is current, what obsoletes it and the current replacements at the end of that chain, what updates it, and links. Use before citing or implementing an RFC.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond annotations: the 20-item batch limit, acceptance of varied identifiers (RFC number, BCP, STD, draft name), and the fact that it resolves the full replacement chain to its end. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense, front-loaded sentence states the scope and return fields, followed by a single usage directive. Every clause earns its place; there is no filler or repetition of schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be spelled out, and annotations cover the safety profile. The description explains the input domain, the batch limit, and the resolved output semantics. Minor gap: it does not describe behavior for invalid/unknown identifiers, but this is acceptable given the output schema and annotations already carry significant weight.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the schema only says 'array of strings' with maxLength 100. The description fully compensates by specifying exactly what the ids array accepts: RFC numbers (RFC 2616), BCP 14, STD 97, or draft names. This is critical semantic detail the schema does not provide, and it is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('get') with a clear resource (RFC status/replacements) and enumerates the exact fields returned: title, status, current-ness, obsoletes, replacement chain, updates, and links. It clearly distinguishes from siblings (iana_lookup, rfc_section, search_rfcs) since none of those cover status/replacement-chain resolution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit trigger: 'Use before citing or implementing an RFC.' This tells the agent when to reach for the tool. However, it does not name sibling tools as alternatives (e.g., 'for a section, use rfc_section') or state when not to use it, leaving the exclusion logic implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rfc_sectionExact RFC section textA
Read-onlyIdempotent

Returns the exact text of one RFC section (by number like 15.5.5 or by title) with the verified errata that apply to it; with find, lists the sections containing a phrase; with neither, the table of contents. Warns when the RFC is obsolete.

ParametersJSON Schema
NameRequiredDescriptionDefault
rfcYesRFC number, e.g. 9110
findNoPhrase to locate
sectionNo
subtreeNoInclude subsections

Output Schema

ParametersJSON Schema
NameRequiredDescription
rfcYes
obsoleted_byNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds meaningful context: verified errata are included, obsolete RFCs trigger a warning, and mode-dependent output is described. It does not cover edge cases like not-found behavior, but this is not a contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary return value, then mode variants and the warning. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and read-only annotations present, the description covers all invocation modes and the obsolete-warning behavior. It is sufficient for an agent to select and call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, and the description adds semantics for the undocumented section parameter (number like 15.5.5 or title) and clarifies the find parameter's role. Subtree is only described in the schema, but the description goes beyond schema for the main mode-switching params.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns exact RFC section text with errata, and describes distinct modes for find and table-of-contents. It is specific about the resource and verb, though it does not explicitly distinguish itself from siblings like search_rfcs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for when to use each mode: section lookup by number/title, find for phrase search, and neither for TOC. However, it does not mention when to prefer a sibling tool or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_rfcsSearch RFCsA
Read-onlyIdempotent

Finds RFCs by topic words in titles, keywords and abstracts; current documents rank above the ones they replaced. Returns number, title, status, year and what obsoletes each.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
include_obsoleteNoDefault true

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
resultsYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent behavior. The description adds valuable context beyond annotations: ranking of current documents above replaced ones and the specific return fields ('number, title, status, year and what obsoletes each'). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences deliver the search scope, ranking rule, and return fields with no filler. The most important operational detail (what it searches) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With output schema present and annotations covering safety/idempotence, the description covers search semantics, ranking, and return shape. The main remaining gap is the meaning of include_obsolete, but overall the agent has enough to invoke the tool correctly for typical searches.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, and the description meaningfully explains the query parameter as topic-word matching against titles, keywords, and abstracts. However, the include_obsolete parameter is not addressed in the description, leaving its semantics only to the field name and 'Default true' schema note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Finds') and resource ('RFCs') with clear search scope: topic words in titles, keywords, and abstracts. The ranking behavior and return fields further distinguish it from siblings like rfc_info and rfc_section, making its role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for keyword/topic searching rather than exact-number lookup or section retrieval. However, it never explicitly says when to prefer this tool over siblings or provides exclusions, so the guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observediana_lookup
    • First observedrfc_info
    • First observedrfc_section
    • First observedsearch_rfcs

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: IANA registry lookup vs. RFC discovery, metadata retrieval, and section text extraction. There is no meaningful overlap between any two tools.

Naming Consistency4/5

All names use lowercase with underscores styles vary between object+verb (iana_lookup), object+noun (rfc_info, rfc_section), and verb+object (search_rfcs). The pattern is not perfectly uniform but remains predictable and readable.

Tool Count4/5

At 4 tools, the server is compact but covers the core references for internet standards. Slightly thin, but each tool serves a necessary, non-redundant function.

Completeness4/5

The set covers IANA lookups, RFC searching, metadata validation, and section-level text with errata. Missing full RFC text retrieval or a registry listing, but the main workflows are covered without major dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that enables programmatic access to IETF RFC documents, allowing users to fetch, search, and extract specific sections from RFCs.
    3
    30 npm
    19
    Apache 2.0
  • A
    license
    B
    quality
    D
    maintenance
    An MCP server for obtaining, parsing and reading RFC documents from the ietf.org website, providing programmatic interactive tools.
    3
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides LLM-based access to IETF documents such as RFCs, Internet-Drafts, STD/BCP/FYI series, and errata through a Model Context Protocol server.
    MIT