CodeAnalysis MCP Server

Análisis del código MCP

Un poderoso kit de herramientas de análisis de base de código que aprovecha el Protocolo de contexto de modelo (MCP) para la comprensión y transformación del código asistida por IA.

Características

  • Análisis de código : analice bases de código con árboles de sintaxis abstracta
  • Generación de contexto : cree información contextual enriquecida para modelos de IA
  • Integración de herramientas : Construido sobre el SDK de MCP para una integración perfecta de herramientas de IA
  • Arquitectura extensible : sistema basado en complementos para analizadores personalizados

Requisitos

  • Node.js 18+
  • NPM 9+
  • Redis (opcional, solo requerido para entornos de producción)

Instalación

# Clone the repository git clone https://github.com/yourusername/mcp-codeanalysis.git cd mcp-codeanalysis # Install dependencies npm install # Build the project npm run build

Configuración de Redis (opcional)

Redis se utiliza para el almacenamiento de sesiones en entornos de producción. Para desarrollo y pruebas, el sistema recurrirá automáticamente a un almacenamiento de sesiones en memoria si Redis no está disponible.

Nota : Existe un problema conocido con la conectividad de Redis, que puede provocar fallos en las operaciones incluso con Redis en ejecución. Consulte la sección "Deuda técnica" en plan.md para obtener más información. Por ahora, puede usar el script ./use-memory-session.sh para ejecutar el servidor con el almacén de sesiones de memoria. Para más información, consulte la Guía de solución de problemas de Redis .

Para instalar Redis:

# Ubuntu/Debian sudo apt-get install redis-server # macOS brew install redis # Windows (using WSL is recommended) # For native Windows, download from https://redis.io/download

De forma predeterminada, la aplicación intenta conectarse a Redis en redis://localhost:6379 . Puede configurar la conexión a Redis mediante variables de entorno:

# Set custom Redis URL export REDIS_URL=redis://custom-host:6379 # Force memory session store even if Redis is available export FORCE_MEMORY_SESSION=true

Desarrollo

# Run in development mode npm run dev # Run tests npm test # Run linting npm run lint

Uso

# Start the MCP server npm start # Run CLI tool node ./tools/mcp-stdio-client.js --task "Analyze dependencies" --files "src/*.ts"

Documentación

Licencia

Instituto Tecnológico de Massachusetts (MIT)

Servidor MCP de CodeAnalysis

Un servidor integral de Protocolo de Contexto de Modelo (MCP) para el análisis de código avanzado, que proporciona herramientas y conocimientos a través de una arquitectura extensible.

🚀 Características

  • Análisis básico de código : análisis de sintaxis y estructura
  • Métricas de código : complejidad, recuentos de líneas y métricas de calidad del código
  • Análisis de dependencia : visualización de la relación entre paquetes e importaciones
  • Gráfico de conocimiento : visualización y consulta de relaciones de código
  • Sistema de memoria : almacene y recupere información sobre bases de código
  • Visualizaciones : Genera diagramas en múltiples formatos (Mermaid, DOT, ASCII)
  • Análisis sociotécnico : comprender las relaciones entre el equipo y el código
  • Análisis de múltiples repositorios : análisis de relaciones entre repositorios
  • Planificación de la evolución : recomendaciones para mejorar el código
  • Observación en vivo : supervise los cambios de código en tiempo real
  • Integración IDE : Herramientas para la integración del editor
  • Herramientas para desarrolladores : Soporte mejorado para flujos de trabajo de desarrollo asistidos por IA

📋 Requisitos previos

  • Node.js 18+
  • npm o hilo
  • Redis (opcional para desarrollo, recomendado para producción)

🛠️ Instalación

# Clone the repository git clone https://github.com/your-username/codeanalysis-mcp.git cd codeanalysis-mcp # Install dependencies pnpm install # Build the project pnpm build

🖥️ Uso

El servidor MCP de CodeAnalysis se puede utilizar de dos maneras:

1. Como servidor MCP

# Start the MCP server pnpm start

Esto inicia el servidor MCP al que puede conectarse cualquier cliente MCP como Claude Desktop, Cursor u otros.

2. Uso de la CLI

El proyecto incluye una CLI completa para interacción directa:

# Get help pnpm run cli --help # Analyze a repository or directory pnpm run cli analyze repo ./src # Check code quality pnpm run cli quality analyze ./src

3. Uso de herramientas de desarrollo para el desarrollo asistido por IA

El proyecto incluye herramientas especiales diseñadas para mejorar el desarrollo asistido por IA:

# Generate code context for AI assistants node tools/ai-dev-helper.js --task="Implement new feature" --search="related functionality" # Run example client node examples/dev-tools-client.js

Consulte la Guía de herramientas para desarrolladores para obtener información detallada.

📊 Comandos de ejemplo

Análisis básico

# Analyze a local directory pnpm run cli analyze repo ./src # Analyze a specific file pnpm run cli analyze file ./src/server.ts

Métricas de código

# Get code metrics with function details pnpm run cli metrics analyze ./src --functions # Save metrics to a file pnpm run cli metrics analyze ./src -o metrics-report.json

Análisis de dependencia

# Analyze dependencies in Mermaid format pnpm run cli dependencies analyze ./src -f mermaid -o deps.mmd # Visualize dependencies pnpm run cli visualize dependencies -p ./src --format mermaid

Calidad del código

# Run quality analysis pnpm run cli quality analyze ./src # Generate HTML report pnpm run cli quality analyze ./src --html -o quality-report.html

Gráfico de conocimiento

# Build knowledge graph pnpm run cli knowledge build ./src # Query the knowledge graph pnpm run cli knowledge query ./src "type:function AND complexity>5" # Export as diagram pnpm run cli knowledge export ./src -f mermaid

Perspectivas y memoria

# Store an insight pnpm run cli insights store -r ./src -t code-pattern -c "Refactoring opportunity" # Retrieve insights pnpm run cli insights retrieve -r ./src

Herramientas para desarrolladores

# Prepare context for AI interactions node tools/ai-dev-helper.js --task="Fix authentication bug" --files="src/auth/*.ts" --search="login" # Use with AI prompts # Copy content from the generated ai-context.json file into your AI assistant prompt # or use the template in templates/ai-prompt-template.md

🏗️ Arquitectura

El proyecto sigue la arquitectura MCP con estos componentes:

  1. Servidor MCP : Implementación del servidor central que utiliza el protocolo MCP
  2. Características de análisis : Capacidades de análisis de código modular
  3. CLI : Interfaz de línea de comandos para interacción directa
  4. Capa de transporte : mecanismo de comunicación (stdio por defecto)

🔌 Integración con clientes MCP

Este servidor es compatible con cualquier cliente compatible con MCP, incluidos:

  • Aplicación de escritorio Claude
  • Editor de cursores
  • Continuar
  • Otras herramientas compatibles con MCP

📝 Especificación de ruta

Los comandos aceptan rutas en varios formatos:

  • Directorio local: ./src o /absolute/path/to/dir
  • Archivo local: ./src/file.ts o /path/to/file.ts
  • URL del repositorio: https://github.com/username/repo

🤝 Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.

📄 Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

Arquitectura de gestión de estados del SDK de MCP

Este proyecto implementa herramientas con estado para el SDK del Protocolo de Contexto de Modelo (MCP), proporcionando un marco para crear herramientas que mantienen el contexto entre invocaciones.

Descripción general de la arquitectura

La arquitectura de gestión estatal está organizada en varios componentes modulares:

src/state/ ├── helpers/ │ └── statefulTool.ts # Main entry point for stateful tool creation ├── machines/ │ └── toolMachine.ts # XState machine for tool execution flow ├── services/ │ ├── toolService.ts # Core execution service for tools │ ├── redisToolExecutionService.ts # Distributed execution service │ ├── redisSessionStore.ts # Redis-based session persistence │ └── types.ts # Shared type definitions

Componentes principales

Asistente de herramientas con estado ( statefulTool.ts )

El punto de integración central con el SDK de MCP, que proporciona:

  • Registro de herramientas con gestión de sesiones
  • Formato de respuesta compatible con MCP
  • Gestión de sesiones en memoria
  • Funciones auxiliares para el acceso y la manipulación de sesiones
// Creating a stateful tool with state persistence createStatefulTool(server, "my-tool", schema, handler); // With description createStatefulTool(server, "my-tool", "My stateful tool", schema, handler);

Máquina herramienta ( toolMachine.ts )

Máquina de estados basada en XState que define el flujo de ejecución de las herramientas:

  • Transiciones de estado (inactivo, herramienta seleccionada, parámetros establecidos, en ejecución, etc.)
  • Gestión del contexto para parámetros, resultados e historial
  • Manejo de errores y rutas de recuperación

Este componente delega la gestión de la sesión a la implementación de statefulTool.

Servicio de herramientas ( toolService.ts )

Servicio de ejecución central que coordina las transiciones del estado de la herramienta:

  • Gestiona la selección de herramientas, la validación de parámetros y la ejecución.
  • Realiza un seguimiento del historial de ejecución
  • Maneja resultados y errores de ejecución

Tipos ( types.ts )

Definiciones de tipos compartidos que garantizan la coherencia en todo el sistema de gestión estatal:

  • SessionData: Estructura para almacenar el estado de la herramienta
  • SessionStore: Interfaz para implementaciones de almacenamiento de sesiones
  • ExecutionResult: Formato de respuesta estándar para herramientas

Integración con el SDK de MCP

La arquitectura se integra con el SDK de MCP mediante:

  1. Ampliación del patrón de registro de herramientas con gestión de estados
  2. Mantener la compatibilidad con el formato de respuesta de MCP
  3. Proporcionar seguimiento de sesiones y contexto para operaciones con estado

Ejemplo de uso

import { createServer } from "@modelcontextprotocol/sdk"; import { createStatefulTool } from "./state/helpers/statefulTool"; import { z } from "zod"; const server = createServer(); // Register a stateful tool createStatefulTool( server, "counter", "A tool that maintains a count between invocations", { action: z.enum(["increment", "decrement", "reset"]), }, async (params) => { // Get session ID from params (or a new one will be created) const sessionId = params.sessionId; // Process the action let count = 0; // Tool logic with state manipulation... return { count }; } ); server.listen(3000);

Gestión de estados distribuidos

Para entornos distribuidos, las implementaciones basadas en Redis proporcionan:

  • Persistencia de la sesión tras reinicios del servidor
  • Bloqueo distribuido para acceso concurrente
  • Limpieza de sesión basada en TTL
  • Manejo de errores para problemas de red/conexión

Pruebas

Los componentes incluyen conjuntos de pruebas completos para verificar:

  • Transiciones de estado de la herramienta
  • Gestión de sesiones
  • Manejo y recuperación de errores
  • Formato de respuesta
  • Operación distribuida (con Redis)

Herramientas de desarrollo de IA

El servidor MCP de CodeAnalysis proporciona herramientas especializadas para el desarrollo asistido por IA. Estas herramientas ayudan a recopilar el contexto del código que puede alimentarse a los sistemas de IA para una asistencia más eficaz.

Scripts de cliente

El repositorio incluye varios scripts de cliente en el directorio tools/ :

  • Cliente HTTP ( tools/http-client.js ): se conecta al servidor MCP a través del transporte HTTP (predeterminado).
    node tools/http-client.js --task "Your task description" --files "src/features/*.ts" --search "session"
  • Cliente sin procesar ( tools/mcp-raw-client.js ): un cliente más simple que solo captura información del servidor.
    node tools/mcp-raw-client.js --task "Your task description"
  • Cliente simple ( tools/simple-client.js ): se comunica con el servidor a través de stdio.
    node tools/simple-client.js --task "Your task description" --files "src/features/*.ts"

Todos los scripts de cliente generan un archivo ai-context.json en la raíz del proyecto. Este archivo contiene información valiosa sobre el código base que puede compartirse con los asistentes de IA para proporcionar respuestas más informadas.

Plantilla de mensaje

Hay una plantilla de solicitud para asistentes de IA disponible en templates/ai-prompt-template.md . Esta plantilla ayuda a estructurar las solicitudes a los asistentes de IA con el contexto adecuado de las herramientas MCP.

Modos de transporte del servidor

El servidor MCP admite dos modos de transporte:

  1. Transporte HTTP (predeterminado): Se ejecuta en el puerto 3000 de forma predeterminada. Ideal para arquitecturas cliente-servidor.
  2. Transporte de Stdio : Para la comunicación directa entre procesos. Configure la variable de entorno STDIO_TRANSPORT=true para habilitarla.

Arquitectura de almacenamiento de sesiones

El análisis de código MCP ahora cuenta con una arquitectura de almacenamiento de sesiones modular con detección automática de backend:

  • Almacenamiento flexible : cambia automáticamente entre Redis y almacenamiento en memoria
  • Apto para desarrollo : Ejecútelo sin Redis durante el desarrollo
  • Listo para producción : utilice Redis para la persistencia en entornos de producción
  • Retroceso automático : se recurre elegantemente al almacenamiento de memoria cuando Redis no está disponible

Para obtener más detalles, consulte la documentación de Arquitectura del almacén de sesiones .

Requisitos

  • Node.js 18+
  • npm o hilo
  • Redis (opcional para desarrollo, recomendado para producción)
ID: 53hatn7080