MCP Documentation Server

Un servidor para la gestión de documentos y búsqueda semántica utilizando embeddings de IA, con almacenamiento local en JSON.

Documentación

MCP Registry npm version GitHub Stars License: MIT Ask DeepWiki

Donate with PayPal "Buy Me A Coffee"

Servidor de Documentación MCP

Gestión de documentos local-first y búsqueda semántica para agentes de codificación de IA. Sin bases de datos externas, sin APIs en la nube, sin dependencia de proveedores.

A diferencia de otros servidores MCP que son solo CLI, este incluye un panel web completo — explora, busca, sube y gestiona tu base de conocimiento desde tu navegador. Cada herramienta MCP también está expuesta como una API REST, brindando a los agentes de IA una interfaz ligera y sin esquemas.

  • 🏠 Funciona completamente sin conexión — base de datos vectorial Orama con embeddings de IA locales (Transformers.js)
  • 🌐 Interfaz web integrada — se inicia automáticamente en el puerto 3080 junto con el servidor MCP
  • 🔍 Búsqueda híbrida — similitud de texto completo + vectorial con fragmentación padre-hijo
  • 🤖 Búsqueda de IA opcional — Google Gemini para análisis avanzado de documentos (trae tu propia clave)
  • 📁 Subidas por arrastrar y soltar — soporte para .txt, .md, .pdf
  • 📦 Publicado en el Registro MCP — instalable vía npx, sin necesidad de clonar

Inicio rápido

{
  "mcpServers": {
    "documentation": {
      "command": "npx",
      "args": ["-y", "@andrea9293/mcp-documentation-server"]
    }
  }
}

Abre tu navegador en http://localhost:3080 — la interfaz web se inicia automáticamente.

🤖 Habilidad de Agente (API REST) — recomendada para agentes de IA

Cada herramienta MCP también es accesible a través de la API REST en http://127.0.0.1:3080/api/. Esta es la forma recomendada de interactuar desde agentes de IA (Claude Code, OpenCode, Gemini CLI, Cursor) porque evita cargar los esquemas de las herramientas MCP en el contexto de la conversación — solo el JSON de respuesta entra.

curl -s http://127.0.0.1:3080/api/config
curl -s http://127.0.0.1:3080/api/documents
curl -s -X POST http://127.0.0.1:3080/api/search-all \
  -H "Content-Type: application/json" \
  -d '{"query": "your search", "limit": 5}'

Se incluye una habilidad lista para usar en skills/documentation-server/SKILL.md — enseña a tu agente cada endpoint con ejemplos. Instálala:

npx skills add https://github.com/andrea9293/mcp-documentation-server --skill documentation-server

Flujo de trabajo básico

  1. Añade documentos usando add_document o coloca archivos .txt / .md / .pdf en la carpeta de subidas y llama a process_uploads.
  2. Busca en todo con search_all_documents, o dentro de un solo documento con search_documents.
  3. Usa get_context_window para obtener fragmentos vecinos y dar al LLM un contexto más amplio.

Interfaz web

La interfaz web se inicia automáticamente en el puerto 3080 cuando el servidor MCP se lanza. Desde la interfaz web puedes:

  • 📊 Panel — vista general de todos los documentos y estadísticas
  • 📄 Documentos — explora, visualiza y elimina documentos
  • ➕ Añadir documento — crea documentos con título, contenido y metadatos
  • 🔍 Buscar todo — búsqueda semántica en todos los documentos
  • 🎯 Buscar en documento — búsqueda dentro de un documento específico
  • 🤖 Búsqueda de IA — análisis impulsado por Gemini (si GEMINI_API_KEY está configurado)
  • 📁 Subir archivos — arrastra y suelta archivos y procésalos en la base de conocimiento
  • 🪟 Ventana de contexto — explora fragmentos alrededor de un índice específico

Configurar un cliente MCP

Mínimo

{
  "mcpServers": {
    "documentation": {
      "command": "npx",
      "args": ["-y", "@andrea9293/mcp-documentation-server"]
    }
  }
}

Con variables de entorno (todas opcionales)

{
  "mcpServers": {
    "documentation": {
      "command": "npx",
      "args": ["-y", "@andrea9293/mcp-documentation-server"],
      "env": {
        "MCP_BASE_DIR": "/path/to/workspace",
        "GEMINI_API_KEY": "your-api-key-here",
        "MCP_EMBEDDING_MODEL": "Xenova/all-MiniLM-L6-v2",
        "START_WEB_UI": "true",
        "WEB_HOST": "127.0.0.1",
        "WEB_PORT": "3080"
      }
    }
  }
}

Todas las variables de entorno son opcionales. Sin GEMINI_API_KEY, solo están disponibles las herramientas de búsqueda basadas en embeddings locales.

Herramientas MCP

El servidor registra las siguientes herramientas (todas validadas con esquemas Zod):

📄 Gestión de documentos

HerramientaDescripción
add_documentAñade un documento (título, contenido, metadatos opcionales)
list_documentsLista todos los documentos con metadatos y vista previa del contenido
get_documentRecupera el contenido completo de un documento por ID
delete_documentElimina un documento, sus fragmentos, entradas de base de datos y archivos asociados

📁 Procesamiento de archivos

HerramientaDescripción
process_uploadsProcesa todos los archivos en la carpeta de subidas (fragmentación + embeddings)
get_uploads_pathDevuelve la ruta absoluta a la carpeta de subidas
list_uploads_filesLista archivos en la carpeta de subidas con información de tamaño y formato
get_ui_urlDevuelve la URL de la interfaz web (p. ej., http://localhost:3080) — útil para abrir el panel o localizar la carpeta de subidas desde el navegador

🔍 Búsqueda

HerramientaDescripción
search_documentsBúsqueda vectorial semántica dentro de un documento específico
search_all_documentsBúsqueda híbrida (texto completo + vectorial) entre documentos
get_context_windowDevuelve una ventana de fragmentos alrededor de un índice de fragmento dado
search_documents_with_ai🤖 Búsqueda impulsada por IA usando Gemini (requiere GEMINI_API_KEY)

Configuración

Configura mediante variables de entorno o un archivo .env en la raíz del proyecto:

VariablePredeterminadoDescripción
MCP_BASE_DIR~/.mcp-documentation-serverDirectorio base para el almacenamiento de datos
MCP_EMBEDDING_MODELXenova/all-MiniLM-L6-v2Nombre del modelo de embeddings
GEMINI_API_KEY—Clave API de Google Gemini (habilita search_documents_with_ai)
MCP_CACHE_ENABLEDtrueHabilita/deshabilita la caché de embeddings LRU
START_WEB_UItrueEstablecer a false para deshabilitar la interfaz web integrada
WEB_HOST127.0.0.1Dirección de enlace para la interfaz web (usa 0.0.0.0 para exponer en todas las interfaces)
WEB_PORT3080Puerto para la interfaz web
MCP_STREAMING_ENABLEDtrueHabilita lecturas en streaming para archivos grandes
MCP_STREAM_CHUNK_SIZE65536Tamaño del búfer de streaming en bytes (64KB)
MCP_STREAM_FILE_SIZE_LIMIT10485760Umbral para cambiar a streaming (10MB)

Estructura de almacenamiento

~/.mcp-documentation-server/     # Or custom path via MCP_BASE_DIR
├── data/
│   ├── orama-chunks.msp         # Orama vector DB (child chunks + embeddings)
│   ├── orama-docs.msp           # Orama document DB (full content + metadata)
│   ├── orama-parents.msp        # Orama parent chunks DB (context sections)
│   ├── migration-complete.flag   # Written after legacy JSON migration
│   └── *.md                     # Markdown copies of documents
└── uploads/                     # Drop .txt, .md, .pdf files here

Modelos de embeddings

Configura mediante MCP_EMBEDDING_MODEL:

ModeloDimensionesNotas
Xenova/all-MiniLM-L6-v2384Predeterminado — rápido, buena calidad
Xenova/paraphrase-multilingual-mpnet-base-v2768Recomendado — mejor calidad, multilingüe

Los modelos se descargan en el primer uso (~80–420 MB). La dimensión del vector se determina automáticamente desde el proveedor.

⚠️ Importante: Cambiar el modelo de embeddings requiere volver a añadir todos los documentos — los embeddings de diferentes modelos son incompatibles. La base de datos Orama se recrea automáticamente cuando cambia la dimensión.

Arquitectura

Server (FastMCP, stdio)
  ├─ Web UI (Express, port 3080)
  │    └─ REST API → DocumentManager
  └─ MCP Tools
       └─ DocumentManager
            ├─ OramaStore          — Orama vector DB (chunks DB + docs DB + parents DB), persistence, migration
            ├─ IntelligentChunker  — Parent-child chunking (code, markdown, text, PDF)
            ├─ EmbeddingProvider   — Local embeddings via @xenova/transformers
            │    └─ EmbeddingCache — LRU in-memory cache
            └─ GeminiSearchService — Optional AI search via Google Gemini
  • OramaStore gestiona tres instancias de Orama: una para metadatos/contenido de documentos, una para fragmentos hijos con embeddings vectoriales, y una para fragmentos padres (secciones de contexto). Todas se persisten en archivos binarios en disco y se restauran al inicio.
  • IntelligentChunker implementa el patrón de fragmentación padre-hijo: los documentos se dividen primero en fragmentos padres grandes que preservan el contexto completo (secciones, párrafos), luego cada padre se divide en fragmentos hijos pequeños para una búsqueda vectorial precisa. En el momento de la consulta, los resultados se deduplican por padre para que el LLM reciba tanto el fragmento coincidente como el contexto más amplio.
  • EmbeddingProvider carga de forma diferida un modelo Transformers.js para inferencia local — sin necesidad de llamadas API.

Desarrollo

git clone https://github.com/andrea9293/mcp-documentation-server.git
cd mcp-documentation-server
npm install
npm run dev       # FastMCP dev mode with hot reload
npm run build     # TypeScript compilation
npm run inspect   # FastMCP web UI for interactive tool testing
npm start         # Direct tsx execution (MCP server + web UI)
npm run web       # Run only the web UI (development)
npm run web:build # Run only the web UI (compiled)

Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características: git checkout -b feature/name
  3. Sigue Conventional Commits para los mensajes
  4. Abre una solicitud de extracción

Licencia

MIT — consulta LICENSE

Soporte


Historial de estrellas

Star History Chart

Construido con FastMCP, Orama y TypeScript