“RTFM!”他们说,但如果根本就没有手册可读呢?🤔 这就是MCP-RTFM:一个帮助你创建那个每个人都被要求阅读的手册的MCP服务器!通过高级内容分析、元数据生成和智能搜索能力,它将你的不存在或难以阅读的文档转换成一个相互关联的知识库,真正回答那些“基本问题”在它们被问之前。
剧情反转:现在,你不仅可以告诉人们去RTFM,还可以实际给他们一本值得阅读的手册!因为对“阅读手册”的最佳回应是有一本真正值得阅读的手册。📚✨
# 安装依赖
npm install
# 构建服务器
npm run build
# 添加到您的MCP设置并开始使用
await use_mcp_tool({
server: "mcp-rtfm",
tool: "analyze_project_with_metadata", // 增强初始化
args: { projectPath: "/path/to/project" }
});
// 这将:
// 1. 创建文档结构
// 2. 使用unified/remark进行内容分析
// 3. 生成智能元数据
// 4. 使用minisearch构建搜索索引
// 5. 添加结构化的前言
// 6. 让您的文档真正可读!
analyze_existing_docs - 分析并增强现有文档的内容和元数据analyze_project_with_metadata - 使用增强的内容分析和元数据生成初始化文档结构analyze_project - 基础文档结构初始化read_doc - 读取文档文件(更新前需要)update_doc - 使用基于差异的变化更新文档get_doc_content - 获取文档文件的当前内容get_project_info - 获取项目结构和文档状态search_docs - 在文档文件中搜索并显示高亮结果update_metadata - 更新文档元数据get_related_docs - 根据元数据和内容链接查找相关文档customize_template - 创建或更新文档模板服务器自动创建和管理这些核心文档文件:
techStack.md - 工具、库和配置的详细清单codebaseDetails.md - 代码结构和逻辑的低级解释workflowDetails.md - 关键流程的逐步工作流integrationGuides.md - 外部系统连接的说明errorHandling.md - 故障排除策略和实践handoff_notes.md - 关键主题和下一步的总结内置不同类型的文档模板:
可以使用customize_template工具创建自定义模板。
// 使用高级分析增强现有文档
await use_mcp_tool({
server: "mcp-rtfm",
tool: "analyze_existing_docs",
args: { projectPath: "/path/to/project" }
});
// 这将:
// - 查找.handoff_docs中的所有markdown文件
// - 使用unified/remark分析内容结构
// - 生成智能元数据
// - 构建搜索索引
// - 如果没有添加前言
// - 建立文档关系
// - 保存现有内容
// 结果包括:
// - 所有文档的增强元数据
// - 搜索索引填充
// - 内容关系映射
// - 如果可用的Git上下文
// 使用高级内容分析初始化文档
await use_mcp_tool({
server: "mcp-rtfm",
tool: "analyze_project_with_metadata",
args: { projectPath: "/path/to/project" }
});
// 结果包括:
// - 初始化的文档文件
// - 从内容分析生成的元数据
// - 建立文档关系
// - 填充搜索索引
// - 添加结构化的前言
// - Git仓库上下文
// 获取增强的项目信息
const projectInfo = await use_mcp_tool({
server: "mcp-rtfm",
tool: "get_project_info",
args: { projectPath: "/path/to/project" }
});
// 在文档中智能搜索
const searchResults = await use_mcp_tool({
server: "mcp-rtfm",
tool: "search_docs",
args: {
projectPath: "/path/to/project",
query: "认证"
}
});
// 结果包括:
// - 加权匹配(标题匹配优先)
// - 模糊搜索结果
// - 匹配的完整内容上下文
// - 相关文档建议
// 首先读取文档
await use_mcp_tool({
server: "mcp-rtfm",
tool: "read_doc",
args: {
projectPath: "/path/to/project",
docFile: "techStack.md"
}
});
// 使用链接到其他文档的内容更新
await use_mcp_tool({
server: "mcp-rtfm",
tool: "update_doc",
args: {
projectPath: "/path/to/project",
docFile: "techStack.md",
searchContent: "[为什么这个领域对项目至关重要]",
replaceContent: "技术栈文档提供了开发的重要背景。参见[[workflowDetails]]了解实施步骤。",
continueToNext: true // 自动移动到下一个文档
}
});
// 更新元数据以更好地组织
await use_mcp_tool({
server: "mcp-rtfm",
tool: "update_metadata",
args: {
projectPath: "/path/to/project",
docFile: "techStack.md",
metadata: {
title: "技术栈概述",
category: "架构",
tags: ["基础设施", "依赖项", "配置"]
}
}
});
// 查找相关文档
const related = await use_mcp_tool({
server: "mcp-rtfm",
tool:_get_related_docs,
args: {
projectPath: "/path/to/project",
docFile: "techStack.md"
}
});
// 使用高亮结果搜索
const results = await use_mcp_tool({
server: "mcp-rtfm",
tool: "search_docs",
args: {
projectPath: "/path/to/project",
query: "认证"
}
});
// 结果包括:
// - 文件名
// - 行号
// - 高亮匹配
// - 匹配周围的上下文
// 为架构决策创建自定义模板
await use_mcp_tool({
server: "mcp-rtfm",
tool: "customize_template",
args: {
templateName: "architecture-decision",
content: `# {title}
## 上下文
[决策的背景和上下文]
## 决策
[做出的架构决策]
## 后果
[决策的影响和权衡]
## 相关决策
[与相关架构决策的链接]`,
metadata: {
category: "架构",
tags: ["决策记录", "设计"]
}
}
});
添加到设置文件:
%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json{
"mcpServers": {
"mcp-rtfm": {
"command": "node",
"args": ["<path-to-mcp-rtfm>/build/index.js"],
"disabled": false,
"alwaysAllow": []
}
}
}
添加到配置文件:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.json{
"mcpServers": {
"mcp-rtfm": {
"command": "node",
"args": ["<path-to-mcp-rtfm>/build/index.js"],
"disabled": false,
"alwaysAllow": []
}
}
}
使用[[文档名称]]语法在文档之间创建链接。服务器会自动跟踪这些关系,并在查找相关文档时包含它们。
文档使用以下方式进行组织:
服务器使用高级库来更好地管理文档:
unified/remark用于Markdown处理:
minisearch用于强大的搜索能力:
# 安装依赖
npm install
# 构建服务器
npm run build
# 开发时自动重建
npm run watch
由于MCP服务器通过stdio通信,调试可能会很困难。使用MCP Inspector:
npm run inspector
Inspector将提供一个URL,以便您可以在浏览器中访问调试工具。
MIT © Model Context Protocol