Search Tools MCP Server
Un servidor MCP que mejora el análisis de código con capacidades avanzadas de búsqueda y mapeo de dependencias.
Documentación
🔍 Servidor MCP de Herramientas de Búsqueda
⚡ Un servidor inteligente de Protocolo de Contexto de Modelo (MCP) que potencia el análisis de código con capacidades avanzadas de búsqueda y mapeo de dependencias
🌟 Descripción General
El Servidor MCP de Herramientas de Búsqueda es un kit de herramientas potente que combina la búsqueda tradicional de código con algoritmos de análisis inteligente. Aprovecha el algoritmo CodeRank (inspirado en PageRank) para identificar los módulos más críticos en tu base de código y proporciona capacidades de búsqueda sofisticadas que van más allá de la coincidencia simple de texto.
🎯 Características Principales
🔎 Capacidades de Búsqueda Inteligente
- Búsqueda Contextual por Palabras Clave: Búsqueda impulsada por Ripgrep con líneas de contexto configurables
- Descubrimiento de Símbolos: Extrae y analiza funciones, clases, métodos y módulos
- Seguimiento de Uso: Encuentra dónde se utilizan los símbolos en toda tu base de código
- Resultados Clasificados por Prioridad: Resultados de búsqueda clasificados por importancia del código
🧠 Inteligencia y Análisis
- Algoritmo CodeRank: Identifica los módulos más críticos mediante análisis de redes
- Mapeo de Dependencias: Traza cadenas de dependencias complejas y análisis de impacto
- Detección de Puntos Críticos: Encuentra áreas de código altamente conectadas y de uso frecuente
- Impacto de Refactorización: Analiza el impacto potencial de los cambios de código
🎨 Filtrado Avanzado
- Filtrado por tipo de símbolo (funciones, métodos, clases)
- Patrones de inclusión/exclusión de archivos
- Seguimiento de dependencias de módulos externos
- Análisis de documentación Markdown
🛠️ Instalación
Requisitos Previos
- Python 3.13+
uvgestor de paqueteskitherramienta CLI (para análisis de símbolos)ripgrep(para búsqueda rápida de texto)
Configuración
# Clone the repository
git clone <repository-url>
cd search-tools
# Install dependencies
uv sync
⚙️ Configuración
Añadir a Cursor/Windsurf
Añade la siguiente configuración a tu archivo mcp.json:
{
"mcpServers": {
"search-tools": {
"command": "/path/to/uv",
"args": [
"run",
"--directory",
"/path/to/search-tools",
"main.py"
]
}
}
}
Para usuarios de macOS con Homebrew:
{
"mcpServers": {
"search-tools": {
"command": "/Users/yourusername/.local/bin/uv",
"args": [
"run",
"--directory",
"/path/to/your/search-tools/directory",
"main.py"
]
}
}
}
Para añadir a claude code:
claude mcp add-json search-tools '{"type":"stdio","command":"/Users/yourusername/.local/bin/uv","args":[ "run", "--directory", "/path/to/your/search-tools/directory", "main.py"]}'
📍 Encontrando tus Rutas
Para encontrar las rutas correctas para tu sistema:
# Find uv location
which uv
# Get absolute path to search-tools directory
pwd # (run this from the search-tools directory)
🚀 Herramientas Disponibles
🔍 contextual_keyword_search
Busca palabras clave con líneas de contexto configurables alrededor de las coincidencias.
Parámetros:
keyword: Término de búsqueda (insensible a mayúsculas)working_directory: Ruta absoluta al directorio de búsquedanum_context_lines: Líneas de contexto (predeterminado: 2)
🏗️ get_repo_symbols
Extrae símbolos (funciones, clases, métodos) de tu base de código.
Parámetros:
repo: Ruta del repositorioworking_directory: Directorio de ejecución de comandoskeep_types: Filtrar por tipos de símbolosfile_must_contain/file_must_not_contain: Filtrado de archivos
📊 get_symbol_usages
Encuentra dónde se utilizan símbolos específicos en toda tu base de código.
Parámetros:
repo: Ruta del repositoriosymbol_name_or_substring: Símbolo a buscarworking_directory: Directorio de ejecución de comandossymbol_type: Filtro de tipo opcional
🎯 coderank_analysis
Analiza la importancia del repositorio utilizando el algoritmo CodeRank.
Parámetros:
repo_path: Repositorio a analizarexternal_modules: Dependencias externas separadas por comastop_n: Número de módulos principales a devolver (predeterminado: 10)analyze_markdown: Incluir archivos markdownoutput_format: "summary", "detailed" o "json"
🔥 find_code_hotspots
Identifica áreas críticas de código combinando conectividad y frecuencia de uso.
Parámetros:
repo_path: Ruta del repositorioworking_directory: Directorio de ejecución de comandosmin_connections: Conexiones de importación mínimas (predeterminado: 5)include_external: Incluir dependencias externastop_n: Número de puntos críticos a devolver (predeterminado: 20)
🌐 trace_dependency_impact
Traza cadenas de dependencias y analiza el impacto de la refactorización.
Parámetros:
repo_path: Ruta del repositoriotarget_module: Módulo a analizarworking_directory: Directorio de ejecución de comandosanalysis_type: "dependency", "refactoring" o "both"max_depth: Profundidad máxima de trazado (predeterminado: 3)change_type: "modify", "split", "merge" o "remove"
🎪 smart_code_search
Búsqueda mejorada que combina ripgrep con priorización CodeRank.
Parámetros:
keyword: Término de búsqueda (admite expresiones regulares)repo_path: Ruta del repositorioworking_directory: Directorio de ejecución de comandosrank_results: Ordenar por importancia del módulocontext_lines: Líneas de contexto alrededor de las coincidencias (predeterminado: 3)max_results: Número máximo de resultados a devolver (predeterminado: 20)
🧪 Desarrollo y Pruebas
Ejecutando el Servidor
# Development mode
uv run mcp dev main.py
# Testing with MCP Inspector
npx @modelcontextprotocol/inspector python main.py
🔧 Dependencias
- mcp[cli]: Marco de trabajo del Protocolo de Contexto de Modelo
- cased-kit: Kit de herramientas de análisis de símbolos
- networkx: Análisis de grafos para el algoritmo CodeRank
🎨 Detalles del Algoritmo
Algoritmo CodeRank
El algoritmo CodeRank trata tu base de código como un grafo dirigido donde:
- Nodos: Módulos de Python, clases, funciones, métodos
- Aristas: Relaciones de importación y dependencias
- Pesos: Diferentes pesos para dependencias internas vs externas
Esto crea un sistema de clasificación que identifica las partes más "centrales" e importantes de tu base de código, similar a cómo PageRank identifica páginas web importantes.
💡 Casos de Uso
- 🔍 Exploración de Código: Comprende rápidamente bases de código grandes
- 🏗️ Planificación de Refactorización: Identifica áreas de alto impacto antes de los cambios
- 📚 Documentación: Encuentra los módulos más importantes para documentar primero
- 🐛 Investigación de Errores: Enfócate en rutas de código críticas
- 👥 Revisión de Código: Prioriza los esfuerzos de revisión en módulos importantes
🤝 Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviar problemas, solicitudes de funciones o solicitudes de extracción.
📄 Licencia
Este proyecto es de código abierto. Consulta el archivo de licencia para más detalles.
🔮 Impulsado por el Algoritmo CodeRank y el Protocolo de Contexto de Modelo
Haciendo la búsqueda de código inteligente, un repositorio a la vez