MCP-Server-IETF
Provides integration with Git for cloning the repository during installation from source.
Enables accessing the source repository at github.com/tizee/mcp-server-ietf for installation and contributions.
Supports development workflows through a Makefile with commands for running the inspector and tests.
Integrates with pytest for running the test suite to validate server functionality.
Built on Python 3.11+, utilizing its capabilities for implementing the MCP server functionality.
Uses TOML format for dependency management through the pyproject.toml file.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP-Server-IETFsearch for RFCs about HTTP protocol"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP-Server-IETF
A Model Context Protocol server for fetching IETF documents (RFCs) for Large Language Models.
Overview
This project implements a Model Context Protocol (MCP) server that provides access to IETF RFC documents. It enables Large Language Models to access RFC specifications through a standardized interface.
Key features:
Download and cache RFC index and documents
Search RFCs by keyword in titles
Access RFC documents with pagination support
Extract metadata like page numbers from documents
Related MCP server: Unstructured Document Processor MCP
Installation
Requirements
Python 3.11 or higher
Dependencies as listed in
pyproject.toml
Install from source
# Clone the repository
git clone https://github.com/tizee/mcp-server-ietf
cd mcp-server-ietf
# Install with pip
pip install -e .Usage
Starting the server
# Start the server
mcp-server-ietfOr use it with the MCP inspector:
npx @modelcontextprotocol/inspector uv run mcp-server-ietfAvailable Tools
When connected to the server, the following tools are available:
list_docs_number
Get the total number of RFC documents available in the index.
get_doc
Get an RFC document by its number with pagination support.
Parameters:
number: The RFC number (e.g., "1234")start_line: The line number to start from (default: 1)max_lines: Maximum number of lines to return (default: 200)
search_rfc_by_keyword
Search for RFC documents by keyword in their titles.
Parameters:
keyword: The search term to look for in RFC titles
Development
Setup Development Environment
# Install development dependencies
uv install -e .[dev]Run inspector with Makefile:
make devRunning Tests
# Run tests
uv run pytestOr using the Makefile:
make testCache Location
By default, the server caches RFC documents and the index at ~/.cache/ietf-doc-server.
Environment Variables
LOG_LEVEL: Set the logging level (default: "DEBUG")
License
MIT License - See LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Available Tools
3 toolsget_ietf_docC
Get an RFC document by its number in RFC editor Index with pagination support
Args:
number: The RFC number str (e.g., "1234")
start_line: The line number to start from (default: 1)
max_lines: Maximum number of lines to return (default: 200)
Returns:
A dictionary containing the document content and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| max_lines | No | ||
| number | Yes | ||
| start_line | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'pagination support' and describes the return format ('A dictionary containing the document content and metadata'), which adds some context. However, it lacks details on error handling (e.g., what happens if the RFC number doesn't exist), rate limits, authentication needs, or whether this is a read-only operation. For a tool with 3 parameters and no annotations, this leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized, with a clear purpose statement followed by 'Args:' and 'Returns:' sections. Each sentence adds value, such as explaining pagination and parameter defaults. There's no redundant or wasted text, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 parameters, no annotations, no output schema), the description is moderately complete. It covers the basic purpose, parameters, and return format, but lacks details on behavioral aspects like error handling, rate limits, and differentiation from siblings. Without annotations or an output schema, more context on usage and behavior would improve completeness for reliable agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly lists all 3 parameters with brief explanations (e.g., 'The RFC number str', 'The line number to start from'), adding meaning beyond the input schema, which has 0% description coverage. However, it doesn't fully compensate for the schema's lack of descriptions—for example, it doesn't clarify the format of 'number' (though it gives an example '1234'), validate ranges for 'start_line' or 'max_lines', or explain edge cases. With 0% schema coverage, the description provides basic but incomplete parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 an RFC document by its number in RFC editor Index with pagination support'. This specifies the verb ('Get'), resource ('RFC document'), and key functionality ('pagination support'). However, it doesn't explicitly differentiate from sibling tools like 'list_ietf_docs_number' or 'search_ietf_rfc_by_keyword', which likely serve different purposes (listing vs. searching).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 mentions pagination support but doesn't explain when to use this tool over 'list_ietf_docs_number' (which might list documents) or 'search_ietf_rfc_by_keyword' (which might search by content). There's no mention of prerequisites, exclusions, or specific contexts for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ietf_docs_numberB
Get the total number of IETF RFC documents available in RFC editor Index
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but lacks details on traits such as rate limits, authentication needs, data freshness, or error handling. For a tool with zero annotation coverage, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key action and resource. It avoids unnecessary words and directly communicates the tool's function, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It explains the purpose but lacks behavioral context and output details (e.g., what format the count is returned in). For a tool with no structured data to rely on, it should provide more completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the input schema has 100% description coverage (though empty). The description doesn't need to explain parameters, so it appropriately focuses on the tool's purpose. A baseline of 4 is justified as there are no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('total number of IETF RFC documents'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_ietf_doc' (which likely retrieves specific documents) or 'search_ietf_rfc_by_keyword' (which searches content), though the focus on 'total number' implies a distinct counting function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description implies it returns a count, but it doesn't specify scenarios (e.g., for inventory checks or before bulk operations) or contrast with siblings like 'search_ietf_rfc_by_keyword' for filtered results. This leaves the agent without explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ietf_rfc_by_keywordB
Search for IETF RFC documents from RFC Editor Index by keyword in their titles
Args:
keyword: The keyword to search for
Returns:
A list of matching RFCs with their numbers and titles
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes |
TDQS
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 the search scope (keyword in titles) and return format (list of matching RFCs with numbers and titles), but lacks details on critical behaviors like pagination, rate limits, error handling, or whether the search is case-sensitive. For a search tool with zero annotation coverage, this leaves significant gaps in understanding its operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise, with zero wasted words. It front-loads the core purpose in the first sentence, followed by clear sections for 'Args' and 'Returns'. Each sentence earns its place by providing essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (a search function with one parameter) and lack of annotations or output schema, the description is minimally adequate. It covers the basic purpose, parameter use, and return format, but doesn't address behavioral aspects like search limitations or result ordering. Without an output schema, the description should ideally detail the structure of returned RFC objects, which it only partially does by mentioning 'numbers and titles'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context beyond the input schema. The schema only defines 'keyword' as a string with 0% description coverage. The description clarifies that this keyword is used to search 'in their titles' and specifies the source ('RFC Editor Index'), which helps the agent understand the parameter's role and constraints. With only one parameter, this compensation is effective, though it could benefit from examples or format hints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for IETF RFC documents from RFC Editor Index by keyword in their titles.' It specifies the verb (search), resource (IETF RFC documents), and scope (RFC Editor Index, keyword in titles). However, it doesn't explicitly distinguish this from sibling tools like 'get_ietf_doc' or 'list_ietf_docs_number', which likely retrieve documents by specific identifiers rather than keyword searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 this search method is preferred over others, such as when users have only partial title information. Without such guidance, the agent must infer usage based on tool names alone.
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. Dates show when Glama detected each change.
3 tool updates
v1.0.0- First observed
get_ietf_doc - First observed
list_ietf_docs_number - First observed
search_ietf_rfc_by_keyword
TDQS
Each tool has a clearly distinct purpose with no overlap: get_ietf_doc retrieves specific documents, list_ietf_docs_number provides metadata about document count, and search_ietf_rfc_by_keyword enables keyword-based discovery. The descriptions clearly differentiate between retrieval, counting, and searching functions.
The tools follow a mostly consistent verb_noun pattern with get_, list_, and search_ prefixes, though 'list_ietf_docs_number' deviates slightly by including 'number' in the name rather than using a more conventional pattern like 'count_ietf_docs'. The snake_case convention is consistently applied throughout.
With only 3 tools, the server feels somewhat thin for an IETF/RFC document access service. While the tools cover basic retrieval and search, the count is borderline minimal for what could reasonably include operations like filtering by date, accessing drafts, or managing document collections.
The toolset covers fundamental document access (get, count, search) but has notable gaps for a complete IETF document service. Missing operations include filtering by date or status, accessing IETF drafts (not just RFCs), and more advanced search capabilities beyond simple keyword matching in titles.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceA Model Context Protocol server enabling LLMs to search, retrieve, and manage documents through Rememberizer's knowledge management API.35Apache 2.0
- FlicenseBqualityDmaintenanceA Model Context Protocol server that enables LLMs to extract and use content from unstructured documents across a wide variety of file formats.111-
- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) compliant server that allows Large Language Models (LLMs) to search and retrieve content from microCMS APIs.2MIT
- FlicenseNot gradedqualityDmaintenanceA simple Model Context Protocol server that enables searching and retrieving relevant documentation snippets from Langchain, Llama Index, and OpenAI official documentation.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tizee/mcp-server-ietf'
If you have feedback or need assistance with the MCP directory API, please join our Discord server