Skip to main content
Glama

RFCXML MCP Server

npm version CI License: MIT Node.js Claude Code

日本語版 README

Ein Model Context Protocol (MCP) Server für das strukturierte Verständnis von RFC-Dokumenten.

Zweck

Im Gegensatz zu bestehenden textbasierten RFC-MCP-Servern nutzt dieser Server die semantische Struktur von RFCXML, um Folgendes zu ermöglichen:

  • Extraktion normativer Anforderungen (MUST/SHOULD/MAY) mit strukturierter Ausgabe

  • Erstellung von RFC-Abhängigkeitsgraphen

  • Verwaltung von Definitionsbereichen

  • Generierung von Implementierungs-Checklisten

Related MCP server: Unstructured Document Processor MCP

Architektur

┌─────────────────────────┐
│  Markdown / PDF         │  Display & Sharing
├─────────────────────────┤
│  Translation            │  Explanation & Verification
├─────────────────────────┤
│  RFCXML MCP             │  Common Understanding for AI & Humans
├─────────────────────────┤
│  RFCXML                 │  Single Source of Truth
└─────────────────────────┘

Vergleich mit bestehenden MCPs

Funktion

Bestehendes mcp-rfc

RFCXML MCP

RFC-Textabruf

✅

✅

Abschnittsextraktion

✅ (textbasiert)

✅ (strukturbasiert)

MUST/SHOULD/MAY-Extraktion

❌

✅

Strukturierung von Bedingungen/Ausnahmen

❌

✅

RFC-Abhängigkeitsgraph

❌

✅

Verwaltung von Definitionsbereichen

❌

✅

Implementierungs-Checkliste

❌

✅

Schnellstart

Verwendung mit Claude Desktop / Claude Code

Fügen Sie Folgendes zu Ihrer MCP-Konfigurationsdatei hinzu:

{
  "mcpServers": {
    "rfcxml": {
      "command": "npx",
      "args": ["-y", "@shuji-bonji/rfcxml-mcp"]
    }
  }
}

Speicherorte der Konfigurationsdatei:

  • Claude Desktop (macOS): ~/Library/Application Support/Claude/claude_desktop_config.json

  • Claude Desktop (Windows): %APPDATA%\Claude\claude_desktop_config.json

  • Claude Code (Projektbereich): .mcp.json im Projektstammverzeichnis

  • Claude Code (Benutzerbereich): ~/.claude.json

  • Claude Code (CLI): claude mcp add rfcxml -- npx -y @shuji-bonji/rfcxml-mcp

Installation (Optional)

Für eine globale Installation:

npm install -g @shuji-bonji/rfcxml-mcp

Konfigurieren Sie dann MCP:

{
  "mcpServers": {
    "rfcxml": {
      "command": "rfcxml-mcp"
    }
  }
}

Verfügbare Tools

Phase 1: Grundlegende Struktur

  • get_rfc_structure - Abrufen der Abschnittshierarchie und Metadaten

  • get_requirements - Extrahieren normativer Anforderungen (MUST/SHOULD/MAY) mit Struktur

  • get_definitions - Abrufen von Begriffsdefinitionen und deren Geltungsbereich

Phase 2: Beziehungen

  • get_rfc_dependencies - Abrufen referenzierter RFCs (normativ/informativ)

  • get_related_sections - Abrufen verwandter Abschnitte innerhalb desselben RFC

Phase 3: Unterstützung bei der Verifizierung

  • validate_statement - Überprüfen, ob eine Aussage den RFC-Anforderungen entspricht

  • generate_checklist - Generieren einer Implementierungs-Checkliste

Unterstützung für ältere RFCs

RFCs, die nach RFC 8650 (Dezember 2019) veröffentlicht wurden, sind im offiziellen RFCXML v3-Format verfügbar. Für frühere RFCs ist möglicherweise kein XML verfügbar.

Dieser Server enthält eine automatische Fallback-Funktionalität – wenn kein XML verfügbar ist, wird stattdessen das Textformat geparst.

Quellinformationen

Alle Antworten enthalten Quellinformationen:

{
  "rfc": 6455,
  "sections": [...],
  "_source": "text",
  "_sourceNote": "Warning: Parsed from text format. Accuracy may be limited."
}

_source

Beschreibung

xml

Geparsed aus RFCXML (hohe Genauigkeit)

text

Geparsed aus Text (mittlere Genauigkeit)

Kompatibilität

RFC

Format

Hinweise

RFC 8650+

XML

Offizielle RFCXML v3-Unterstützung

Vor RFC 8650

Text

Automatischer Fallback

Ausgabebeispiele

get_rfc_structure - RFC-Struktur abrufen

{
  "metadata": {
    "title": "Transmission Control Protocol (TCP)",
    "docName": "draft-ietf-tcpm-rfc793bis-28",
    "number": 9293
  },
  "sections": [
    {
      "number": "section-1",
      "title": "Purpose and Scope"
    },
    {
      "number": "section-3",
      "title": "Functional Specification",
      "subsections": [
        { "number": "section-3.1", "title": "Header Format" },
        {
          "number": "section-3.5",
          "title": "Establishing a Connection",
          "subsections": [
            { "number": "section-3.5.1", "title": "Half-Open Connections and Other Anomalies" },
            { "number": "section-3.5.2", "title": "Reset Generation" }
          ]
        }
      ]
    }
  ],
  "referenceCount": { "normative": 15, "informative": 85 },
  "_source": "xml"
}

get_requirements - Normative Anforderungen extrahieren

{
  "rfc": 9293,
  "filter": { "level": "MUST" },
  "stats": { "total": 53, "byLevel": { "MUST": 53 } },
  "requirements": [
    {
      "id": "R-section-3.5-5",
      "level": "MUST",
      "text": "A TCP implementation support simultaneous open attempts (MUST-10).",
      "section": "section-3.5",
      "sectionTitle": "Establishing a Connection"
    },
    {
      "id": "R-section-3.7.1-9",
      "level": "MUST",
      "text": "TCP endpoints implement both sending and receiving the MSS Option (MUST-14).",
      "section": "section-3.7.1",
      "sectionTitle": "Maximum Segment Size Option"
    }
  ],
  "_source": "xml"
}

get_rfc_dependencies - RFC-Abhängigkeiten abrufen

{
  "rfc": 9293,
  "normative": [
    { "rfcNumber": 791, "title": "Internet Protocol", "anchor": "RFC0791" },
    { "rfcNumber": 2119, "title": "Key words for use in RFCs to Indicate Requirement Levels" },
    { "rfcNumber": 5681, "title": "TCP Congestion Control" }
  ],
  "informative": [
    { "rfcNumber": 793, "title": "Transmission Control Protocol" },
    { "rfcNumber": 1122, "title": "Requirements for Internet Hosts - Communication Layers" }
  ],
  "_source": "xml"
}

generate_checklist - Implementierungs-Checkliste generieren

# RFC 9293 Implementation Checklist

**Transmission Control Protocol (TCP)**

Role: Client

## Required (MUST / REQUIRED / SHALL)

- [ ] A TCP implementation support simultaneous open attempts (MUST-10). (section-3.5)
- [ ] TCP endpoints implement both sending and receiving the MSS Option (MUST-14). (section-3.7.1)
- [ ] The RTO be computed according to the algorithm in, including Karn's algorithm (MUST-18). (section-3.8.1)

## Optional (MAY / OPTIONAL)

- [ ] Implementers include "keep-alives" in their TCP implementations (MAY-5). (section-3.8.4)

Text-Fallback-Ausgabe (Ältere RFCs)

{
  "metadata": {
    "title": "The WebSocket Protocol",
    "number": 6455
  },
  "sections": [
    { "number": "1", "title": "Introduction" },
    { "number": "5", "title": "Data Framing" }
  ],
  "_source": "text",
  "_sourceNote": "Warning: Parsed from text format. Accuracy may be limited."
}

Beispiele

Siehe das Verzeichnis examples/ für vollständige Checklisten-Beispiele:

RFC

Protokoll

Quelle

RFC 6455

WebSocket

Text (Fallback)

RFC 9293

TCP

RFCXML

RFC 7540

HTTP/2

Text (Fallback)

Beispiel-Prompt für Claude:

Generate an implementation checklist for RFC 9293 (TCP).

Interne Architektur

Modulstruktur

src/
├── index.ts                    # MCP server entry point
├── config.ts                   # Centralized configuration
├── constants.ts                # BCP 14 keyword definitions + RFC number limits
├── services/
│   ├── rfc-fetcher.ts          # RFC fetching (parallel)
│   ├── rfc-service.ts          # RFC parse & cache management
│   ├── rfcxml-parser.ts        # RFCXML parser
│   ├── rfc-text-parser.ts      # Text fallback parser
│   └── checklist-generator.ts  # Checklist generation service
├── tools/
│   ├── definitions.ts          # MCP tool definitions
│   └── handlers.ts             # Tool handlers (toolHandlers map)
├── types/
│   └── index.ts                # Type definitions
└── utils/
    ├── cache.ts                # LRU cache
    ├── fetch.ts                # Parallel fetch utility
    ├── logger.ts               # Logger abstraction
    ├── requirement-extractor.ts # Shared requirement extraction
    ├── section.ts              # Section search utilities
    ├── statement-matcher.ts    # Weighted statement matching
    ├── text.ts                 # Text processing utility
    └── validation.ts           # Input validation

RFC-Abrufoptimierung

Sendet parallele Anfragen an mehrere Quellen (RFC Editor, IETF Tools, Datatracker) und verwendet die erste erfolgreiche Antwort:

┌─────────────────┐
│  fetchRFCXML()  │
└────────┬────────┘
         │ Parallel requests
    ┌────┴────┬────────────┐
    ▼         ▼            ▼
┌────────┐ ┌────────┐ ┌────────┐
│RFC     │ │IETF    │ │Data-   │
│Editor  │ │Tools   │ │tracker │
└────┬───┘ └────┬───┘ └────┬───┘
     │          │          │
     └────┬─────┴──────────┘
          │ Promise.any (first success)
          ▼
    ┌───────────┐
    │ Successful│ → Cancel other requests via AbortController
    │ Response  │
    └───────────┘

Cache-Strategie

LRU (Least Recently Used) Cache mit Speicherlimits:

Cache

Max. Einträge

Inhalt

XML-Cache

20

Rohes RFCXML

Text-Cache

20

Roher Text

Metadaten-Cache

100

RFC-Metadaten

Parse-Cache

50

Geparsed Struktur

Entwicklung

# Install dependencies
npm install

# Development mode
npm run dev

# Build
npm run build

# Test (watch mode)
npm test

# Test (single run — for CI etc.)
npm test -- --run

# E2E test (MCP client integration)
npm run test:e2e

# Lint
npm run lint

# Format
npm run format

Lizenz

MIT

Verwandte Projekte

Available Tools

7 tools
generate_checklistB

Generate RFC implementation checklist in Markdown format.

ParametersJSON Schema
NameRequiredDescriptionDefault
rfcYesRFC number
roleNoImplementation role (client/server/both)both
sectionsNoSections to include (all if omitted)
includeSubsectionsNoInclude subsections when filtering by sections (default: true)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool generates a checklist, implying a read-only operation, but doesn't cover aspects like whether it requires network access, has rate limits, or what the output looks like beyond 'Markdown format'. For a tool with no annotations, this leaves significant gaps in understanding its behavior.

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?

The description is extremely concise and front-loaded: a single sentence that directly states the tool's purpose and output format. Every word earns its place with no redundancy or unnecessary details, making it efficient for quick understanding.

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

Completeness3/5

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

Given the tool's moderate complexity (4 parameters, no output schema, no annotations), the description is minimally adequate. It covers the core purpose but lacks details on behavior, usage context, and output specifics. With no output schema, it doesn't explain return values, leaving gaps that could hinder effective use by an agent.

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?

The description adds no parameter semantics beyond what the input schema provides. Since schema description coverage is 100%, the schema already fully documents all parameters (rfc, role, sections, includeSubsections). The description doesn't explain how parameters interact or provide additional context, so it meets the baseline for high schema coverage.

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's purpose: 'Generate RFC implementation checklist in Markdown format.' It specifies the verb ('Generate'), resource ('RFC implementation checklist'), and output format ('Markdown format'), making it unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_requirements' or 'get_rfc_structure', which might also involve RFC content, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or contexts where other tools might be more appropriate, such as using 'get_requirements' for raw requirements instead of a formatted checklist. Without any usage context or exclusions, the agent has minimal guidance.

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

get_definitionsC

Get term definitions from RFC.

ParametersJSON Schema
NameRequiredDescriptionDefault
rfcYesRFC number
termNoSearch for specific term

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get term definitions from RFC,' which implies a read-only operation, but it doesn't disclose any behavioral traits such as authentication needs, rate limits, error handling, or what the return format looks like. For a tool with no annotations, this is a significant gap in transparency.

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?

The description is extremely concise and front-loaded: 'Get term definitions from RFC.' It's a single sentence that directly states the tool's purpose without any unnecessary words or fluff. Every part of the sentence earns its place, making it efficient and easy to parse.

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

Completeness2/5

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

Given the complexity of the tool (2 parameters, no annotations, no output schema), the description is incomplete. It lacks details on behavioral aspects, usage context, and what to expect in return, which are crucial for an agent to invoke the tool correctly. Without annotations or an output schema, the description should provide more context to compensate, but it doesn't.

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?

The input schema has 100% description coverage, with clear parameter descriptions: 'RFC number' and 'Search for specific term.' The description adds no additional meaning beyond what the schema provides, as it doesn't explain parameter usage, constraints, or examples. With high schema coverage, the baseline score is 3, reflecting adequate but not enhanced parameter semantics.

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's purpose: 'Get term definitions from RFC.' It specifies the verb ('Get') and resource ('term definitions from RFC'), making it easy to understand what the tool does. However, it doesn't differentiate from sibling tools like 'get_related_sections' or 'get_rfc_structure', which might also retrieve RFC content, so it doesn't achieve full sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any context, exclusions, or comparisons to sibling tools such as 'get_related_sections' or 'get_requirements', leaving the agent without usage instructions. This lack of guidance makes it harder to select the correct tool in a set of similar options.

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

get_requirementsA

Extract normative requirements (MUST/SHOULD/MAY) from RFC in structured format.

ParametersJSON Schema
NameRequiredDescriptionDefault
rfcYesRFC number
sectionNoFilter by section number (e.g., "5.5.1")
levelNoFilter by requirement level

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral context. It mentions extraction to structured format but doesn't disclose what that format is, whether there are rate limits, authentication needs, or how errors are handled. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

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?

The description is a single, efficient sentence that communicates the core purpose without unnecessary words. It's front-loaded with the main action and resource, making it easy to parse quickly.

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

Completeness3/5

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

For a tool with 3 parameters, no annotations, and no output schema, the description is adequate but incomplete. It covers the purpose well but lacks details on behavioral traits, output format, and usage context. Given the complexity and missing structured data, it should provide more guidance to be fully helpful.

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 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, such as explaining how filtering works or providing examples. This meets the baseline for high schema coverage.

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 the specific action ('Extract'), resource ('normative requirements from RFC'), and format ('structured format'). It distinguishes from siblings by focusing on requirement extraction rather than checklist generation, definition retrieval, or structural analysis.

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 through the phrase 'normative requirements (MUST/SHOULD/MAY)', suggesting it's for extracting specific requirement types from RFCs. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_definitions' or 'get_related_sections', nor does it mention prerequisites or exclusions.

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

get_rfc_dependenciesB

Get RFC reference relationships (normative/informative).

ParametersJSON Schema
NameRequiredDescriptionDefault
rfcYesRFC number
includeReferencedByNoInclude RFCs that reference this RFC

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does, not how it behaves. It doesn't disclose whether this is a read-only operation, what format the relationships are returned in, whether there are rate limits, or what happens with invalid RFC numbers.

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?

The description is a single, efficient sentence with zero wasted words. It's appropriately sized for this simple tool and front-loads the core purpose immediately.

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

Completeness3/5

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

For a simple read operation with 2 parameters and no output schema, the description is minimally adequate. However, without annotations or output schema, it should ideally provide more behavioral context about what's returned and any constraints.

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 100%, so the schema already documents both parameters completely. The description adds no additional parameter information beyond what's in the schema, maintaining the baseline score for high schema coverage.

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 verb ('Get') and resource ('RFC reference relationships') with specific relationship types ('normative/informative'). It distinguishes from sibling tools like 'get_rfc_structure' by focusing on dependencies rather than structure, but doesn't explicitly contrast with 'get_related_sections' which might have overlapping functionality.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives like 'get_related_sections' or 'get_requirements'. The description implies it's for dependency analysis but doesn't specify use cases, prerequisites, or exclusions.

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

get_rfc_structureC

Get RFC section hierarchy and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
rfcYesRFC number (e.g., 6455)
includeContentNoInclude section content (default: false)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions what the tool returns ('section hierarchy and metadata') but doesn't cover critical aspects like whether it's a read-only operation, potential rate limits, authentication needs, error conditions, or response format. This leaves significant gaps in understanding how the tool behaves.

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?

The description is extremely concise—a single sentence that directly states the tool's purpose without any fluff. It's front-loaded and wastes no words, making it easy to parse quickly.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is insufficiently complete. It doesn't explain what 'section hierarchy and metadata' entails in the response, nor does it address behavioral aspects like safety or performance. For a tool with no structured context, more descriptive detail is needed to guide effective use.

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?

The schema description coverage is 100%, with both parameters clearly documented in the input schema. The description doesn't add any meaningful parameter semantics beyond what's already in the schema (e.g., it doesn't explain what 'section hierarchy' means in relation to the parameters). This meets the baseline for high schema coverage.

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's purpose with specific verbs ('Get') and resources ('RFC section hierarchy and metadata'), making it immediately understandable. However, it doesn't explicitly differentiate this tool from its siblings like 'get_related_sections' or 'get_rfc_dependencies', which might have overlapping functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_related_sections' and 'get_rfc_dependencies' available, there's no indication of how this tool differs or when it's the appropriate choice, leaving usage decisions ambiguous.

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

validate_statementC

Validate if a statement complies with RFC requirements.

ParametersJSON Schema
NameRequiredDescriptionDefault
rfcYesRFC number
statementYesDescription of implementation or behavior to validate

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool validates compliance but doesn't describe what the validation entails (e.g., returns a boolean, detailed report, or error messages), whether it requires network access, or any rate limits. This leaves significant gaps in understanding the tool's behavior.

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?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy to understand at a glance.

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

Completeness2/5

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

Given the tool's complexity (validation operation with no annotations and no output schema), the description is incomplete. It doesn't explain what the tool returns (e.g., pass/fail result, detailed feedback), how validation is performed, or any behavioral traits. This makes it inadequate for an agent to use the tool effectively without guesswork.

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?

The input schema has 100% description coverage, with clear parameter definitions. The description adds minimal value beyond the schema by implying the 'statement' parameter is for validation, but it doesn't provide additional context like format examples or validation criteria. Baseline 3 is appropriate as the schema does the heavy lifting.

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's purpose with a specific verb ('validate') and resource ('statement'), specifying it checks compliance with RFC requirements. However, it doesn't explicitly differentiate from sibling tools like 'get_requirements' or 'get_definitions', which might provide related information without validation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for validation, or how it differs from sibling tools such as 'get_requirements' (which might list requirements) or 'generate_checklist' (which might create validation steps).

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. 7 tool updatesv0.4.5
    • Changedgenerate_checklist4 fields changed
      • addedInput schema / properties / includeSubsections
        Added value: +{
        +  "default": true,
        +  "description": "Include subsections when filtering by sections (default: true)",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / rfc / description
        Previous value: -"RFC 番号"New value: +"RFC number"
      • changedInput schema / properties / role / description
        Previous value: -"実装の役割(クライアント/サーバー/両方)"New value: +"Implementation role (client/server/both)"
      • changedInput schema / properties / sections / description
        Previous value: -"含めるセクション(省略時は全体)"New value: +"Sections to include (all if omitted)"
    • Changedget_definitions2 fields changed
      • changedInput schema / properties / rfc / description
        Previous value: -"RFC 番号"New value: +"RFC number"
      • changedInput schema / properties / term / description
        Previous value: -"特定の用語で検索"New value: +"Search for specific term"
    • Changedget_related_sections2 fields changed
      • changedInput schema / properties / rfc / description
        Previous value: -"RFC 番号"New value: +"RFC number"
      • changedInput schema / properties / section / description
        Previous value: -"基準となるセクション番号"New value: +"Base section number"
    • Changedget_requirements3 fields changed
      • changedInput schema / properties / level / description
        Previous value: -"要件レベルでフィルタ"New value: +"Filter by requirement level"
      • changedInput schema / properties / rfc / description
        Previous value: -"RFC 番号"New value: +"RFC number"
      • changedInput schema / properties / section / description
        Previous value: -"セクション番号でフィルタ(例: \"5.5.1\")"New value: +"Filter by section number (e.g., \"5.5.1\")"
    • Changedget_rfc_dependencies2 fields changed
      • changedInput schema / properties / includeReferencedBy / description
        Previous value: -"この RFC を参照している RFC も含めるか"New value: +"Include RFCs that reference this RFC"
      • changedInput schema / properties / rfc / description
        Previous value: -"RFC 番号"New value: +"RFC number"
    • Changedget_rfc_structure2 fields changed
      • changedInput schema / properties / includeContent / description
        Previous value: -"セクションの内容も含めるか(デフォルト: false)"New value: +"Include section content (default: false)"
      • changedInput schema / properties / rfc / description
        Previous value: -"RFC 番号(例: 6455)"New value: +"RFC number (e.g., 6455)"
    • Changedvalidate_statement2 fields changed
      • changedInput schema / properties / rfc / description
        Previous value: -"RFC 番号"New value: +"RFC number"
      • changedInput schema / properties / statement / description
        Previous value: -"検証したい実装や動作の説明"New value: +"Description of implementation or behavior to validate"
  2. 7 tool updates
    • First observedgenerate_checklist
    • First observedget_definitions
    • First observedget_related_sections
    • First observedget_requirements
    • First observedget_rfc_dependencies
    • First observedget_rfc_structure
    • First observedvalidate_statement

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific aspects of RFC analysis, with no overlap in functionality. For example, get_definitions extracts terms, get_requirements extracts normative language, and get_rfc_structure provides metadata, making misselection unlikely.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as get_definitions, validate_statement, and generate_checklist. This predictability enhances readability and usability for agents.

Tool Count5/5

With 7 tools, the server is well-scoped for RFC analysis, covering key operations like extraction, validation, and dependency mapping. Each tool earns its place without feeling excessive or insufficient for the domain.

Completeness4/5

The toolset provides comprehensive coverage for analyzing RFCs, including structure, definitions, requirements, and dependencies, with minor gaps such as lacking tools for editing or updating RFC content, but core workflows are well-supported.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables Large Language Models to search and access IETF RFC documents with pagination support.
    3
    13
    MIT
  • 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
    37 npm
    20
    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