Unreal Engine Code Analyzer MCP Server

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Supports analysis of Boost framework code as a custom C++ codebase option

  • Allows analysis of any C++ project with features for class analysis, code search, and reference finding across custom C++ codebases

  • Supports analysis of OpenGL libraries as a custom C++ codebase for analyzing graphics-related code

Servidor MCP del analizador de código de Unreal Engine

Un servidor de Protocolo de Contexto de Modelo (MCP) que ofrece potentes funciones de análisis de código fuente para bases de código de Unreal Engine. Esta herramienta permite a asistentes de IA como Claude y Cline comprender y analizar en profundidad el código fuente de Unreal Engine.

Características

  • Análisis de clases : obtenga información detallada sobre las clases de C++, incluidos métodos, propiedades y herencia
  • Mapeo de jerarquías : visualice y comprenda las jerarquías de herencia de clases
  • Búsqueda de código : busque en el código con resultados contextuales
  • Búsqueda de referencias : localiza todas las referencias a clases, funciones o variables
  • Análisis de subsistemas : analice los principales subsistemas de Unreal Engine, como renderizado, física, etc.
  • Conocimiento del género de juegos : base de conocimiento integrada de géneros de juegos, características y patrones de implementación
  • Detección y aprendizaje de patrones : identifica patrones comunes de Unreal Engine y proporciona recursos de aprendizaje.
  • Soporte de base de código personalizada : Analice la base de código de su propio proyecto de Unreal Engine

Inicio rápido

Instalación

  1. Clonar este repositorio:
git clone https://github.com/ayeletstudioindia/unreal-analyzer-mcp cd unreal-analyzer-mcp
  1. Instalar dependencias:
npm install
  1. Construir el proyecto:
npm run build

Configuración

Para la aplicación de escritorio de Claude

Agregue lo siguiente a su archivo de configuración de escritorio de Claude ( %APPDATA%\Claude\claude_desktop_config.json en Windows):

{ "mcpServers": { "unreal-analyzer": { "command": "node", "args": ["path/to/unreal-analyzer/build/index.js"], "env": {} } } }

Para Cline

Agregue lo siguiente a su archivo de configuración de Cline MCP ( %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json en Windows):

{ "mcpServers": { "unreal-analyzer": { "command": "node", "args": ["path/to/unreal-analyzer/build/index.js"], "env": {} } } }

Detalles técnicos

El analizador se construye utilizando:

  • TypeScript para código con seguridad de tipos
  • Tree-sitter para un análisis robusto de C++
  • SDK de protocolo de contexto de modelo para la integración de asistentes de IA
  • Glob para coincidencia de patrones de archivos

Dependencias clave:

  • @modelcontextprotocol/create-server: ^0.1.0
  • cuidador de árboles: ^0.20.1
  • cuidador de árboles-cpp: ^0.20.0
  • globo: ^8.1.0

Uso

Antes de utilizar cualquier herramienta de análisis, primero debes configurar la ruta de origen de Unreal Engine o una ruta de base de código personalizada:

Configuración del análisis

Para el código fuente de Unreal Engine

{ "name": "set_unreal_path", "arguments": { "path": "/path/to/UnrealEngine/Source" } }

Para bases de código C++ personalizadas

{ "name": "set_custom_codebase", "arguments": { "path": "/path/to/your/codebase" } }

La función de base de código personalizada permite analizar cualquier proyecto de C++. Por ejemplo:

  • Motores de juego (Unity, Godot, motores personalizados)
  • Bibliotecas gráficas (OpenGL, Vulkan, DirectX)
  • Marcos (Qt, Boost, SFML)
  • Cualquier aplicación o biblioteca de C++

Ejemplo de análisis de un motor de juego personalizado:

// Initialize with custom codebase { "name": "set_custom_codebase", "arguments": { "path": "/path/to/game-engine" } } // Analyze engine's renderer class { "name": "analyze_class", "arguments": { "className": "Renderer" } } // Find all shader-related code { "name": "search_code", "arguments": { "query": "shader|glsl|hlsl", "filePattern": "*.{h,cpp,hpp}" } } // Get render system class hierarchy { "name": "find_class_hierarchy", "arguments": { "className": "RenderSystem", "includeImplementedInterfaces": true } }

Ejemplo de análisis de una aplicación Qt:

// Initialize with Qt project { "name": "set_custom_codebase", "arguments": { "path": "/path/to/qt-app" } } // Find widget class definitions { "name": "search_code", "arguments": { "query": "class.*:.*public.*QWidget", "filePattern": "*.h" } } // Analyze main window class { "name": "analyze_class", "arguments": { "className": "MainWindow" } } // Find signal/slot connections { "name": "find_references", "arguments": { "identifier": "connect", "type": "function" } }

Herramientas disponibles

1. Análisis de clases

// Get detailed information about the AActor class { "name": "analyze_class", "arguments": { "className": "AActor" } }

Ejemplo de salida:

{ "name": "AActor", "properties": [ { "name": "RootComponent", "type": "USceneComponent*", "access": "protected" } // ... other properties ], "methods": [ { "name": "BeginPlay", "returnType": "void", "access": "protected", "virtual": true } // ... other methods ] }

2. Análisis de la jerarquía de clases

// Get the inheritance hierarchy for ACharacter { "name": "find_class_hierarchy", "arguments": { "className": "ACharacter", "includeImplementedInterfaces": true } }

Ejemplo de salida:

{ "class": "ACharacter", "inheritsFrom": "APawn", "interfaces": ["IMovementModeInterface"], "hierarchy": [ "ACharacter", "APawn", "AActor", "UObject" ] }

3. Búsqueda de referencias

// Find all references to the BeginPlay function { "name": "find_references", "arguments": { "identifier": "BeginPlay", "type": "function" } }

Ejemplo de salida:

{ "references": [ { "file": "Actor.cpp", "line": 245, "context": "void AActor::BeginPlay() { ... }" }, { "file": "Character.cpp", "line": 178, "context": "Super::BeginPlay();" } ] }

4. Búsqueda de código

// Search for physics-related code { "name": "search_code", "arguments": { "query": "PhysicsHandle", "filePattern": "*.h", "includeComments": true } }

Ejemplo de salida:

{ "matches": [ { "file": "PhysicsEngine/PhysicsHandleComponent.h", "line": 15, "context": "class UPhysicsHandleComponent : public UActorComponent", "snippet": "// Component used for grabbing and moving physics objects" } ] }

5. Detección de patrones y mejores prácticas

El analizador proporciona dos herramientas potentes para comprender y seguir las mejores prácticas de Unreal Engine:

Detección de patrones
// Detect patterns in a file { "name": "detect_patterns", "arguments": { "filePath": "Source/MyGame/MyActor.h" } }

Ejemplo de salida:

{ "patterns": [ { "pattern": "UPROPERTY Macro", "description": "Property declaration for Unreal reflection system", "location": "Source/MyGame/MyActor.h:15", "context": "UPROPERTY(EditAnywhere, BlueprintReadWrite)\nfloat Health;", "improvements": "Consider adding a Category specifier for better organization\nConsider adding Meta tags for validation", "documentation": "https://docs.unrealengine.com/5.0/en-US/unreal-engine-uproperty-specifier-reference/", "bestPractices": "Use appropriate specifiers (EditAnywhere, BlueprintReadWrite)\nConsider replication needs (Replicated, ReplicatedUsing)\nGroup related properties with categories", "examples": "UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = \"Combat\")\nfloat Health;\nUPROPERTY(Replicated, Meta = (ClampMin = \"0.0\"))\nfloat Speed;" } ] }
Guía de mejores prácticas
// Get best practices for specific Unreal concepts { "name": "get_best_practices", "arguments": { "concept": "UPROPERTY" // or UFUNCTION, Components, Events, Replication, Blueprints } }

Ejemplo de salida:

{ "description": "Property declaration for Unreal reflection system", "bestPractices": [ "Use appropriate specifiers (EditAnywhere, BlueprintReadWrite)", "Consider replication needs (Replicated, ReplicatedUsing)", "Group related properties with categories", "Use Meta tags for validation and UI customization" ], "examples": [ "UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = \"Combat\")\nfloat Health;", "UPROPERTY(Replicated, Meta = (ClampMin = \"0.0\"))\nfloat Speed;" ], "documentation": "https://docs.unrealengine.com/5.0/en-US/unreal-engine-uproperty-specifier-reference/" }

La guía de mejores prácticas cubre conceptos clave de Unreal Engine:

  • UPROPERTY: Reflexión y exposición de la propiedad
  • UFUNCTION: Reflexión de funciones e integración de Blueprint
  • Componentes: Creación y gestión de componentes
  • Eventos: Gestión y delegación de eventos
  • Replicación: configuración de replicación de red
  • Planos: patrones de interacción entre planos y C++

6. Consulta de documentación de API

// Search the API documentation { "name": "query_api", "arguments": { "query": "Actor", "category": "Object", "module": "Core", "includeExamples": true, "maxResults": 10 } }

Ejemplo de salida:

{ "results": [ { "class": "AActor", "description": "Base class for all actors in the game", "module": "Core", "category": "Object", "syntax": "class AActor : public UObject", "examples": [ "// Create a new actor\nAActor* MyActor = GetWorld()->SpawnActor<AActor>();" ], "remarks": [ "Actors are the base building blocks of the game", "Can be placed in levels or spawned dynamically" ], "documentation": "https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Core/AActor", "relevance": 100 } ] }

La herramienta de consulta de documentación API proporciona:

  • Búsqueda de texto completo en la documentación de la clase
  • Filtrado por categoría y módulo
  • Ejemplos de código y patrones de uso
  • Ordenación de resultados basada en la relevancia
  • Enlaces a la documentación oficial

7. Análisis de subsistemas

// Analyze the Physics subsystem { "name": "analyze_subsystem", "arguments": { "subsystem": "Physics" } }

Ejemplo de salida:

{ "name": "Physics", "coreClasses": [ "UPhysicsEngine", "FPhysScene", "UBodySetup" ], "keyFeatures": [ "PhysX integration", "Collision detection", "Physical materials" ], "commonUseCases": [ "Character movement", "Vehicle simulation", "Destructible environments" ] }

Documentación de la API

El analizador ahora incluye capacidades integrales de documentación de API:

  1. Generación automática de documentación
    • Extrae documentación de los comentarios del código fuente.
    • Analiza la estructura y las relaciones de clases.
    • Categoriza las clases por tipo y módulo
    • Genera ejemplos de sintaxis y patrones de uso.
  2. Búsqueda inteligente
    • Búsqueda de texto completo en toda la documentación
    • Clasificación de resultados basada en la relevancia
    • Filtrado de categorías y módulos
    • Ejemplo de código de inclusión
  3. Categorías de documentación
    • Objeto: Clases de objetos base (derivados de UObject)
    • Actor: Clases de actor (derivadas de AActor)
    • Estructura: Estructuras y tipos de datos
    • Componente: Clases de componentes
    • Varios: Otras clases y utilidades
  4. Organización del módulo
    • Núcleo: funcionalidad del motor principal
    • RenderCore: Sistema de renderizado
    • PhysicsCore: motor de física
    • Y otros módulos del motor
  5. Integración con herramientas existentes
    • Enlaces con análisis de clases para obtener información detallada
    • Se conecta a la detección de patrones para obtener mejores prácticas
    • Referencias a la documentación oficial de Unreal Engine
    • Proporciona recursos de aprendizaje y ejemplos.

Mejores prácticas

  1. Configure siempre la ruta de Unreal Engine o la ruta de la base de código personalizada antes de usar las herramientas de análisis
  2. Utilice nombres de clase específicos al analizar (por ejemplo, "MiClase" en lugar de solo "Clase")
  3. Aproveche el parámetro de patrón de archivo en search_code para limitar los resultados
  4. Incluya interfaces implementadas al analizar jerarquías de clases para una comprensión completa
  5. Utilice la herramienta de análisis de subsistemas para obtener una descripción general de alto nivel antes de profundizar en clases específicas (solo Unreal Engine)

Manejo de errores

El analizador arrojará mensajes de error claros cuando:

  • No se ha establecido ninguna ruta de base de código (Unreal Engine o personalizada)
  • La ruta proporcionada no existe o es inaccesible
  • No se puede encontrar la clase o el símbolo en el código base
  • Se proporcionan patrones de archivos no válidos
  • Errores de sintaxis en consultas de búsqueda o código C++
  • El acceso a los archivos fuente está restringido
  • El análisis de Tree-sitter falla en los archivos C++

Consideraciones de rendimiento

  • Las bases de código grandes pueden tardar más en analizarse
  • Las jerarquías de clases complejas pueden requerir más tiempo de procesamiento
  • Los patrones de búsqueda amplios podrían dar como resultado muchas coincidencias
  • Considere utilizar consultas más específicas para obtener resultados más rápidos

Pruebas

El proyecto incluye una cobertura de pruebas integral para todos los componentes principales:

Cobertura de la prueba

  • Pruebas del analizador : pruebas de funcionalidad principal para la clase UnrealCodeAnalyzer
    • Inicialización y validación de ruta
    • Análisis y análisis de clases
    • Hallazgo de referencia
    • Búsqueda de código
    • Análisis de subsistemas
    • Gestión de caché
  • Pruebas de géneros de juegos : validación de la base de conocimientos de géneros de juegos
    • Verificación de la estructura de datos
    • Validación de características específicas del género
    • Convenciones de nomenclatura de componentes
    • Comprobaciones de integridad de datos
  • Pruebas del servidor MCP : Pruebas de la implementación del servidor MCP
    • Inicialización del servidor
    • Registro y manejo de herramientas
    • Validación de solicitud/respuesta
    • Manejo de errores
    • Pruebas de funcionalidad específicas de la herramienta

Ejecución de pruebas

Ejecutar todas las pruebas:

npm test

Ejecutar pruebas en modo de observación (útil durante el desarrollo):

npm run test:watch

Pruebas de escritura

Al contribuir con nuevas funciones, asegúrese de lo siguiente:

  1. Toda nueva funcionalidad tiene una cobertura de prueba correspondiente
  2. Las pruebas se organizan en el directorio src/__tests__
  3. Simular dependencias externas apropiadamente
  4. Siga los patrones de prueba existentes para mantener la coherencia

Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar solicitudes de incorporación de cambios con mejoras a:

  • Capacidades de análisis de código fuente
  • Nuevas funciones de análisis
  • Optimizaciones de rendimiento
  • Mejoras en la documentación
  • Cobertura de pruebas

Antes de enviar una solicitud de relaciones públicas:

  1. Asegúrese de que todas las pruebas pasen ( npm test )
  2. Agregar pruebas para nuevas funcionalidades
  3. Actualice la documentación según sea necesario
-
security - not tested
A
license - permissive license
-
quality - not tested

Proporciona un análisis profundo del código fuente para las bases de código de Unreal Engine, lo que permite a los asistentes de IA comprender las estructuras de clases de C++, buscar código y analizar subsistemas.

  1. Features
    1. Quick Start
      1. Installation
        1. Configuration
          1. For Claude Desktop App
          2. For Cline
        2. Technical Details
          1. Usage
            1. Setting Up Analysis
            2. Available Tools
            3. API Documentation
            4. Best Practices
            5. Error Handling
            6. Performance Considerations
          2. Testing
            1. Test Coverage
            2. Running Tests
            3. Writing Tests
          3. Contributing
            ID: z36022whws