Skip to main content
Glama
YomenStyle

ue-codegraph-mcp

by YomenStyle

ue-codegraph-mcp

MCP server for indexing and querying Unreal Engine C++ codebases.

Indexes your UE project's Source/ directory into a local SQLite database and exposes 15 MCP tools so Claude Code can answer questions about call graphs, class structure, #include dependencies, and Blueprint-exposed symbols — without reading raw files every time.


Features

  • Call graph analysis — find all callers of a function, trace call chains from A → B

  • Class analysis — methods, fields, base classes, UE macros (UCLASS, UPROPERTY, UFUNCTION)

  • Blueprint exposure — list all BlueprintCallable functions and BlueprintReadWrite properties

  • #include dependency graph — what a file includes, and what includes it (transitive support)

  • Symbol search — FTS5 full-text search across 40k+ symbols with prefix matching

  • Incremental indexing — re-indexes only changed files (hash + mtime based)

  • Standalone CLI — use ue-graph commands directly from the terminal without Claude


Related MCP server: MCP Local Codebase Search

Prerequisites

Requirement

Version

Check

Node.js

22 LTS

node --version

npm

9+

npm --version

Claude Code

latest

claude --version

Node.js 22 LTS is required. Odd-numbered "Current" releases (v23, v25, etc.) are incompatible with tree-sitter's native bindings and will fail to parse files.


Installation

1. Install Node.js 22 LTS

Download from https://nodejs.org (click the LTS tab) or use winget:

winget install OpenJS.NodeJS.LTS

2. Run setup.bat

cd C:\path\to\ue-codegraph-mcp
.\setup.bat

setup.bat will:

  1. Verify Node.js 22 LTS

  2. Install node-gyp globally (needed for native module builds)

  3. Run npm install (builds tree-sitter and better-sqlite3 from source)

  4. Run npm link to register the ue-graph CLI globally

  5. Optionally index your project and generate mcp.json

If the native build fails, install Visual Studio Build Tools with the C++ build tools workload, then re-run setup.bat.

3. Index your project

ue-graph index "G:\YourProject\Source" my-project

Output:

Indexing G:\YourProject\Source as "my-project" (project)...

Done!
  Files:   1784  (new: 1784, changed: 0)
  Symbols: 45623
  Macros:  3210
  Calls:   28450
  Includes: 9120
  Time: 32.5s

4. Register with Claude Code

claude mcp add -s user ue-codegraph node "C:\path\to\ue-codegraph-mcp\build\index.js"

Verify with claude mcp list. Then start Claude Code in your project directory and run /mcp to confirm the server is connected.


Usage in Claude Code

Once registered, Claude automatically uses the MCP tools when you ask natural-language questions:

"Find everything that calls SetHP"
"Trace the call chain from DamageMyPlayer to ApplyDamage"
"Analyze the UAMirLuaManager class"
"Which files include AMirCharacter.h?"
"Show all BlueprintCallable functions in UAMirAbilityComponent"

CLI Commands

Use ue-graph directly from the terminal without Claude Code.

Index management

ue-graph index <path> [name]     # Index a codebase
ue-graph status                  # Show indexed codebases and stats
ue-graph reindex <file_path>     # Re-index a single file after changes
ue-graph delete <id|name|all>    # Remove a codebase from the index

Call graph

ue-graph callers SetHP                       # Who calls SetHP?
ue-graph callees BeginPlay                   # What does BeginPlay call?
ue-graph chain DamageMyPlayer SetHP          # Call path from A to B

Class analysis

ue-graph analyze UAMirLuaManager             # Methods, fields, UE macros
ue-graph hierarchy AAMirCharacter            # Inheritance tree (up + down)
ue-graph blueprint UAMirLuaManager           # Full Blueprint interface
ue-graph search "SetHP"                      # FTS symbol search
ue-graph code "CL2LG_MY_CHARACTER_SPAWN_REQ" # Code text pattern search
ue-graph refs DamageMyPlayer                 # Where is this symbol used?

UE Macros

ue-graph macros UFUNCTION                    # All UFUNCTION macros
ue-graph macros UFUNCTION BlueprintCallable  # Filter by specifier
ue-graph deps "G:\...\MyActor.h"            # #include dependency graph

MCP Tools Reference

Tool

Description

init_codebase

Index a UE source directory

get_index_status

Show registered codebases and stats

reindex_file

Re-index a single file

find_callers

Find all callers of a function

find_callees

Find all functions called by a function

find_call_chain

Shortest call path from function A to B

get_file_dependencies

#include graph (includes + included-by)

analyze_class

Class methods, fields, UE macros, base classes

get_class_hierarchy

Ancestor and descendant class tree

find_ue_macros

Search UE macros by type and specifier

get_macro_specifiers

Get specifiers for a specific symbol's macro

find_blueprint_exposed

All BlueprintCallable/BlueprintReadWrite symbols

get_blueprint_interface

Full Blueprint interface of a class

search_symbols

FTS5 symbol search

search_code

Code text pattern search

find_references

Cross-reference lookup


Known Limitations

Issue

Workaround

analyze_class may fail on 3000+ line headers (forward declarations)

Use Grep + Read instead

Parent class lookup broken when GENERATED_BODY() is the only inheritance hint

Use grep 'class Foo.*public'

find_callees can mix results when multiple classes share the same method name

Use unique function names or find_callers


Troubleshooting

All files fail with Invalid argument during indexing → Wrong Node.js version. Install Node.js 22 LTS, delete node_modules/, re-run setup.bat.

Native build errors (node-gyp, better-sqlite3) → Install Visual Studio Build Tools (C++ workload), then re-run setup.bat.

MCP server not visible in Claude Code → Confirm the path in claude mcp list is an absolute path. Restart Claude Code and run /mcp.


License

MIT

Available Tools

16 tools
analyze_classA

Get detailed analysis of a C++ class including methods, properties, UE macros, inheritance, and Blueprint exposure.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesName of the class to analyze

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It states the tool returns analysis data and implies a read operation, but does not disclose potential side effects, authentication needs, or rate limits. The description is adequate but not thorough for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the core purpose and lists key details. No redundant or extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one parameter and no output schema, the description sufficiently explains what the tool does and what it covers. However, it does not mention the return format (JSON) or any limitations, leaving minor ambiguity. Still largely complete for this simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the description adds no extra meaning beyond the schema's description of class_name. The parameter is straightforward, and the schema already explains its purpose, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'detailed analysis of a C++ class', listing specific elements like methods, properties, UE macros, inheritance, and Blueprint exposure. It distinguishes itself from sibling tools that focus on indexing, searching, or narrower analyses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus siblings such as get_class_hierarchy or find_ue_macros. Usage is implied from the description (comprehensive analysis), but no exclusions or alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_blueprint_exposedB

Find all Blueprint-exposed functions and properties across the codebase.

ParametersJSON Schema
NameRequiredDescriptionDefault
macro_typeNoFilter by macro type
codebase_idNoCodebase ID
max_resultsNoMaximum results

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It only states a read operation ('Find') but lacks details on pagination, return format, or any side effects. This is minimal disclosure for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It is front-loaded with the core action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is too brief for a tool with three parameters and no output schema. It misses context about return values, filtering behavior, and how it compares to similar sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is already described. The description adds no additional meaning beyond what is in the schema, earning a baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Find', the resource 'Blueprint-exposed functions and properties', and the scope 'across the codebase'. It distinguishes from sibling tools like find_callers or find_ue_macros by focusing on Blueprint-exposed items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. Siblings like find_ue_macros or search_symbols overlap, but the description does not differentiate usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_call_chainB

Find the shortest call chain from one function to another using recursive CTE graph traversal.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_depthNoMaximum chain depth
to_functionYesTarget function name
from_functionYesStarting function name

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It mentions the use of 'recursive CTE graph traversal' and 'shortest call chain,' giving some algorithmic insight. However, it omits important traits such as read-only nature, performance implications for deep chains, error handling (e.g., no path found), and reliance on an indexed codebase. The transparency is moderate but incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that immediately conveys the core purpose. There is no redundant or filler content. Every word serves a purpose, making it easy for an agent to quickly understand the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a shortest-path graph traversal tool and the absence of an output schema, the description is insufficient. It does not specify the return format (e.g., list of function names, depth), error cases (e.g., unreachable target), or the effect of max_depth. This leaves an agent uncertain about how to interpret results and handle edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for all three parameters (from_function, to_function, max_depth). The description does not add any additional meaning beyond the schema; it merely reiterates the concept of 'shortest call chain.' Per the rubric, when schema coverage is high (100%), a score of 3 is baseline, and the description contributes no extra semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Find the shortest call chain from one function to another using recursive CTE graph traversal.' This specifies a unique verb-resource combination (find + shortest call chain) that distinguishes it from sibling tools like find_callers and find_callees, which retrieve all callers or callees rather than a path between two functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lacks any guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., need for an indexed codebase), limitations (e.g., max_depth constraint), or when not to use it. While the sibling tools provide contrasting functionality, no explicit comparison or usage context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_calleesC

Find all functions called by a specific function.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNoMaximum results to return
function_nameYesName of the function to find callees for

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description bears full behavioral burden. It does not disclose whether callee search is direct or recursive, nor does it describe output format, performance implications, or side effects. The presence of 'max_results' suggests potential large result sets, but this is not clarified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It is front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description should provide more context about return values, scope, or limitations. It lacks details that would help an agent understand what to expect or how to interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already described in the schema. The description adds no additional semantic information beyond what the schema provides for 'function_name' and 'max_results'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Find all functions called by a specific function' clearly states the verb and resource. It distinguishes from siblings like 'find_callers' and 'find_call_chain' by implying direction (callees vs callers). However, it could be slightly more specific by noting the scope (e.g., in the codebase).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description does not mention when not to use it, nor does it reference sibling tools like find_callers or find_call_chain for comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_callersB

Find all functions that call a specific function.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNoMaximum results to return
function_nameYesName of the function to find callers for

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Fails to disclose behavioral traits such as read-only nature, performance impact, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise and front-loaded. However, it sacrifices useful detail for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Minimal description for a tool with 2 parameters and no output schema. Lacks info on return format, error handling, or relationship to sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. Description adds no extra meaning beyond schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'find' and resource 'functions that call a specific function'. It distinguishes from siblings like 'find_callees' and 'find_call_chain'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'find_callees' or 'find_call_chain'. Missing context about prerequisites or restrictions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_referencesB

Find all references to a symbol (class, function, variable) across the codebase.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNoMaximum results
symbol_nameYesName of the symbol to find references for

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as whether the tool is read-only, output format, or what happens if the symbol is not found. The agent lacks crucial context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the purpose with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and the tool's moderate complexity, the description could be more complete by mentioning output format or limitations. It is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description reinforces the purpose of the symbol_name parameter but adds little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Find' and the resource 'references to a symbol' across the codebase. It distinguishes from sibling tools like find_callers and find_callees.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives like search_symbols or find_callers. No when-not-to-use or context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_ue_macrosA

Search for UE macros (UCLASS, UPROPERTY, UFUNCTION, etc.) with optional filtering by type and specifiers.

ParametersJSON Schema
NameRequiredDescriptionDefault
specifierNoFilter by specifier (e.g., BlueprintCallable, EditAnywhere)
macro_typeNoFilter by macro type
codebase_idNoCodebase ID
max_resultsNoMaximum results

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It indicates a read-only search operation, but lacks details on authentication needs, rate limits, or whether the search is real-time or index-based. It adds minimal value beyond what the name and schema imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-frontloaded sentence that conveys the core purpose and filtering capability without any extraneous words. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers the basic purpose and aligns with the schema, it does not explain output expectations, pagination, or default values (e.g., max_results=50). Given no output schema and moderate complexity (4 parameters), the description is minimally adequate but could provide more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description mentions 'optional filtering by type and specifiers', which reinforces the schema but does not add new semantic meaning, meeting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for UE macros, lists specific types (UCLASS, UPROPERTY, etc.), and mentions optional filtering, which distinguishes it from generic search tools like find_references or search_symbols.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used to find UE macros with filters, but it does not provide explicit guidance on when to use this tool versus sibling tools like find_callers or get_macro_specifiers, nor does it mention exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_blueprint_interfaceA

Get the complete Blueprint interface for a class (all BP-exposed functions, properties, events, delegates).

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesName of the class to analyze

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It states the tool retrieves data but does not mention whether it requires special permissions, performance implications, or side effects. The read nature is implicit but not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence that conveys the tool's action and output without extraneous words. It is front-loaded with the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool with no output schema or annotations, the description adequately explains what the tool does and what it returns. It could be improved by noting the format of the output, but it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the sole parameter 'class_name', and the description adds context about the class being analyzed for BP-exposed items. However, it does not add new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the verb 'Get', the resource 'Blueprint interface', and the scope 'for a class'. It lists the included elements (functions, properties, events, delegates), making the purpose clear and distinguishing it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when the complete Blueprint interface is needed, but lacks explicit guidance on when to use versus alternatives like 'analyze_class'. No context is provided for prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_class_hierarchyB

Get the inheritance hierarchy for a class (ancestors, descendants, or both).

ParametersJSON Schema
NameRequiredDescriptionDefault
directionNoDirection to traverseboth
max_depthNoMaximum hierarchy depth
class_nameYesName of the class

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist; the description only states it returns hierarchy but lacks details on return format (e.g., list of names?), order, or potential performance impacts for deep hierarchies. Minimal disclosure beyond basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no redundancy. Perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 3 parameters and no output schema, the description omits return format, potential errors, and usage constraints (e.g., whether max_depth applies equally to both directions). For an inheritance hierarchy tool, more behavioral context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter described. The description adds no new semantic meaning beyond the schema's parameter descriptions, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves inheritance hierarchy for a class, specifying ancestors, descendants, or both. This distinguishes it from siblings like 'analyze_class' or 'find_callers'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when class hierarchy is needed, but provides no explicit guidance on when to prefer this over siblings like 'analyze_class' that might also provide class information, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_file_dependenciesB

Get #include dependency graph for a file (what it includes and what includes it).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the file
max_depthNoMax depth for transitive dependencies
include_transitiveNoInclude transitive dependencies

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It states it gets a dependency graph but does not mention read-only nature, performance impact, or side effects. This is insufficient for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that conveys the core purpose without unnecessary words. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool returns a dependency graph, the description lacks details on output format or how to interpret results. No output schema exists, so more explanation is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema fully documents parameters. The description adds no additional parameter information beyond what is in the schema, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the #include dependency graph for a file, specifying both incoming and outgoing dependencies. This distinguishes it from sibling tools like find_callers/find_callees which focus on function calls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., find_references, search_symbols). The purpose is clear, but usage context is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_index_statusB

Get the indexing status and statistics for registered codebases.

ParametersJSON Schema
NameRequiredDescriptionDefault
codebase_idNoSpecific codebase ID (shows all if omitted)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits. It indicates a read operation but does not explicitly state it is non-destructive, nor does it describe error behavior (e.g., what happens if codebase_id is invalid) or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that clearly states the tool's purpose with no extraneous or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does not explain what 'indexing status and statistics' entails, nor does it clarify the output format. Given that there is no output schema, the description should provide more detail to set expectations for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter that has a description. The tool's description adds context about 'registered codebases' but does not deepen understanding of the parameter beyond the schema's own description. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'Get' and clearly identifies the resource as 'indexing status and statistics for registered codebases'. This distinguishes it from sibling tools like init_codebase or reindex_file, which are action-oriented rather than status-oriented.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. It does not mention prerequisites (e.g., codebase must be initialized first) or situations where another tool would be more appropriate, such as using get_blueprint_interface for blueprint-specific details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_macro_specifiersC

Get all specifiers for a specific UE macro instance, including meta specifiers.

ParametersJSON Schema
NameRequiredDescriptionDefault
macro_typeNoFilter by specific macro type
symbol_nameYesName of the symbol the macro is attached to

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, placing the full burden on the description. The description notes that meta specifiers are included, but lacks disclosure of side effects, read-only nature, authorization requirements, or error behavior. The agent must infer that this is a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no extraneous words. It efficiently communicates the core purpose. However, it could be slightly more structured to include usage context without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is extremely minimal given the tool has two parameters and no output schema or annotations. It fails to specify the return format, pagination, or any constraints on macro types. For a tool dealing with UE macros, more context is needed for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters (symbol_name and macro_type) with descriptions. The tool description adds no additional semantics beyond what the schema provides, aligning with the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves all specifiers for a specific UE macro instance, including meta specifiers. This specific verb+resource combination distinguishes it from sibling tools like find_ue_macros, which focuses on finding macros rather than their specifiers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. For instance, there is no indication of how this tool relates to find_ue_macros or when one might prefer one over the other.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

init_codebaseA

Register and index a UE source or project codebase. Scans C++ files, extracts symbols, UE macros, call graphs, and include dependencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoName for this codebase (defaults to directory name)
pathYesAbsolute path to UE Engine source or project root
typeNoCodebase type (auto-detected if not specified)
headers_onlyNoOnly index header files (.h/.hpp/.inl), skip .cpp files. Recommended for large engine source to reduce index size.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses scanning and extraction activities but does not discuss side effects (e.g., database writes, idempotency), authentication needs, or performance impact. With no annotations, more behavioral detail would be beneficial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with front-loaded purpose. Every phrase contributes: first sentence states action, second details scope. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main action but lacks description of return value/status (no output schema), error conditions, or prerequisites (e.g., UE environment). For a registration tool with 4 parameters, slightly incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and description adds limited value beyond schema. It reinforces the tool's purpose but does not provide additional semantic guidance for parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool registers and indexes a UE codebase, scanning C++ files for symbols, macros, call graphs, and dependencies. Distinguishes from sibling tools which are analysis/query tools, not initialization.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage as a setup step before analysis tools, but no explicit guidance on when to use (e.g., 'first run') or when not to use (e.g., already indexed). No alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reindex_fileB

Re-index a single file (useful after file changes).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the file to re-index

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states the action without disclosing behavioral traits like permissions, idempotency, or effects. Minimal value added beyond the action name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded and contains no fluff. However, it may be too brief, missing important details, but still efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (1 param, no output schema), the description is minimal. It does not mention prerequisites (e.g., index must be initialized) or error conditions, leaving gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage for the single parameter 'file_path', with clear description. Tool description adds no extra meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool re-indexes a single file, which contrasts with sibling tool init_codebase for bulk indexing. It also provides context for use after file changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage after file changes but does not explicitly state when not to use or mention alternatives. For example, it could suggest using init_codebase for re-indexing the entire codebase.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_codeC

Search through indexed code using text pattern matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesText pattern to search for
codebase_idNoCodebase ID
max_resultsNoMaximum results

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description is too brief. It does not disclose behavioral traits such as case sensitivity, regex support, or performance implications, leaving the agent uncertain about the matching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence without fluff, but it is overly minimal. It could be slightly expanded to add value without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema and annotations, the description should provide more contextual completeness. It omits result format, pagination, error handling, and behavior with no matches, leaving significant gaps for a text search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds no meaning beyond the schema. Details like pattern format (regex vs plain text), codebase_id significance, and max_results behavior are missing, relying solely on the schema's generic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: searching through indexed code using text pattern matching. This is a specific verb+resource combination and distinguishes it from sibling tools like search_symbols or find_references.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as search_symbols or find_callers. The description lacks context for choosing this tool over others in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_symbolsB

Search for symbols using full-text search (FTS5). Supports fuzzy matching.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by symbol kind
queryYesSearch query (supports prefix matching)
max_resultsNoMaximum results

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description reveals the use of FTS5 and fuzzy matching, but lacks details on output format, permissions, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the purpose, but could benefit from a bit more structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description fails to explain what results look like or how to interpret them, leaving a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds minimal value beyond the schema; 'fuzzy matching' loosely relates to the query parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches for symbols using full-text search with fuzzy matching, distinguishing it from sibling tools like search_code and find_references.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not specify when to use this tool versus alternatives like search_code or find_references, nor does it provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.5/5.0
Disambiguation4/5

Tools are mostly distinct with clear purposes, but find_callers, find_callees, and find_call_chain could be confused if not reading descriptions carefully. search_symbols and search_code have overlapping functionality but are differentiated by search type.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., init_codebase, find_callers, get_class_hierarchy). The verbs (init, get, find, analyze, search) are appropriate and predictable.

Tool Count5/5

16 tools is well-scoped for a UE code analysis server, covering indexing, querying, and search without being overwhelming. Each tool serves a distinct purpose.

Completeness4/5

The tool set covers most aspects of codebase analysis: indexing, call graphs, class analysis, Blueprint exposure, macros, and search. Missing a tool to unregister/delete a codebase, but core workflows are complete.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server that provides semantic understanding of C++ codebases using libclang, allowing Claude to instantly find classes, functions, and their relationships without having to grep through thousands of files.
    33
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that indexes local Python projects into a SQLite database to enable efficient symbol searching and dependency tracking. It allows users to find function or class definitions, trace module imports, and read file contents through natural language interfaces.
  • A
    license
    Not graded
    quality
    D
    maintenance
    A local, SQLite-backed code index for Claude Code, exposed over MCP, enabling targeted code retrieval without external APIs.
    1
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Read-only MCP server that gives Claude live access to your UE5 project state — Blueprints, interfaces, variables, functions, event graphs, materials, structs, and Data Assets.

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/YomenStyle/ue-codegraph-mcp'

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