mcp-rtfm
by ryanjoachim
# 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)