Markdown Navigation MCP
Um servidor MCP que fornece navegação e leitura eficientes de grandes arquivos markdown
Documentação
Markdown Navigation MCP Server
Navegue com eficiência por arquivos Markdown grandes (2.000+ linhas) sem carregar documentos inteiros no contexto. Reduz o uso de tokens em 50-80% ao trabalhar com documentação, arquivos de planejamento e especificações técnicas.
Início Rápido
Pré-requisitos: Universal Ctags e Go 1.21+
# Install ctags
brew install universal-ctags # macOS
sudo apt install universal-ctags # Ubuntu/Debian
sudo dnf install universal-ctags # Fedora
# Build and install
git clone <repo-url>
cd markdown-mcp
go build -o mdnav-server ./cmd/server
sudo cp mdnav-server /usr/local/bin/
Configurar o Claude Code (~/claude.json):
{
"mcpServers": {
"markdown-nav": {
"command": "mdnav-server"
}
}
}
Recursos
- Zero configuração: Execução automática de ctags sob demanda
- Cache inteligente: Respostas em submicrossegundos para consultas repetidas
- Invalidação automática: Cache atualizado quando arquivos mudam
- Leitura seletiva: Carregue apenas as seções necessárias
- Navegação em árvore: Visualize a estrutura do documento sem ler o conteúdo
- Correspondência de padrões: Encontre seções por padrões regex
- Controle de profundidade: Limite a profundidade da árvore/seção para visualizações focadas
Ferramentas
markdown_tree
Exibe a estrutura do documento como árvore (formato ASCII ou JSON).
Parâmetros principais:
file_path: Caminho para o arquivo markdownformat: "ascii" ou "json" (padrão: "json")max_depth: Limite a profundidade da árvore 1-6 (padrão: 2 mostra H1+H2)section_name_pattern: Regex para filtrar seções
markdown_section_bounds
Obtém os limites de números de linha para uma seção específica.
Parâmetros principais:
file_path: Caminho para o arquivo markdownsection_heading: Texto exato do cabeçalho (sem símbolos #)
markdown_read_section
Lê o conteúdo de uma seção específica.
Parâmetros principais:
file_path: Caminho para o arquivo markdownsection_heading: Texto exato do cabeçalho (sem símbolos #)max_subsection_levels: Limite a profundidade das subseções (omitir para todas)
markdown_list_sections
Lista todas as seções com filtros.
Parâmetros principais:
file_path: Caminho para o arquivo markdownmax_depth: Nível máximo de cabeçalho a exibir (padrão: 2)section_name_pattern: Regex para filtrar nomes de seções
Exemplos de Uso
Encontrando e lendo uma tarefa específica
User: "Review Task 4 from the planning document"
Claude uses:
1. markdown_tree to see document structure
2. markdown_section_bounds to find Task 4 location
3. markdown_read_section to read only Task 4 content
Result: Complete task analysis using only relevant section (~200 lines instead of 2000)
Descobrindo seções de documentação
User: "What testing strategies are documented?"
Claude uses:
1. markdown_list_sections with pattern="test" to find testing sections
2. markdown_read_section for each relevant section
Result: Comprehensive overview without loading entire document
Para exemplos mais detalhados de uso das ferramentas com saída real, consulte examples/EXAMPLES.md.
Configuração
Caminho personalizado do ctags
Se o ctags não estiver no PATH, especifique o local:
{
"mcpServers": {
"markdown-nav": {
"command": "mdnav-server",
"args": ["-ctags-path", "/custom/path/to/ctags"]
}
}
}
Solução de Problemas
"ctags not found in PATH"
- Instale o Universal Ctags ou use a flag
-ctags-path
"section not found"
- Use o texto exato do cabeçalho (sensível a maiúsculas/minúsculas, sem símbolos #)
- Execute
markdown_list_sectionspara ver as seções disponíveis
"no entries found"
- Certifique-se de que o arquivo possui cabeçalhos markdown (#, ##, ###, ####)
- Verifique se o Universal Ctags (não o Exuberant) está instalado
Problemas de cache
- Reinicie o servidor MCP para limpar o cache (invalida automaticamente quando arquivos mudam)
Desenvolvimento
Para detalhes de implementação, arquitetura e diretrizes de contribuição, consulte CLAUDE.md.
Comandos rápidos de desenvolvimento:
go test ./... # Run tests
golangci-lint run # Lint code
go build ./cmd/server # Build server
Licença
Este projeto é licenciado sob a GNU General Public License v3.0.