Skip to main content
Glama

RFCXML MCP サーバー

npm version CI License: MIT Node.js Claude Code

日本語版 README

RFCドキュメントを構造的に理解するためのModel Context Protocol (MCP) サーバーです。

目的

既存のテキストベースのRFC MCPサーバーとは異なり、本サーバーはRFCXMLのセマンティック構造を活用することで、以下を実現します:

  • 構造化された出力による規範的要件(MUST/SHOULD/MAY)の抽出

  • RFC依存関係グラフの構築

  • 定義スコープの管理

  • 実装チェックリストの生成

Related MCP server: Unstructured Document Processor MCP

アーキテクチャ

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

既存のMCPとの比較

機能

既存の mcp-rfc

RFCXML MCP

RFCテキスト取得

✅

✅

セクション抽出

✅ (テキストベース)

✅ (構造ベース)

MUST/SHOULD/MAY抽出

❌

✅

条件/例外の構造化

❌

✅

RFC依存関係グラフ

❌

✅

定義スコープ管理

❌

✅

実装チェックリスト

❌

✅

クイックスタート

Claude Desktop / Claude Code での使用

MCP設定ファイルに以下を追加してください:

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

設定ファイルの場所:

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

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

  • Claude Code (プロジェクトスコープ): プロジェクトルートの .mcp.json

  • Claude Code (ユーザースコープ): ~/.claude.json

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

インストール (オプション)

グローバルインストールの場合:

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

その後、MCPを設定します:

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

利用可能なツール

フェーズ 1: 基本構造

  • get_rfc_structure - セクション階層とメタデータを取得

  • get_requirements - 規範的要件(MUST/SHOULD/MAY)を構造付きで抽出

  • get_definitions - 用語定義とそのスコープを取得

フェーズ 2: 関係性

  • get_rfc_dependencies - 参照されているRFC(規範的/参考)を取得

  • get_related_sections - 同一RFC内の関連セクションを取得

フェーズ 3: 検証サポート

  • validate_statement - ステートメントがRFC要件に準拠しているか検証

  • generate_checklist - 実装チェックリストを生成

レガシーRFCのサポート

RFC 8650(2019年12月)以降に発行されたRFCは、公式のRFCXML v3形式で利用可能です。それ以前のRFCはXMLが利用できない場合があります。

本サーバーには自動フォールバック機能が含まれており、XMLが利用できない場合は代わりにテキスト形式を解析します。

ソース情報

すべてのレスポンスにはソース情報が含まれます:

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

_source

説明

xml

RFCXMLから解析(高精度)

text

テキストから解析(中精度)

互換性

RFC

形式

備考

RFC 8650+

XML

公式RFCXML v3サポート

RFC 8650以前

テキスト

自動フォールバック

出力サンプル

get_rfc_structure - RFC構造の取得

{
  "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 - 規範的要件の抽出

{
  "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依存関係の取得

{
  "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 - 実装チェックリストの生成

# 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)

テキストフォールバック出力 (レガシーRFC)

{
  "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."
}

例

チェックリストの完全なサンプルについては、examples/ ディレクトリを参照してください:

RFC

プロトコル

ソース

RFC 6455

WebSocket

テキスト (フォールバック)

RFC 9293

TCP

RFCXML

RFC 7540

HTTP/2

テキスト (フォールバック)

Claudeへのプロンプト例:

Generate an implementation checklist for RFC 9293 (TCP).

内部アーキテクチャ

モジュール構造

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取得の最適化

複数のソース(RFC Editor、IETF Tools、Datatracker)に並列リクエストを送信し、最初に成功したレスポンスを使用します:

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

キャッシュ戦略

メモリ制限付きのLRU(Least Recently Used)キャッシュ:

キャッシュ

最大エントリ数

コンテンツ

XMLキャッシュ

20

生RFCXML

テキストキャッシュ

20

生テキスト

メタデータキャッシュ

100

RFCメタデータ

解析キャッシュ

50

解析済み構造

開発

# 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

ライセンス

MIT

関連プロジェクト

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