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+
  • uv gestor de paquetes
  • kit herramienta 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úsqueda
  • num_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 repositorio
  • working_directory: Directorio de ejecución de comandos
  • keep_types: Filtrar por tipos de símbolos
  • file_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 repositorio
  • symbol_name_or_substring: Símbolo a buscar
  • working_directory: Directorio de ejecución de comandos
  • symbol_type: Filtro de tipo opcional

🎯 coderank_analysis

Analiza la importancia del repositorio utilizando el algoritmo CodeRank.

Parámetros:

  • repo_path: Repositorio a analizar
  • external_modules: Dependencias externas separadas por comas
  • top_n: Número de módulos principales a devolver (predeterminado: 10)
  • analyze_markdown: Incluir archivos markdown
  • output_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 repositorio
  • working_directory: Directorio de ejecución de comandos
  • min_connections: Conexiones de importación mínimas (predeterminado: 5)
  • include_external: Incluir dependencias externas
  • top_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 repositorio
  • target_module: Módulo a analizar
  • working_directory: Directorio de ejecución de comandos
  • analysis_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 repositorio
  • working_directory: Directorio de ejecución de comandos
  • rank_results: Ordenar por importancia del módulo
  • context_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