DocC MCP

Expone archivos de documentación de Apple DocC a agentes de IA, permitiendo acceso en tiempo real a la documentación de Swift.

Documentación

docc-mcp

Un servidor de Model Context Protocol (MCP) que expone archivos de documentación de Apple DocC a agentes de IA, permitiendo acceso en tiempo real a documentación de Swift sin necesidad de datos de entrenamiento ni ventanas de contexto masivas.

Características

  • 🔍 Búsqueda de documentación: Encuentra símbolos, tipos y funciones en todos los archivos DocC
  • 📖 Detalles de símbolos: Obtén información detallada sobre símbolos específicos de Swift
  • 📄 Acceso a artículos: Obtén información detallada sobre tutoriales y artículos
  • 🗂️ Explorar archivos: Navega interactivamente por las estructuras de archivos DocC
  • ⚡ Acceso en tiempo real: Consulta documentación actual sin datos obsoletos
  • 🎯 Búsqueda filtrada: Busca por tipo de símbolo (clase, estructura, enumeración, protocolo, etc.)

Instalación

npm install
npm run build

Uso

Como servidor MCP

Añade a la configuración de tu cliente MCP:

{
  "mcpServers": {
    "docc": {
      "command": "node",
      "args": [
        "/path/to/docc-mcp/dist/index.js",
        "--archive-path", "/path/to/your/docc/archives",
        "--archive-path", "~/Documents/Xcode/DerivedData"
      ]
    }
  }
}

Opciones de configuración

Configura las rutas de los archivos usando el argumento --archive-path:

Directorio de un solo archivo:

{
  "mcpServers": {
    "docc": {
      "command": "node", 
      "args": [
        "/path/to/docc-mcp/dist/index.js",
        "--archive-path", "/Users/yourname/docc-archives"
      ]
    }
  }
}

Múltiples directorios de archivos:

{
  "mcpServers": {
    "docc": {
      "command": "node",
      "args": [
        "/path/to/docc-mcp/dist/index.js",
        "--archive-path", "/Users/yourname/Project1/docs",
        "--archive-path", "/Users/yourname/Project2/docs", 
        "--archive-path", "~/Documents/Xcode/DerivedData"
      ]
    }
  }
}

Usando documentación generada por Xcode:

{
  "mcpServers": {
    "docc": {
      "command": "node",
      "args": [
        "/path/to/docc-mcp/dist/index.js",
        "--archive-path", "~/Library/Developer/Xcode/DerivedData/YourApp-*/Build/Products/Debug/YourApp.doccarchive"
      ]
    }
  }
}

Nota: Debe especificarse al menos un --archive-path. El servidor saldrá con un error si no se proporcionan rutas de archivos.

Ubicaciones comunes de archivos DocC

Documentación generada por Xcode:

  • ~/Library/Developer/Xcode/DerivedData/YourApp-*/Build/Products/Debug*/Documentation/
  • ~/Library/Developer/Xcode/DerivedData/YourApp-*/Build/Products/Release*/Documentation/

Swift Package Manager:

  • .build/plugins/Swift-DocC/outputs/YourPackage.doccarchive

Compilaciones manuales de DocC:

  • docs/ (si organizas los archivos en una carpeta de documentación)
  • Directorio raíz del proyecto donde ejecutas swift package generate-documentation

Múltiples proyectos:

{
  "args": [
    "/path/to/docc-mcp/dist/index.js",
    "--archive-path", "~/MySwiftPackage1/docs",
    "--archive-path", "~/MySwiftPackage2/.build/plugins/Swift-DocC/outputs", 
    "--archive-path", "~/Library/Developer/Xcode/DerivedData"
  ]
}

Herramientas disponibles

1. list_archives

Lista todos los archivos DocC disponibles con metadatos.

{
  "name": "list_archives"
}

2. search_docc

Busca en la documentación DocC.

{
  "name": "search_docc",
  "arguments": {
    "query": "SwiftSyntax",
    "archive": "SwiftSyntax",
    "type": "struct"
  }
}

3. get_symbol

Obtén información detallada sobre un símbolo específico.

{
  "name": "get_symbol", 
  "arguments": {
    "symbolId": "documentation/swiftsyntax/tokensyntax",
    "archive": "SwiftSyntax"
  }
}

4. get_article

Obtén información detallada sobre un artículo o tutorial específico.

{
  "name": "get_article",
  "arguments": {
    "articleId": "meetcomposablearchitecture",
    "archive": "ComposableArchitecture"
  }
}

5. browse_archive

Explora la estructura de un archivo DocC.

{
  "name": "browse_archive",
  "arguments": {
    "archive": "SwiftSyntax",
    "path": "documentation/swiftsyntax"
  }
}

Estructura de archivos

El servidor espera archivos DocC en los directorios especificados por --archive-path:

Pruebas

Ejecuta el script de prueba para validar la funcionalidad:

node test-server.js

Esto:

  • Listará todos los archivos disponibles
  • Probará la funcionalidad de búsqueda
  • Explorará las estructuras de los archivos
  • Validará la recuperación de símbolos

Consultas de ejemplo

Encuentra todos los componentes de navegación de SwiftUI:

{
  "name": "search_docc",
  "arguments": {
    "query": "navigation",
    "type": "struct"
  }
}

Obtén detalles sobre TokenSyntax:

{
  "name": "get_symbol",
  "arguments": {
    "symbolId": "documentation/swiftsyntax/tokensyntax", 
    "archive": "SwiftSyntax"
  }
}

Explora los tipos de SwiftSyntax:

{
  "name": "browse_archive",
  "arguments": {
    "archive": "SwiftSyntax",
    "path": "documentation/swiftsyntax"
  }
}

Rendimiento

  • Caché: Los archivos y símbolos se almacenan en caché para acceso rápido repetido
  • Límites de búsqueda: Resultados limitados a 50 por consulta por rendimiento
  • Carga diferida: Los archivos se cargan bajo demanda
  • Límites de archivos: Búsqueda limitada a 100 archivos por archivo DocC por rendimiento

Integración con DocC

Este servidor funciona con archivos DocC estándar. Para generar archivos compatibles:

# Using Swift-DocC
swift package generate-documentation --target MyLibrary

# Using Xcode
# Product → Build Documentation

Funciones DocC compatibles

  • ✅ Metadatos de símbolos (título, tipo, rol, plataformas)
  • ✅ Jerarquía de documentación
  • ✅ Referencias y relaciones de símbolos
  • ✅ Declaraciones de código con resaltado de sintaxis
  • ✅ Texto de resumen/abstracto
  • ✅ Información de disponibilidad de plataformas
  • ✅ Organización de módulos

Licencia

Licencia MIT