grep.app Code Search
Busca código en millones de repositorios públicos de GitHub usando la API de grep.app.
Documentación
Servidor MCP Grep
Un servidor Model Context Protocol (MCP) que proporciona capacidades de búsqueda de código en GitHub a través de la API de grep.app. Este servidor permite a los asistentes de IA buscar en millones de repositorios de GitHub patrones de código, funciones e implementaciones específicas.
🚀 Características
- 🔍 Búsqueda de código en GitHub: Busca en millones de repositorios de GitHub utilizando el potente índice de búsqueda de grep.app
- 🎯 Filtrado avanzado: Filtra resultados por lenguaje de programación, repositorio y ruta de archivo
- 📊 Formato inteligente: Los resultados incluyen resaltado de sintaxis, agrupación por repositorio y estadísticas resumidas
- ⚡ Alto rendimiento: Implementación asíncrona con manejo adecuado de errores y limitación de velocidad
- 🛠️ Múltiples modos de transporte: Soporta transporte stdio y SSE (Server-Sent Events)
- 📝 Resultados enriquecidos: Devuelve rutas de archivo, números de línea, fragmentos de código e información del repositorio
📋 Requisitos
- Python: 3.10 o superior
- Dependencias:
mcp- Framework Model Context Protocolstarlette- Framework web para transporte SSEuvicorn- Servidor ASGIaiohttp- Cliente HTTP asíncrono para solicitudes API
🔧 Instalación
Usando uv (Recomendado)
# Install directly from PyPI
uv add grep-mcp
# Or install from source
git clone https://github.com/galperetz/grep-mcp.git
cd grep-mcp
uv sync
Usando pip
pip install grep-mcp
🎯 Uso
Como servidor MCP (Recomendado)
Añade a la configuración de tu cliente MCP:
{
"mcpServers": {
"grep-mcp": {
"command": "uvx",
"args": ["grep-mcp"]
}
}
}
Ejecución directa
# Run with stdio transport (default)
python -m grep_mcp
# Run with SSE transport
python -m grep_mcp --transport sse --host 0.0.0.0 --port 8080
Argumentos de línea de comandos
--transport: Elige entrestdio(predeterminado) osse--host: Host al que vincularse para modo SSE (predeterminado:0.0.0.0)--port: Puerto para escuchar en modo SSE (predeterminado:8080)
🔧 Herramientas disponibles
grep_query
Busca patrones de código específicos en repositorios de GitHub.
Parámetros:
query(obligatorio): La cadena de consulta de búsquedalanguage(opcional): Filtro de lenguaje de programación (ej., "Python", "JavaScript")repo(opcional): Filtro de repositorio en formato "propietario/repositorio" (ej., "fastapi/fastapi")path(opcional): Filtro de ruta para directorios específicos (ej., "src/")
Ejemplos:
# Basic search
grep_query("async def main")
# Search Python files only
grep_query("FastAPI", language="Python")
# Search specific repository
grep_query("class Config", repo="fastapi/fastapi")
# Search in specific directory
grep_query("import", path="src/")
# Combined filters
grep_query("async def", language="Python", repo="fastapi/fastapi")
📊 Formato de respuesta
La herramienta devuelve JSON estructurado con:
{
"query": "your search query",
"summary": {
"total_results": 12345,
"results_shown": 10,
"repositories_found": 4,
"top_languages": [
{ "language": "Python", "count": 8500 },
{ "language": "JavaScript", "count": 2000 }
],
"top_repositories": [{ "repository": "owner/repo", "count": 150 }]
},
"results_by_repository": [
{
"repository": "owner/repo",
"matches_count": 89,
"files": [
{
"file_path": "src/main.py",
"branch": "main",
"total_matches": 5,
"line_numbers": [10, 25, 30],
"language": "python",
"code_snippet": "```python\nasync def main():\n app = FastAPI()\n return app\n```"
}
]
}
]
}
🏗️ Arquitectura
- Framework FastMCP: Construido sobre el framework FastMCP para facilitar el desarrollo de servidores MCP
- Cliente HTTP asíncrono: Utiliza aiohttp para solicitudes API sin bloqueo
- Formato de respuesta: Análisis y formato inteligente de las respuestas de grep.app
- Manejo de errores: Manejo integral de errores para fallos de API, tiempos de espera y límites de velocidad
- Flexibilidad de transporte: Soporta modos de transporte stdio y SSE basado en web
🛡️ Manejo de errores
El servidor maneja varias condiciones de error con elegancia:
- Limitación de velocidad: Detección automática y mensajes de error fáciles de usar
- Tiempos de espera de red: Tiempo de espera de 30 segundos con informe de errores adecuado
- Fallos de API: Manejo elegante de problemas de la API de grep.app
- Parámetros no válidos: Validación integral de parámetros con mensajes de error útiles
🧪 Pruebas
Ejecuta el conjunto de pruebas:
# Using uv
uv run pytest
# Using pytest directly
pytest tests/
La cobertura de pruebas incluye:
- Inicialización del servidor MCP
- Validación de parámetros de herramientas
- Escenarios de manejo de errores
- Formato de respuesta
- Compatibilidad de plataformas
🤝 Contribuciones
- Haz un fork del repositorio
- Crea una rama de características:
git checkout -b feature/amazing-feature - Realiza tus cambios con pruebas
- Ejecuta el conjunto de pruebas:
uv run pytest - Formatea el código:
uv run black . && uv run isort . - Confirma los cambios:
git commit -m 'Add amazing feature' - Sube a la rama:
git push origin feature/amazing-feature - Abre una solicitud de extracción (Pull Request)
📝 Licencia
Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.
🙏 Agradecimientos
- grep.app por proporcionar la excelente API de búsqueda de GitHub
- MCP (Model Context Protocol) por la especificación del protocolo
- FastMCP por el framework del servidor
📞 Soporte
- Problemas: Problemas de GitHub
- Repositorio: Repositorio de GitHub
Hecho con ❤️ para la comunidad de desarrollo de IA