Skip to main content
Glama
0xjcf
by 0xjcf

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

Related MCP server: MCP Codebase Insight

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)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/0xjcf/MCP_CodeAnalysis'

If you have feedback or need assistance with the MCP directory API, please join our Discord server