关于 rtfmbro-mcp
rtfmbro-mcp 是一个 MCP 服务,为编码 Agent 提供与项目锁定版本一致的软件包文档。它直接从 GitHub 仓库按版本标签获取文档,适合需要准确、最新 API 文档的开发者。项目定位为 context7 的替代方案。
主要功能
- 01按 lockfile 中的确切版本获取文档
- 02支持 PyPI 与 npm 生态,Swift 为 Alpha
- 03基于提交 SHA 的缓存有效性检查
- 04提供 README、文档目录与文件读取工具
- 05可通过远程 HTTP 服务接入
适用场景
- 01让编码 Agent 查阅项目所用旧版本库的 API 文档
- 02避免模型依赖过时训练数据编写代码
- 03减少浏览 node_modules 等源码时的 token 消耗
MCP 相关
该项目是 MCP 服务,向 MCP 客户端提供 get_readme、get_documentation_tree、read_files 和 search_github_repositories 四个工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://rtfmbro.smolosoft.dev/mcp/claude mcp add --transport http rtfmbro https://rtfmbro.smolosoft.dev/mcp/{"mcpServers":{"rtfmbro":{"type":"http","url":"https://rtfmbro.smolosoft.dev/mcp/"}}}在 Cursor 中打开{"servers":{"rtfmbro":{"type":"http","url":"https://rtfmbro.smolosoft.dev/mcp/"}}}在 VS Code 中打开{"mcpServers":{"rtfmbro":{"type":"http","url":"https://rtfmbro.smolosoft.dev/mcp/"}}}{"mcpServers":{"rtfmbro":{"serverUrl":"https://rtfmbro.smolosoft.dev/mcp/"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
rtfmbro-mcp
rtfmbro 为编码 Agent 提供始终最新、特定版本的包文档作为上下文。它是 context7 的替代方案。
https://github.com/user-attachments/assets/dbe0b3b4-a42c-4e91-8bcd-a94d430ef0b8
rtfmbro 使用演示:获取 Flask 特定版本(3.1.1)的 README 和 文档。
概述
rtfmbro 是一个模型上下文协议(MCP)服务,可实时获取多个生态系统中软件包的文档,并感知版本。它通过直接从 GitHub 仓库获取与你的项目所用版本完全一致的文档,弥合 AI Agent 与准确、最新的软件包文档之间的差距。
支持的生态系统
| 生态系统 | 注册表 | 状态 |
|---|---|---|
| Python | PyPI | ✅ 完全支持 |
| Node.js | npm | ✅ 完全支持 |
| Swift | SPM | 🚧 Alpha |
| GitHub | Direct | ⚠️ 后备方案 |
为什么选择 rtfmbro?
问题所在
- 文档过时:AI 模型通常依赖过时的包训练数据
- 缺少上下文:
node_modules等目录中的源代码缺少高层次文档,浏览这些代码通常会消耗大量令牌,效率低下 - 版本不匹配:通用文档与特定的软件包版本不匹配,尤其是旧项目或全新软件包
解决方案
rtfmbro 通过以下方式尝试解决这些问题:
- 精准获取版本:从与你的锁定文件匹配的确切 Git 标签/提交中检索文档
- 全面覆盖:从仓库中提取所有文档文件(
.md、.mdx、.txt、.rst、.html) - 智能缓存:基于 SHA 的时效性检查确保文档保持最新,避免不必要的重新获取
- Agent 集成:通过模型上下文协议与 AI 编码助手无缝集成
- 出色的开发体验:开发者无需进行任何设置,只需将服务添加到 MCP 配置和指令中,即可开始获取文档
MCP 工具
此服务向 AI Agent 提供四种主要工具:
| 工具 | 用途 | 参数 | 返回值 |
|---|---|---|---|
get_readme | 获取并返回特定软件包版本的 README 文件 | package、version、ecosystem | README 内容字符串 |
get_documentation_tree | 生成包含所有文档文件的完整文件夹结构 | package、version、ecosystem | 树结构字符串 |
read_files | 读取指定文档文件,可选按行范围切片 | package、version、ecosystem、requests[] | 将路径映射到内容的字典 |
search_github_repositories | 使用 GitHub Search API 搜索 GitHub 仓库 | query、sort、order、per_page | 格式化的仓库搜索结果 |
安装与设置
快速开始
Claude Code
claude mcp add-json rtfmbro '{ "type": "http", "url": "https://rtfmbro.smolosoft.dev/mcp/" }'
Claude Desktop / VS Code / 等
将远程服务添加到你的 MCP 配置中:
{
"rtfmbro": {
"type": "http",
"url": "https://rtfmbro.smolosoft.dev/mcp/"
}
}
Cursor
Agent 集成
若要将 rtfmbro 真正集成到你选择的 AI 编码 Agent 中,请将相应的元指令文件复制到你的项目中:
- GitHub Copilot:将
.github/copilot-instructions.md复制到你的项目中 - Claude Code:将
CLAUDE.md复制到你的项目根目录 - Cursor:将
.cursor/rules复制到你的项目根目录 - 其他 Agent:将上述任一文件中的指令改写为你的 Agent 所用的格式
工作原理
文档工作流
- 注册表查询:从软件包注册表(PyPI、npm 等)查询元数据
- GitHub 发现:从软件包元数据中提取 GitHub 仓库 URL
- 版本解析:获取可用的 Git 标签,并与语义化版本进行匹配
- 智能获取:在精确匹配的标签/提交处克隆仓库
- 内容筛选:仅提取文档文件,移除源代码和构建产物
- 缓存与时效性:存储结果,并通过基于 SHA 的时效性检查,实现高效的再次访问
缓存策略
- 基于 SHA 的验证:将当前仓库提交 SHA 与缓存版本进行比较
- 自动失效:检测到新提交时,重新获取文档
- 持久化存储:维护本地缓存,避免重复调用 GitHub API
- 保留元数据:存储文档树结构,以便快速浏览
先决条件
- 软件包必须发布到受支持的注册表(PyPI、npm)
- 软件包元数据必须包含有效的 GitHub 仓库链接
- 仓库必须使用 git 标签进行版本管理
- 仓库中必须包含文档文件(而非只有生成的网站)
路线图
近期计划
- 独立于生态系统的回退机制:为不受支持的生态系统实现回退机制
- 提供 rtfmbro 源代码:开源服务端代码库
- 公开的 docker 镜像:创建公开的 Docker 镜像,以便轻松部署
- 支持私有仓库:允许经过身份验证后访问私有仓库
- 添加测试:为核心功能实现单元测试和集成测试
- 增强 Python 支持:包含 pydocs 和 docstring 提取
- 搜索功能:支持在文档语料库中搜索
未来支持的生态系统 / 语言 / 注册表
- Rust(crates.io)
- Go(pkg.go.dev)
- Java/Kotlin(Maven Central)
- C#/.NET(NuGet)
- Ruby(RubyGems)
源代码托管与仓库支持:
- GitHub:支持 GitHub 仓库
- Gitlab:支持 GitLab 仓库
- Bitbucket:支持 Bitbucket 仓库
- Launchpad:支持 Launchpad 仓库
已知问题
- 某些软件包的文档可能位于独立的仓库中
- 大型仓库首次克隆和处理可能需要一些时间
类似 / 补充项目
- mcp-package-docs:另一个用于软件包文档的 MCP 服务,侧重于文档提取、LSP 服务等。它可能是 rtfmbro 的绝佳补充。
- rust-docs-mcp-server:用于 Rust 文档的 MCP 服务,专注于 Rust 特有功能和文档格式。
- mcp-ragdocs:用于 RAG(检索增强生成)文档的 MCP 服务,旨在改善 AI 模型的文档使用体验。
- godoc-mcp:用于 Go 文档的 MCP 服务,通过 Model Context Protocol 提供 Go 软件包文档的访问能力。
- context7:rtfmbro 的替代方案
context7 与 rtfmbro 的区别
| 方面 | context7 | rtfmbro |
|---|---|---|
| 时效性 | 会按不透明的时间间隔或在用户触发时提前抓取文档。截至撰写本文时,最新的 Next.js 文档已经过时 2 天。 | 按需即时抓取文档,确保文档始终是最新的。 |
| 特定版本的文档 | 理论上支持抓取旧版本(适用于遗留项目或长期维护的项目),但流程较为复杂,实际上能用的基本只有最新版本。 | 按需即时抓取旧版文档,同时始终保持最新,与最新文档一致。 |
| 搜索策略 | 使用以下任一方式:A)可选的、受 token 限制的 RAG 搜索,用于筛选/预处理文档,但效果可能时好时坏;或 B)将所有内容都塞入大模型的上下文,导致 token 用量过高。 | 采用 Agent 式发现机制(Claude Code 自身也采用此方式)。 |
| 开发者体验 | 每次编写提示词时都必须明确提及 context7。 | 通过预先定义的规则/指令运行,自动从锁定文件中选择适当的包名/版本(“设置后即可不管”)。 |
| 支持 | 与语言/生态系统无关。 | 目前针对特定语言/生态系统;计划很快支持更多语言/生态系统,并提供与语言无关的回退机制。 |
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。