Grep App

Pesquise código em repositórios públicos do GitHub usando a API do grep.app.

Documentação

Servidor MCP Grep App

Um servidor Model Context Protocol (MCP) que fornece poderosas capacidades de busca de código em repositórios públicos do GitHub usando a API do grep.app. Perfeito para descoberta de código, aprendizado com projetos de código aberto e encontrar exemplos de implementação.

🚀 Recursos

  • 🔍 Busca Avançada de Código: Busque em milhões de repositórios públicos no GitHub
  • 📁 Recuperação de Arquivos: Busque arquivos específicos ou lotes de arquivos do GitHub
  • 🎯 Filtragem Flexível: Filtre por linguagem, repositório, caminho de arquivo e mais
  • 📊 Múltiplos Formatos de Saída: JSON, listas numeradas ou texto formatado
  • ⚡ Operações em Lote: Recupere múltiplos arquivos eficientemente em paralelo
  • 🔄 Cache de Resultados: Armazene em cache resultados de busca para recuperação rápida de arquivos
  • 📝 Logging Abrangente: Logging integrado com rotação diária

🛠️ Instalação e Configuração

Pré-requisitos

  • Node.js 18+
  • npm ou yarn
  • CLI do Claude Code

Início Rápido

  1. Clone ou baixe este repositório

    git clone https://github.com/ai-tools-all/grep_app_mcp.git
    cd grep_app_mcp
    
  2. Instale as dependências

    npm install
    
  3. Compile o projeto

    npm run build
    
  4. Teste o servidor

    # HTTP mode (recommended for development)
    ./run.sh http dev
    
    # or STDIO mode
    ./run.sh stdio dev
    

🔧 Adicionando ao Claude Code

Método 1: Usando Configuração MCP

Adicione este servidor à sua configuração MCP do Claude Code:

{
  "mcpServers": {
    "grep_app": {
      "command": "node",
      "args": ["/path/to/grep_app_mcp/dist/server-stdio.js"],
      "env": {}
    }
  }
}

Método 2: Usando Transporte HTTP

Para modo HTTP, adicione à sua configuração:

{
  "mcpServers": {
    "grep_app": {
      "url": "http://localhost:8603/mcp"
    }
  }
}

Em seguida, inicie o servidor:

./run.sh http prod

📖 Uso do run.sh

O script run.sh fornece maneiras convenientes de iniciar o servidor:

Uso Básico

./run.sh [mode] [environment]

Modos

  • http - Servidor HTTP com suporte a streaming (padrão)
  • stdio - Servidor STDIO para integração MCP direta

Ambientes

  • dev - Modo de desenvolvimento com recarga automática (padrão)
  • prod - Modo de produção (requer etapa de compilação)

Exemplos

# Development (default) - HTTP server with hot reload
./run.sh

# Development - HTTP server  
./run.sh http dev

# Production - HTTP server
./run.sh http prod

# Development - STDIO server
./run.sh stdio dev

# Production - STDIO server  
./run.sh stdio prod

# Show help
./run.sh help

Endpoints HTTP (ao usar modo HTTP)

  • Streaming HTTP: http://localhost:8603/mcp
  • Server-Sent Events: http://localhost:8603/sse

🔨 Ferramentas Disponíveis

1. searchCode

Busque código em repositórios públicos do GitHub.

Parâmetros:

  • query (obrigatório) - String de consulta de busca
  • jsonOutput - Retornar formato JSON (padrão: false)
  • numberedOutput - Retornar formato de lista numerada (padrão: false)
  • caseSensitive - Busca sensível a maiúsculas/minúsculas
  • useRegex - Tratar consulta como padrão regex
  • wholeWords - Buscar apenas palavras inteiras
  • repoFilter - Filtrar por padrão de nome de repositório
  • pathFilter - Filtrar por padrão de caminho de arquivo
  • langFilter - Filtrar por linguagem(ns) de programação

Exemplo:

{
  "query": "async function fetchData",
  "langFilter": "TypeScript,JavaScript",
  "numberedOutput": true
}

2. github_file

Busque um único arquivo de um repositório do GitHub.

Parâmetros:

  • owner (obrigatório) - Proprietário do repositório
  • repo (obrigatório) - Nome do repositório
  • path (obrigatório) - Caminho do arquivo
  • ref (opcional) - Referência de branch/commit/tag

Exemplo:

{
  "owner": "microsoft",
  "repo": "vscode", 
  "path": "src/vs/editor/editor.api.ts"
}

3. github_batch_files

Busque múltiplos arquivos de repositórios do GitHub em paralelo.

Parâmetros:

  • files (obrigatório) - Array de objetos de arquivo com owner, repo, path e ref opcional

Exemplo:

{
  "files": [
    {"owner": "facebook", "repo": "react", "path": "packages/react/index.js"},
    {"owner": "microsoft", "repo": "TypeScript", "path": "src/compiler/types.ts"}
  ]
}

4. batch_retrieve_files

Recupere arquivos de resultados de busca previamente armazenados em cache.

Parâmetros:

  • query (obrigatório) - Consulta de busca original
  • resultNumbers (opcional) - Array de índices de resultados para recuperar

Exemplo:

{
  "query": "tower_governor",
  "resultNumbers": [1, 2, 3]
}

🎯 Fluxos de Trabalho Comuns

1. Descoberta de Código

# Search for React hooks examples
searchCode("useEffect cleanup", langFilter: "JavaScript,TypeScript")

# Retrieve specific files from results  
batch_retrieve_files(query: "useEffect cleanup", resultNumbers: [1, 3, 5])

2. Padrões de Aprendizado

# Find authentication implementations
searchCode("JWT authentication middleware", repoFilter: "*express*")

# Get specific implementation details
github_file(owner: "auth0", repo: "express-jwt", path: "lib/index.js")

3. Pesquisa de API

# Discover API patterns
searchCode("GraphQL resolver", pathFilter: "*/resolvers/*")

# Compare multiple implementations
github_batch_files([
  {owner: "apollographql", repo: "apollo-server", path: "packages/apollo-server-core/src/resolvers.ts"},
  {owner: "graphql", repo: "graphql-js", path: "src/execution/execute.js"}
])

📋 Desenvolvimento

Scripts Disponíveis

  • npm run build - Compilar TypeScript para JavaScript
  • npm run start - Iniciar servidor HTTP de produção
  • npm run start-stdio - Iniciar servidor STDIO de produção
  • npm run dev - Iniciar servidor HTTP de desenvolvimento com recarga automática
  • npm run dev-stdio - Iniciar servidor STDIO de desenvolvimento com recarga automática
  • npm run test-client - Executar cliente de teste

Estrutura do Projeto

src/
├── core/           # Core utilities (logger, types)
├── tools/          # MCP tool implementations
├── server.ts       # HTTP server entry point
└── server-stdio.ts # STDIO server entry point

📝 Logging

O servidor inclui logging abrangente com rotação diária:

  • Localização: diretório logs/
  • Rotação: Diária com nomes de arquivo baseados em data
  • Níveis: error, warn, info, debug
  • Formato: JSON com carimbos de data/hora

🤝 Contribuindo

  1. Faça um fork do repositório
  2. Crie uma branch de recurso
  3. Faça suas alterações
  4. Adicione testes se aplicável
  5. Envie um pull request

📄 Licença

Licença ISC - veja package.json para detalhes

🔗 Relacionados