mcp-rtfm
# MCP-RTFM
[](https://www.typescriptlang.org/)
[](https://github.com/modelcontextprotocol)
[](https://opensource.org/licenses/MIT)
> "RTFM!" they say, but what if there's no FM to R? 🤔 Enter MCP-RTFM: an MCP server that helps you *create* the F*ing Manual everyone keeps telling people to read! Using advanced content analysis, metadata generation, and intelligent search capabilities, it transforms your non-existent or unreadable docs into an interconnected knowledge base that actually answers those "basic questions" before they're asked.
> **Plot twist**: Instead of just telling people to RTFM, now you can actually give them an FM worth R-ing! Because the best response to "read the f*ing manual" is having a manual that's actually worth reading. 📚✨
## 📚 Table of Contents
- [Quick Start](#-quick-start)
- [Features](#-features)
- [Example Workflows](#-example-workflows)
- [Installation](#-installation)
- [Advanced Features](#-advanced-features)
- [Development](#-development)
- [Debugging](#-debugging)
## 🚀 Quick Start
```bash
# Install dependencies
npm install
# Build the server
npm run build
# Add to your MCP settings and start using
await use_mcp_tool({
server: "mcp-rtfm",
tool: "analyze_project_with_metadata", // Enhanced initialization
args: { projectPath: "/path/to/project" }
});
// This will:
// 1. Create documentation structure
// 2. Analyze content with unified/remark
// 3. Generate intelligent metadata
// 4. Build search index with minisearch
// 5. Add structured front matter
// 6. Make your docs actually readable!
```
## ✨ Features
### Documentation Management Tools
- `analyze_existing_docs` - Analyze and enhance existing documentation with content analysis and metadata
- `analyze_project_with_metadata` - Initialize documentation structure with enhanced content analysis and metadata generation
- `analyze_project` - Basic initialization of documentation structure
- `read_doc` - Read a documentation file (required before updating)
- `update_doc` - Update documentation using diff-based changes
- `get_doc_content` - Get current content of a documentation file
- `get_project_info` - Get project structure and documentation status
- `search_docs` - Search across documentation files with highlighted results
- `update_metadata` - Update documentation metadata
- `get_related_docs` - Find related documentation based on metadata and content links
- `customize_template` - Create or update documentation templates
### Default Documentation Files
The server automatically creates and manages these core documentation files:
- `techStack.md` - Detailed inventory of tools, libraries, and configurations
- `codebaseDetails.md` - Low-level explanations of code structure and logic
- `workflowDetails.md` - Step-by-step workflows for key processes
- `integrationGuides.md` - Instructions for external system connections
- `errorHandling.md` - Troubleshooting strategies and practices
- `handoff_notes.md` - Summary of key themes and next steps
### Documentation Templates
Built-in templates for different documentation types:
- Standard Documentation Template
- API Documentation Template
- Workflow Documentation Template
Custom templates can be created using the `customize_template` tool.
## 📝 Example Workflows
### 1. Analyzing Existing Documentation
```typescript
// Enhance existing documentation with advanced analysis
await use_mcp_tool({
server: "mcp-rtfm",
tool: "analyze_existing_docs",
args: { projectPath: "/path/to/project" }
});
// This will:
// - Find all markdown files in .handoff_docs
// - Analyze content structure with unified/remark
// - Generate intelligent metadata
// - Build search index
// - Add front matter if not present
// - Establish document relationships
// - Preserve existing content
// The results include:
// - Enhanced metadata for all docs
// - Search index population
// - Content relationship mapping
// - Git context if available
```
### 2. Enhanced Project Documentation Setup
```typescript
// Initialize documentation with advanced content analysis
await use_mcp_tool({
server: "mcp-rtfm",
tool: "analyze_project_with_metadata",
args: { projectPath: "/path/to/project" }
});
// Results include:
// - Initialized documentation files
// - Generated metadata from content analysis
// - Established document relationships
// - Populated search index
// - Added structured front matter
// - Git repository context
// Get enhanced project information
const projectInfo = await use_mcp_tool({
server: "mcp-rtfm",
tool: "get_project_info",
args: { projectPath: "/path/to/project" }
});
// Search across documentation with intelligent results
const searchResults = await use_mcp_tool({
server: "mcp-rtfm",
tool: "search_docs",
args: {
projectPath: "/path/to/project",
query: "authentication"
}
});
// Results include:
// - Weighted matches (title matches prioritized)
// - Fuzzy search results
// - Full content context
// - Related document suggestions
```
### 3. Updating Documentation with Content Links
```typescript
// First read the document
await use_mcp_tool({
server: "mcp-rtfm",
tool: "read_doc",
args: {
projectPath: "/path/to/project",
docFile: "techStack.md"
}
});
// Update with content that links to other docs
await use_mcp_tool({
server: "mcp-rtfm",
tool: "update_doc",
args: {
projectPath: "/path/to/project",
docFile: "techStack.md",
searchContent: "[Why this domain is critical to the project]",
replaceContent: "The tech stack documentation provides essential context for development. See [[workflowDetails]] for implementation steps.",
continueToNext: true // Automatically move to next document
}
});
```
### 4. Managing Documentation Metadata
```typescript
// Update metadata for better organization
await use_mcp_tool({
server: "mcp-rtfm",
tool: "update_metadata",
args: {
projectPath: "/path/to/project",
docFile: "techStack.md",
metadata: {
title: "Technology Stack Overview",
category: "architecture",
tags: ["infrastructure", "dependencies", "configuration"]
}
}
});
// Find related documentation
const related = await use_mcp_tool({
server: "mcp-rtfm",
tool: "get_related_docs",
args: {
projectPath: "/path/to/project",
docFile: "techStack.md"
}
});
```
### 5. Searching Documentation with Context
```typescript
// Search with highlighted results
const results = await use_mcp_tool({
server: "mcp-rtfm",
tool: "search_docs",
args: {
projectPath: "/path/to/project",
query: "authentication"
}
});
// Results include:
// - File name
// - Line numbers
// - Highlighted matches
// - Context around matches
```
### 6. Creating Custom Templates
```typescript
// Create a custom template for architecture decisions
await use_mcp_tool({
server: "mcp-rtfm",
tool: "customize_template",
args: {
templateName: "architecture-decision",
content: `# {title}
## Context
[Background and context for the decision]
## Decision
[The architecture decision made]
## Consequences
[Impact and trade-offs of the decision]
## Related Decisions
[Links to related architecture decisions]`,
metadata: {
category: "architecture",
tags: ["decision-record", "design"]
}
}
});
```
## 🔧 Installation
### VSCode (Roo Cline)
Add to settings file at:
Add to settings file at:
- Windows: `%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json`
- MacOS: `~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json`
- Linux: `~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json`
```json
{
"mcpServers": {
"mcp-rtfm": {
"command": "node",
"args": ["<path-to-mcp-rtfm>/build/index.js"],
"disabled": false,
"alwaysAllow": []
}
}
}
```
### Claude Desktop
Add to config file at:
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Linux: `~/.config/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"mcp-rtfm": {
"command": "node",
"args": ["<path-to-mcp-rtfm>/build/index.js"],
"disabled": false,
"alwaysAllow": []
}
}
}
```
## 🎯 Advanced Features
### Content Linking
Use `[[document-name]]` syntax to create links between documents. The server automatically tracks these relationships and includes them when finding related documentation.
### Metadata-Driven Organization
Documents are organized using:
- Categories (e.g., "architecture", "api", "workflow")
- Tags for flexible grouping
- Automatic relationship discovery based on shared metadata
- Content link analysis
### Enhanced Content Analysis
The server uses advanced libraries for better documentation management:
- **unified/remark** for Markdown processing:
- AST-based content analysis
- Accurate heading structure detection
- Code block and link extraction
- Proper Markdown parsing and manipulation
- **minisearch** for powerful search capabilities:
- Fast fuzzy searching across all documentation
- Field-weighted search (titles given higher priority)
- Full content and metadata indexing
- Efficient caching with TTL management
- Real-time search index updates
### Intelligent Metadata Generation
- Automatic content analysis for categorization
- Smart tag generation based on content patterns
- Structured front matter in documents
- AST-based title and section detection
- Code snippet identification and tagging
- Context-aware result presentation
### Template System
- Built-in templates for common documentation types
- Custom template support with metadata defaults
- Template inheritance and override capabilities
- Placeholder system for consistent formatting
## 🛠️ Development
```bash
# Install dependencies
npm install
# Build the server
npm run build
# Development with auto-rebuild
npm run watch
```
## 🐛 Debugging
Since MCP servers communicate over stdio, debugging can be challenging. Use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector):
```bash
npm run inspector
```
The Inspector will provide a URL to access debugging tools in your browser.
## 📄 License
MIT © [Model Context Protocol](https://github.com/modelcontextprotocol)
TDQS
Scored across 11 tools
The tool set has clear distinctions for most operations like reading, updating, and searching docs, but there is significant overlap between analyze_project and analyze_project_with_metadata, which could confuse agents about which to use for basic analysis. Additionally, analyze_existing_docs and analyze_project serve similar purposes with unclear boundaries, leading to potential misselection.
Most tools follow a consistent verb_noun pattern (e.g., analyze_existing_docs, customize_template, get_doc_content), making them predictable and readable. However, there are minor deviations like read_doc (verb_noun) vs. update_doc (verb_noun), which are still consistent in structure, and no chaotic mixing of conventions, so the naming is largely uniform.
With 11 tools, the count is well-scoped for a documentation management server, covering analysis, retrieval, updating, and metadata handling. Each tool appears to earn its place by addressing specific aspects of the domain, such as project analysis, content management, and search, without feeling overly heavy or thin.
The tool surface provides comprehensive coverage for documentation workflows, including analysis, reading, updating, searching, and metadata management. Minor gaps exist, such as no explicit tool for deleting documentation files or handling versioning, but agents can likely work around these with existing update and metadata tools for most tasks.