MCP for Docs

Descarga y convierte automáticamente documentación de diversas fuentes en archivos markdown organizados.

Documentación

mcp-for-docs

GitHub Status Platform License Version

Un servidor MCP (Model Context Protocol) que descarga y convierte automáticamente documentación de diversas fuentes en archivos markdown organizados.

Descripción general

mcp-for-docs está diseñado para rastrear sitios web de documentación, convertir su contenido a formato markdown y organizarlo en un sistema de directorios estructurado. También puede generar hojas de referencia condensadas a partir de la documentación descargada.

Características

  • 🕷️ Rastreador de documentación inteligente: Rastrea automáticamente sitios de documentación con profundidad configurable
  • 📝 Conversión de HTML a Markdown: Conserva bloques de código, tablas y formato
  • 📁 Categorización automática: Organiza inteligentemente la documentación en categorías de herramientas/APIs
  • 📄 Generador de hojas de referencia: Crea guías de referencia condensadas a partir de la documentación
  • 🔍 Sistema de descubrimiento inteligente: Detecta automáticamente documentación existente antes de rastrear
  • 🚀 Prioridad local: Utiliza documentos descargados existentes cuando están disponibles
  • ⚡ Limitación de velocidad: Respeta los límites del servidor y robots.txt
  • ✅ Confirmación del usuario: Evita la regeneración accidental de contenido existente
  • ⚙️ Configuración integral: Configuración basada en JSON con anulaciones mediante variables de entorno
  • 🧪 Suite de pruebas: 94 pruebas que cubren la funcionalidad principal

Instalación

Requisitos previos

  • Node.js 18+
  • npm o yarn
  • Claude Desktop o Claude Code CLI

Configuración

  1. Clona el repositorio:
git clone https://github.com/shayonpal/mcp-for-docs.git
cd mcp-for-docs
  1. Instala las dependencias:
npm install
  1. Compila el proyecto:
npm run build
  1. Añádelo a tu configuración de MCP:

Para Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "mcp-for-docs": {
      "command": "node",
      "args": ["/path/to/mcp-for-docs/dist/index.js"],
      "env": {}
    }
  }
}

Para Claude Code CLI (~/.claude.json):

{
  "mcpServers": {
    "mcp-for-docs": {
      "command": "node",
      "args": ["/path/to/mcp-for-docs/dist/index.js"],
      "env": {}
    }
  }
}

Uso

Rastreo de documentación

Para descargar documentación de un sitio web:

await crawl_documentation({
  url: "https://docs.n8n.io/",
  max_depth: 3,           // Optional, defaults to 3
  force_refresh: false    // Optional, set to true to regenerate existing docs
});

La herramienta primero verificará la documentación existente y te mostrará lo que ya está disponible. Para regenerar contenido existente, usa force_refresh: true.

La documentación se guardará en:

  • Herramientas: /Users/shayon/DevProjects/~meta/docs/tools/[tool-name]/
  • APIs: /Users/shayon/DevProjects/~meta/docs/apis/[api-name]/

Generación de hojas de referencia

Para crear una hoja de referencia a partir de documentación:

await generate_cheatsheet({
  url: "https://docs.anthropic.com/",
  use_local: true,          // Use local files if available (default)
  force_regenerate: false   // Optional, set to true to regenerate existing cheatsheets
});

Las hojas de referencia se guardan en: /Users/shayon/DevProjects/~meta/docs/cheatsheets/

La herramienta verificará las hojas de referencia existentes y te mostrará lo que ya está disponible. Para regenerar contenido existente, usa force_regenerate: true.

Listado de documentación descargada

Para ver qué documentación está disponible localmente:

await list_documentation({
  category: "all",  // Options: "tools", "apis", "all"
  include_stats: true
});

Sitios de documentación compatibles

El servidor ha sido probado con:

  • Documentación de n8n
  • Documentación de la API de Anthropic
  • Documentación del plugin Obsidian Tasks
  • Documentación de Apple Swift

La mayoría de los sitios de documentación que siguen patrones estándar deberían funcionar automáticamente.

Actualizaciones recientes

  • Sistema de configuración (v0.4.0): Se añadió configuración integral basada en JSON con soporte para variables de entorno
  • Descubrimiento inteligente: Encuentra y reporta automáticamente documentación existente antes de rastrear
  • Conversión mejorada: Se corrigieron problemas de HTML a Markdown, incluido el formato de tablas y la conservación de código en línea
  • Categorización dinámica: Detección inteligente de herramientas vs APIs basada en patrones de URL y análisis de contenido
  • Cobertura de pruebas: 94 pruebas aprobadas con pruebas unitarias y de integración integrales

Para cambios detallados, consulta CHANGELOG.md.

Configuración

Configuración inicial

  1. Copia la configuración de ejemplo:
cp config.example.json config.json
  1. Edita config.json y actualiza el docsBasePath para tu máquina:
{
  "docsBasePath": "/Users/yourusername/path/to/docs"
}

Importante: El archivo config.json está rastreado en git. Cuando clones este repositorio en una máquina diferente, deberás actualizar el docsBasePath para que coincida con la estructura de directorios de esa máquina.

Cómo funciona la organización de la documentación

La herramienta organiza automáticamente la documentación basándose en el análisis de contenido:

  1. Proporcionas una URL al llamar a la herramienta (por ejemplo, https://docs.n8n.io)
  2. El categorizador analiza el contenido y determina si es:
    • tools/ - Herramientas de software, aplicaciones, plugins
    • apis/ - Referencias de API, documentación de SDK
  3. La documentación se guarda en: {docsBasePath}/{category}/{tool-name}/

Por ejemplo:

  • https://docs.n8n.io → /Users/shayon/DevProjects/~meta/docs/tools/n8n/
  • https://docs.anthropic.com → /Users/shayon/DevProjects/~meta/docs/apis/anthropic/

Esto ocurre automáticamente: ¡no necesitas configurar nada por sitio!

Opciones de configuración

ConfiguraciónDescripciónPredeterminado
docsBasePathDónde almacenar toda la documentaciónRequerido - sin predeterminado
crawler.defaultMaxDepthCuántos niveles de profundidad rastrear3
crawler.defaultRateLimitSolicitudes por segundo2
crawler.pageTimeoutTiempo de espera de carga de página (ms)30000
crawler.userAgentIdentificación del navegadorMCP-for-docs/1.0
cheatsheet.maxLengthMáximo de caracteres en la hoja de referencia10000
cheatsheet.filenameSuffixAñadir a los nombres de hojas de referencia-Cheatsheet.md

Configuración de múltiples máquinas

Dado que config.json está rastreado en git:

  1. Primera máquina: Establece tu docsBasePath y haz commit
  2. Otras máquinas: Después de clonar, actualiza docsBasePath para que coincida con esa máquina
  3. Usa la variable de entorno para anular sin cambiar el archivo:
    export DOCS_BASE_PATH="/different/path/on/this/machine"
    

Desarrollo

# Install dependencies
npm install

# Run in development mode
npm run dev

# Run tests
npm test

# Build for production
npm run build

# Lint code
npm run lint

Arquitectura

  • Rastreador: Usa Playwright para páginas renderizadas con JavaScript
  • Analizador: Extrae contenido usando selectores configurables
  • Conversor: Biblioteca Turndown con reglas personalizadas para markdown
  • Categorizador: Detección inteligente de herramientas vs APIs
  • Almacenamiento: Sistema de archivos organizado

Problemas conocidos

  • Preservación de la estructura de URL (#15): Actualmente aplana la estructura de URL al guardar documentos
  • Sitios de documentación grandes (#14): No hay límite de documentos para sitios muy grandes
  • Documentación de repositorios de GitHub (#9): El rastreador especializado para repositorios de GitHub aún no está implementado

Consulta todos los problemas abiertos para ver la hoja de ruta completa.

Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Realiza tus cambios
  4. Actualiza CHANGELOG.md
  5. Envía una solicitud de extracción

Licencia

Este proyecto está licenciado bajo la Licencia GPL 3.0: consulta el archivo LICENSE para más detalles.

Agradecimientos