自动记录MCP服务器
一种MCP(模型上下文协议)服务器,通过使用OpenRouter API分析目录结构和代码文件,自动为代码库生成文档。
特性
- 智能目录分析:递归分析代码存储库中的目录和文件
- Git集成:尊重
.gitignore跳过忽略文件的模式 - AI驱动的文档:使用OpenRouter API(默认为Claude 3.7)生成全面的文档
- 测试计划生成:自动创建具有适当测试类型、边缘用例和模拟需求的测试计划
- 代码审查:执行高级开发人员级别的代码审查,重点关注安全性、最佳实践和改进
- 由下而上:从叶子目录开始,向上工作,创建连贯的文档层次结构
- 智能文件处理:
- 创建 documentation.md, testplan.md,以及 review.md 每个目录级别的文件 - 跳过单个文件目录,但将其内容包含在父输出中 - 支持更新现有文件 - 为超出限制的目录创建回退文件
- 进度报告:提供详细的进度更新,以防止长时间运行的操作超时
- 高度可配置性:自定义文件扩展名、大小限制、模型、提示等
- 可扩展架构:模块化设计使未来添加更多自动工具变得容易
安装
先决条件
- Node.js(v16或更新版本)
- 一 OpenRouter API密钥
安装步骤
# Clone the repository
git clone https://github.com/PARS-DOE/autodocument.git
cd autodocument
# Install dependencies
npm install
# Build the project
npm run build配置
使用环境变量、命令行参数或MCP配置文件配置自动文档:
环境变量
OPENROUTER_API_KEY:您的OpenRouter API密钥OPENROUTER_MODEL:要使用的模型(默认值:anthropic/claude-3-7-sonnet)MAX_FILE_SIZE_KB:最大文件大小(KB)(默认值:100)MAX_FILES_PER_DIR:每个目录的最大文件数(默认值:20)
与Roo或Cline一起使用
Roo Code和Cline是支持模型上下文协议(MCP)的人工智能助手,允许他们使用自动文档等外部工具。
Roo/Cline的设置
- 克隆并构建存储库 (按照上述安装步骤操作)
- 配置MCP服务器:
#### 对于Roo:
在MCP服务器菜单中,编辑MCP设置,并使用克隆存储库的完整路径添加自动文档配置:
使用克隆存储库的完整路径添加自动文档配置:
{
"mcpServers": {
"autodocument": {
"command": "node",
"args": ["/path/to/autodocument/build/index.js"],
"env": {
"OPENROUTER_API_KEY": "your-api-key-here"
},
"disabled": false,
"alwaysAllow": []
}
}
}#### 对于Claude桌面应用程序:
在以下位置编辑Claude桌面应用程序配置文件:
- 窗户: %APPDATA%\Claude\claude_desktop_config.json - macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json
使用克隆存储库的完整路径添加自动文档配置:
{
"mcpServers": {
"autodocument": {
"command": "node",
"args": ["/path/to/autodocument/build/index.js"],
"env": {
"OPENROUTER_API_KEY": "your-api-key-here"
},
"disabled": false,
"alwaysAllow": []
}
}
}- 重要提示: 确保使用克隆存储库中build/index.js文件的绝对路径
- 重新启动Roo/Cline或Claude桌面应用程序
- 使用工具:
在与Roo或Claude的对话中,您现在可以要求它为您的代码库生成文档或测试计划:
Please generate documentation for my project at /path/to/my/project或测试计划:
Please create a test plan for my project at /path/to/my/project或者用于代码审查:
Please review the code in my project at /path/to/my/project运作原理
autodocument服务器使用自下而上的方法工作:
- 发现:递归扫描目标目录,尊重
.gitignore规则 - 智能目录处理:
- 标识包含多个代码文件或子目录的目录 - 跳过单个文件目录,但将其内容包含在父文档中
- 文件分析:分析代码文件,按扩展名和大小进行筛选
- 文档生成:对于每个符合条件的目录:
- 读取代码文件 - 使用优化的提示将代码发送到OpenRouter API - 创建一个 documentation.md 文件(或更新现有文件)
- 聚合:当它在目录树中向上移动时:
- 处理每个父目录 - 包括子目录中的文档 - 在每个级别创建全面的概述
建筑
该项目采用模块化架构:
- 核心组件:配置管理和服务器实施
- 爬虫模块:目录遍历和文件发现
- 分析仪模块:代码文件分析和过滤
- OpenRouter模块:基于LLM的内容生成的AI集成
- 文档模块:文件编制过程的编排
- 工具模块:适用于不同auto-\*工具(文档、测试计划等)的可扩展系统
- 提示配置:集中提示管理,便于定制
示例用法
命令行
# Navigate to your cloned repository
cd path/to/cloned/autodocument
# Set your API key (or configure in environment variables)
export OPENROUTER_API_KEY=your-api-key-here
# Run documentation generation on a project
node build/index.js /path/to/your/project程序化使用
const { spawn } = require('child_process');
const path = require('path');
// Path to your project
const projectPath = '/path/to/your/project';
// Your OpenRouter API key
const apiKey = 'your-api-key-here';
// Create a JSON command to simulate an MCP tool call
const toolCallCommand = JSON.stringify({
jsonrpc: '2.0',
method: 'call_tool',
params: {
name: 'generate_documentation',
arguments: {
path: projectPath,
openRouterApiKey: apiKey
}
},
id: 1
});
// Start the server process - use the full path to your cloned repository
const serverProcess = spawn('node', ['/path/to/autodocument/build/index.js'], {
env: {
...process.env,
OPENROUTER_API_KEY: apiKey
}
});
// Send the tool command
serverProcess.stdin.write(toolCallCommand + '\n');
// Handle server output and errors
// ...自定义提示
您可以通过编辑来轻松自定义工具使用的提示 src/prompt-config.ts 文件。这使您能够:
- 调整生成内容的基调和风格
- 为您的项目需求添加具体说明
- 修改现有内容的更新方式
提示配置与工具实现是分开的,这使得在不更改代码的情况下很容易尝试不同的提示。
可用工具
生成文档
为代码存储库生成全面的文档:
{
"path": "/path/to/your/project",
"openRouterApiKey": "your-api-key-here", // Optional
"model": "anthropic/claude-3-7-sonnet", // Optional
"updateExisting": true // Optional, defaults to true
}自动测试计划
为代码存储库中的功能和组件生成测试计划:
{
"path": "/path/to/your/project",
"openRouterApiKey": "your-api-key-here", // Optional
"model": "anthropic/claude-3-7-sonnet", // Optional
"updateExisting": true // Optional, defaults to true
}作者视图
为存储库生成高级开发人员级别的代码审查:
{
"path": "/path/to/your/project",
"openRouterApiKey": "your-api-key-here", // Optional
"model": "anthropic/claude-3-7-sonnet", // Optional
"updateExisting": true // Optional, defaults to true
}输出文件
服务器创建几种类型的输出文件:
documentation.md
包含目录中代码的全面文档,包括:
- 准则的目的
- 关键功能和类
- 文件之间的关系
- 与子组件集成
测试平面.md
包含目录中代码的详细测试计划,包括:
- 每个功能的适当测试类型(单元、集成、e2e)
- 要测试的常见边缘情况
- 依赖模拟需求
- 集成测试策略
review.md
包含高级开发人员级别的代码审查反馈,包括:
- 安全问题和漏洞
- 违反最佳做法
- 潜在的错误或架构问题
- 重构的机会
- 实用、建设性的反馈(不是吹毛求疵的问题)
回退文件
当目录超过大小或文件数限制时创建:
undocumented.md-用于文档生成untested.md-用于生成测试计划review-skipped.md-用于代码审查生成
这些文件包含:
- 跳过处理的原因
- 已分析和排除的文件列表
- 关于如何修复(增加限制或手动创建内容)的说明
故障排除
API关键问题
如果您看到有关无效API密钥的错误:
- 确保您已设置
OPENROUTER_API_KEY环境变量 - 检查您的OpenRouter帐户是否处于活动状态
- 验证您是否有足够的信用用于API调用
大小限制错误
如果由于大小限制跳过了太多目录:
- 设置环境变量以增加限制:
MAX_FILE_SIZE_KB和MAX_FILES_PER_DIR - 考虑手动记录非常大的目录
模型选择
如果您对文档质量不满意:
- 通过设置来尝试不同的模型
OPENROUTER_MODEL环境变量
许可证
CC0-1.0许可证-本作品由美国能源部根据CC0专用于公共领域
贡献
欢迎投稿!请随时提交拉取请求。
添加新工具
该架构旨在使添加新的auto-\*工具变得容易:
- 创建一个扩展的新类
BaseTool在src/tools目录 - 在中定义提示
src/prompt-config.ts - 在中注册该工具
ToolRegistry
有关如何实现新功能的示例,请参阅现有工具。
