An MCP server that automatically generates documentation, test plans, and code reviews for code repositories by analyzing directory structures and code files using AI models via OpenRouter API.
An MCP (Model Context Protocol) server that automatically generates documentation for code repositories by analyzing directory structures and code files using OpenRouter API.
.gitignore
patterns to skip ignored filesdocumentation.md
, testplan.md
, and review.md
files at each directory level# Clone the repository git clone https://github.com/PARS-DOE/autodocument.git cd autodocument # Install dependencies npm install # Build the project npm run build
Configure autodocument using environment variables, command-line arguments, or an MCP configuration file:
OPENROUTER_API_KEY
: Your OpenRouter API keyOPENROUTER_MODEL
: Model to use (default: anthropic/claude-3-7-sonnet
)MAX_FILE_SIZE_KB
: Maximum file size in KB (default: 100)MAX_FILES_PER_DIR
: Maximum number of files per directory (default: 20)Roo Code and Cline are AI assistants that support the Model Context Protocol (MCP), which allows them to use external tools like autodocument.
Clone and build the repository (follow the Installation Steps above)
Configure the MCP server:
In the MCP Servers menu, Edit the MCP Settings and add the autodocument configuration using the full path to where you cloned the repository:
Add the autodocument configuration using the full path to where you cloned the repository:
{ "mcpServers": { "autodocument": { "command": "node", "args": ["/path/to/autodocument/build/index.js"], "env": { "OPENROUTER_API_KEY": "your-api-key-here" }, "disabled": false, "alwaysAllow": [] } } }
Edit the Claude desktop app configuration file at:
%APPDATA%\Claude\claude_desktop_config.json
~/Library/Application Support/Claude/claude_desktop_config.json
~/.config/Claude/claude_desktop_config.json
Add the autodocument configuration using the full path to where you cloned the repository:
{ "mcpServers": { "autodocument": { "command": "node", "args": ["/path/to/autodocument/build/index.js"], "env": { "OPENROUTER_API_KEY": "your-api-key-here" }, "disabled": false, "alwaysAllow": [] } } }
Important: Make sure to use absolute paths to the build/index.js file in your cloned repository
Restart Roo/Cline or the Claude desktop app
Use the tool: In a conversation with Roo or Claude, you can now ask it to generate documentation or test plans for your code repository:
Please generate documentation for my project at /path/to/my/project
Or for test plans:
Please create a test plan for my project at /path/to/my/project
Or for code reviews:
Please review the code in my project at /path/to/my/project
The autodocument server works using a bottom-up approach:
.gitignore
rulesdocumentation.md
file (or updates existing one)The project follows a modular architecture:
# 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 + ' '); // Handle server output and errors // ...
You can easily customize the prompts used by the tools by editing the src/prompt-config.ts
file. This allows you to:
The prompt configuration is separated from the tool implementation, making it easy to experiment with different prompts without changing the code.
Generates comprehensive documentation for a code repository:
{
"path": "/path/to/your/project",
"openRouterApiKey": "your-api-key-here", // Optional
"model": "anthropic/claude-3-7-sonnet", // Optional
"updateExisting": true // Optional, defaults to true
}
Generates test plans for functions and components in a code repository:
{
"path": "/path/to/your/project",
"openRouterApiKey": "your-api-key-here", // Optional
"model": "anthropic/claude-3-7-sonnet", // Optional
"updateExisting": true // Optional, defaults to true
}
Generates a senior developer-level code review for a repository:
{
"path": "/path/to/your/project",
"openRouterApiKey": "your-api-key-here", // Optional
"model": "anthropic/claude-3-7-sonnet", // Optional
"updateExisting": true // Optional, defaults to true
}
The server creates several types of output files:
Contains comprehensive documentation of the code in a directory, including:
Contains detailed test plans for code in a directory, including:
Contains senior developer-level code review feedback, including:
Created when a directory exceeds size or file count limits:
undocumented.md
- For documentation generationuntested.md
- For test plan generationreview-skipped.md
- For code review generationThese files contain:
If you see errors about invalid API key:
OPENROUTER_API_KEY
environment variableIf too many directories are skipped due to size limits:
MAX_FILE_SIZE_KB
and MAX_FILES_PER_DIR
If you're not satisfied with the documentation quality:
OPENROUTER_MODEL
environment variableCC0-1.0 License - This work is dedicated to the public domain under CC0 by the United States Department of Energy
Contributions are welcome! Please feel free to submit a Pull Request.
The architecture is designed to make it easy to add new auto-* tools:
BaseTool
in the src/tools
directorysrc/prompt-config.ts
ToolRegistry
See the existing tools for examples of how to implement new functionality.
Discover shared experiences
Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!