ue-codegraph-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ue-codegraph-mcpFind all functions that call TakeDamage"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
BlueprintCallablefunctions andBlueprintReadWriteproperties#includedependency 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-graphcommands directly from the terminal without Claude
Related MCP server: MCP Local Codebase Search
Prerequisites
Requirement | Version | Check |
Node.js | 22 LTS |
|
npm | 9+ |
|
Claude Code | latest |
|
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.LTS2. Run setup.bat
cd C:\path\to\ue-codegraph-mcp
.\setup.batsetup.bat will:
Verify Node.js 22 LTS
Install
node-gypglobally (needed for native module builds)Run
npm install(builds tree-sitter and better-sqlite3 from source)Run
npm linkto register theue-graphCLI globallyOptionally 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-projectOutput:
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.5s4. 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 indexCall 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 BClass analysis
ue-graph analyze UAMirLuaManager # Methods, fields, UE macros
ue-graph hierarchy AAMirCharacter # Inheritance tree (up + down)
ue-graph blueprint UAMirLuaManager # Full Blueprint interfaceSearch
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 graphMCP Tools Reference
Tool | Description |
| Index a UE source directory |
| Show registered codebases and stats |
| Re-index a single file |
| Find all callers of a function |
| Find all functions called by a function |
| Shortest call path from function A to B |
|
|
| Class methods, fields, UE macros, base classes |
| Ancestor and descendant class tree |
| Search UE macros by type and specifier |
| Get specifiers for a specific symbol's macro |
| All |
| Full Blueprint interface of a class |
| FTS5 symbol search |
| Code text pattern search |
| Cross-reference lookup |
Known Limitations
Issue | Workaround |
| Use Grep + Read instead |
Parent class lookup broken when | Use |
| Use unique function names or |
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 toolsanalyze_classA
Get detailed analysis of a C++ class including methods, properties, UE macros, inheritance, and Blueprint exposure.
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | Name of the class to analyze |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| macro_type | No | Filter by macro type | |
| codebase_id | No | Codebase ID | |
| max_results | No | Maximum results |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_depth | No | Maximum chain depth | |
| to_function | Yes | Target function name | |
| from_function | Yes | Starting function name |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | Maximum results to return | |
| function_name | Yes | Name of the function to find callees for |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | Maximum results to return | |
| function_name | Yes | Name of the function to find callers for |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | Maximum results | |
| symbol_name | Yes | Name of the symbol to find references for |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| specifier | No | Filter by specifier (e.g., BlueprintCallable, EditAnywhere) | |
| macro_type | No | Filter by macro type | |
| codebase_id | No | Codebase ID | |
| max_results | No | Maximum results |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| class_name | Yes | Name of the class to analyze |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| direction | No | Direction to traverse | both |
| max_depth | No | Maximum hierarchy depth | |
| class_name | Yes | Name of the class |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the file | |
| max_depth | No | Max depth for transitive dependencies | |
| include_transitive | No | Include transitive dependencies |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| codebase_id | No | Specific codebase ID (shows all if omitted) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| macro_type | No | Filter by specific macro type | |
| symbol_name | Yes | Name of the symbol the macro is attached to |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name for this codebase (defaults to directory name) | |
| path | Yes | Absolute path to UE Engine source or project root | |
| type | No | Codebase type (auto-detected if not specified) | |
| headers_only | No | Only index header files (.h/.hpp/.inl), skip .cpp files. Recommended for large engine source to reduce index size. |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to the file to re-index |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Text pattern to search for | |
| codebase_id | No | Codebase ID | |
| max_results | No | Maximum results |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter by symbol kind | |
| query | Yes | Search query (supports prefix matching) | |
| max_results | No | Maximum results |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAn 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.33MIT
- FlicenseNot gradedqualityDmaintenanceAn 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.
- AlicenseNot gradedqualityDmaintenanceA local, SQLite-backed code index for Claude Code, exposed over MCP, enabling targeted code retrieval without external APIs.1MIT
- FlicenseNot gradedqualityBmaintenanceRead-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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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