Skip to main content
Glama
ayeletstudioindia

Unreal Engine Code Analyzer MCP Server

Unreal Engine コードアナライザー MCP サーバー

Unreal Engineのコードベースに強力なソースコード解析機能を提供するModel Context Protocol(MCP)サーバー。このツールにより、ClaudeやClineといったAIアシスタントはUnreal Engineのソースコードを深く理解し、解析できるようになります。

特徴

  • クラス分析: メソッド、プロパティ、継承を含む C++ クラスの詳細情報を取得します。

  • 階層マッピング: クラスの継承階層を視覚化して理解する

  • コード検索: コンテキストに応じた結果でコードを検索します

  • 参照の検索: クラス、関数、変数へのすべての参照を検索します

  • サブシステム分析: レンダリング、物理などの主要な Unreal Engine サブシステムを分析します。

  • ゲームジャンル知識: ゲームのジャンル、機能、実装パターンに関する知識ベースが組み込まれています

  • パターン検出と学習: 一般的な Unreal Engine パターンを識別し、学習リソースを提供します

  • カスタムコードベースサポート: 独自の Unreal Engine プロジェクトのコードベースを分析します

Related MCP server: RAPID MCP Server

クイックスタート

インストール

  1. このリポジトリをクローンします:

git clone https://github.com/ayeletstudioindia/unreal-analyzer-mcp
cd unreal-analyzer-mcp
  1. 依存関係をインストールします:

npm install
  1. プロジェクトをビルドします。

npm run build

構成

Claudeデスクトップアプリ

Claude デスクトップ構成ファイル (Windows の場合は%APPDATA%\Claude\claude_desktop_config.json ) に次のコードを追加します。

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

クラインのために

Cline MCP 設定ファイル (Windows の場合は%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json ) に以下を追加します。

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

技術的な詳細

アナライザーは以下を使用して構築されます:

  • 型安全なコードのためのTypeScript

  • 堅牢な C++ 解析のための Tree-sitter

  • AIアシスタント統合のためのモデルコンテキストプロトコルSDK

  • ファイルパターンマッチングのためのGlob

主な依存関係:

  • @modelcontextprotocol/create-server: ^0.1.0

  • 木に座っている人: ^0.20.1

  • ツリーシッターcpp: ^0.20.0

  • グロブ: ^8.1.0

使用法

分析ツールを使用する前に、まず Unreal Engine ソース パスまたはカスタム コードベース パスのいずれかを設定する必要があります。

分析の設定

Unreal Engineソースコード

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

カスタムC++コードベースの場合

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

カスタムコードベース機能を使用すると、あらゆるC++プロジェクトを分析できます。例えば:

  • ゲームエンジン(Unity、Godot、カスタムエンジン)

  • グラフィックライブラリ(OpenGL、Vulkan、DirectX)

  • フレームワーク(Qt、Boost、SFML)

  • 任意のC++アプリケーションまたはライブラリ

カスタム ゲーム エンジンを分析する例:

// 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
  }
}

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"
  }
}

利用可能なツール

1. クラス分析

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

出力例:

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

2. クラス階層分析

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

出力例:

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

3. 参考文献の発見

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

出力例:

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

4. コード検索

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

出力例:

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

5. パターン検出とベストプラクティス

アナライザーには、Unreal Engine のベスト プラクティスを理解して従うための 2 つの強力なツールが用意されています。

パターン検出
// Detect patterns in a file
{
  "name": "detect_patterns",
  "arguments": {
    "filePath": "Source/MyGame/MyActor.h"
  }
}

出力例:

{
  "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;"
    }
  ]
}
ベストプラクティスガイド
// Get best practices for specific Unreal concepts
{
  "name": "get_best_practices",
  "arguments": {
    "concept": "UPROPERTY"  // or UFUNCTION, Components, Events, Replication, Blueprints
  }
}

出力例:

{
  "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/"
}

ベスト プラクティス ガイドでは、Unreal Engine の主要な概念について説明します。

  • UPROPERTY: 不動産の反映と露出

  • UFUNCTION: 関数リフレクションとブループリントの統合

  • コンポーネント: コンポーネントの作成と管理

  • イベント: イベント処理と委任

  • レプリケーション: ネットワークレプリケーションのセットアップ

  • ブループリント: ブループリント/C++ のインタラクション パターン

6. APIドキュメントクエリ

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

出力例:

{
  "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
    }
  ]
}

API ドキュメント クエリ ツールは以下を提供します。

  • クラスドキュメント全体の全文検索

  • カテゴリとモジュールによるフィルタリング

  • コード例と使用パターン

  • 関連性に基づいた結果の並べ替え

  • 公式ドキュメントへのリンク

7. サブシステム分析

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

出力例:

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

APIドキュメント

アナライザーには、包括的な API ドキュメント機能が含まれるようになりました。

  1. 自動ドキュメント生成

    • ソースコードのコメントからドキュメントを抽出します

    • 階級構造と関係を分析する

    • クラスをタイプとモジュール別に分類します

    • 構文例と使用パターンを生成する

  2. スマート検索

    • すべてのドキュメントの全文検索

    • 関連性に基づいた結果のランキング

    • カテゴリとモジュールのフィルタリング

    • コード例の組み込み

  3. ドキュメントのカテゴリ

    • オブジェクト: 基本オブジェクト クラス (UObject 派生クラス)

    • アクター: アクタークラス (AActor 派生クラス)

    • 構造: データ構造と型

    • コンポーネント: コンポーネントクラス

    • その他: その他のクラスとユーティリティ

  4. モジュール構成

    • コア: コアエンジン機能

    • RenderCore: レンダリングシステム

    • PhysicsCore: 物理エンジン

    • その他のエンジンモジュール

  5. 既存のツールとの統合

    • 詳細情報についてはクラス分析へのリンクをご覧ください

    • ベストプラクティスのためのパターン検出に接続

    • 公式のUnreal Engineドキュメントを参照

    • 学習リソースと例を提供します

ベストプラクティス

  1. 分析ツールを使用する前に、必ず Unreal Engine パスまたはカスタム コードベース パスのいずれかを設定してください。

  2. 分析時には特定のクラス名を使用します(例:単に「Class」ではなく「MyClass」)

  3. search_codeのファイルパターンパラメータを活用して結果を絞り込む

  4. クラス階層を分析する際には実装されたインターフェースを含めて完全な理解を得る

  5. サブシステム分析ツールを使用して、特定のクラスに進む前に概要を把握します (Unreal Engine のみ)

エラー処理

アナライザーは、次の場合に明確なエラー メッセージを表示します。

  • コードベース パスが設定されていません (Unreal Engine またはカスタム)

  • 指定されたパスは存在しないかアクセスできません

  • コードベースにクラスまたはシンボルが見つかりません

  • 無効なファイルパターンが指定されました

  • 検索クエリまたはC++コードの構文エラー

  • ソースファイルへのアクセスは制限されています

  • C++ ファイルの Tree-sitter 解析が失敗する

パフォーマンスに関する考慮事項

  • 大規模なコードベースでは分析に時間がかかる場合があります

  • 複雑なクラス階層では処理に時間がかかる場合があります

  • 幅広い検索パターンでは多くの一致が見つかる可能性がある

  • より早く結果を得るために、より具体的なクエリの使用を検討してください

テスト

このプロジェクトには、すべての主要コンポーネントに対する包括的なテストが含まれています。

テスト範囲

  • アナライザー テスト: UnrealCodeAnalyzer クラスのコア機能テスト

    • 初期化とパス検証

    • クラス分析と解析

    • 参考文献

    • コード検索

    • サブシステム分析

    • キャッシュ管理

  • ゲームジャンルテスト:ゲームジャンル知識ベースの検証

    • データ構造の検証

    • ジャンル固有の機能検証

    • コンポーネントの命名規則

    • データの完全性チェック

  • MCP サーバーテスト: MCP サーバー実装のテスト

    • サーバーの初期化

    • ツールの登録と取り扱い

    • リクエスト/レスポンスの検証

    • エラー処理

    • ツール固有の機能テスト

テストの実行

すべてのテストを実行します。

npm test

ウォッチモードでテストを実行します (開発中に便利です):

npm run test:watch

テストを書く

新しい機能を提供する際は、次の点に注意してください。

  1. すべての新機能には対応するテストカバレッジがあります

  2. テストはsrc/__tests__ディレクトリに整理されます

  3. 外部依存関係を適切にモックする

  4. 一貫性を保つために既存のテストパターンに従う

貢献

貢献を歓迎します!改善点があれば、お気軽にプルリクエストを送信してください。

  • ソースコード解析機能

  • 新しい分析機能

  • パフォーマンスの最適化

  • ドキュメントの改善

  • テスト範囲

PR を送信する前に:

  1. すべてのテストが合格することを確認する( npm test

  2. 新しい機能のテストを追加する

  3. 必要に応じてドキュメントを更新する

-
security - not tested
A
license - permissive license
-
quality - not tested

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/ayeletstudioindia/unreal-analyzer-mcp'

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