DocC MCP

Expõe arquivos de documentação Apple DocC para agentes de IA, permitindo acesso em tempo real à documentação Swift.

Documentação

docc-mcp

Um servidor Model Context Protocol (MCP) que expõe arquivos de documentação Apple DocC para agentes de IA, permitindo acesso em tempo real à documentação Swift sem exigir dados de treinamento ou janelas de contexto massivas.

Recursos

  • 🔍 Pesquisa de Documentação: Encontre símbolos, tipos, funções em todos os arquivos DocC
  • 📖 Detalhes de Símbolos: Obtenha informações detalhadas sobre símbolos Swift específicos
  • 📄 Acesso a Artigos: Obtenha informações detalhadas sobre tutoriais e artigos
  • 🗂️ Navegar em Arquivos: Navegue interativamente pelas estruturas de arquivos DocC
  • ⚡ Acesso em Tempo Real: Consulte a documentação atual sem dados desatualizados
  • 🎯 Pesquisa Filtrada: Pesquise por tipo de símbolo (classe, struct, enum, protocolo, etc.)

Instalação

npm install
npm run build

Uso

Como Servidor MCP

Adicione à configuração do seu 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"
      ]
    }
  }
}

Opções de Configuração

Configure os caminhos dos arquivos usando o argumento --archive-path:

Diretório de arquivo único:

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

Múltiplos diretórios de arquivos:

{
  "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 a documentação gerada pelo 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: Pelo menos um --archive-path deve ser especificado. O servidor sairá com um erro se nenhum caminho de arquivo for fornecido.

Locais Comuns de Arquivos DocC

Documentação gerada pelo 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

Builds manuais de DocC:

  • docs/ (se você organizar arquivos em uma pasta de docs)
  • Diretório raiz do projeto onde você executa swift package generate-documentation

Múltiplos projetos:

{
  "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"
  ]
}

Ferramentas Disponíveis

1. list_archives

Lista todos os arquivos DocC disponíveis com metadados.

{
  "name": "list_archives"
}

2. search_docc

Pesquisa na documentação DocC.

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

3. get_symbol

Obtém informações detalhadas sobre um símbolo específico.

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

4. get_article

Obtém informações detalhadas sobre um artigo ou tutorial específico.

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

5. browse_archive

Navega pela estrutura de um arquivo DocC.

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

Estrutura do Arquivo

O servidor espera arquivos DocC nos diretórios especificados por --archive-path:

Testes

Execute o script de teste para validar a funcionalidade:

node test-server.js

Isso irá:

  • Listar todos os arquivos disponíveis
  • Testar a funcionalidade de pesquisa
  • Navegar pelas estruturas dos arquivos
  • Validar a recuperação de símbolos

Exemplos de Consultas

Encontre todos os componentes de navegação do SwiftUI:

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

Obtenha detalhes sobre TokenSyntax:

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

Navegue pelos tipos do SwiftSyntax:

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

Desempenho

  • Cache: Arquivos e símbolos são armazenados em cache para acesso rápido repetido
  • Limites de pesquisa: Resultados limitados a 50 por consulta para desempenho
  • Carregamento preguiçoso: Arquivos carregados sob demanda
  • Limites de arquivos: Pesquisa limitada a 100 arquivos por arquivo para desempenho

Integração DocC

Este servidor funciona com arquivos DocC padrão. Para gerar arquivos compatíveis:

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

# Using Xcode
# Product → Build Documentation

Recursos DocC Suportados

  • ✅ Metadados de símbolos (título, tipo, função, plataformas)
  • ✅ Hierarquia de documentação
  • ✅ Referências e relacionamentos de símbolos
  • ✅ Declarações de código com realce de sintaxe
  • ✅ Texto de resumo/abstract
  • ✅ Informações de disponibilidade de plataforma
  • ✅ Organização de módulos

Licença

Licença MIT