verse-diagnostics-mcp
Parses UEFN Verse build diagnostics from UnrealEditorFortnite.log, providing structured error data for Fortnite/UEFN development.
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., "@verse-diagnostics-mcpCheck for any Verse errors in my latest build"
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.
verse-diagnostics-mcp
MCP server that parses UEFN Verse build diagnostics from UnrealEditorFortnite.log and exposes structured error data to Claude Code, Cursor, VS Code, or any MCP client.
Tools
Tool | Description |
| Parse Verse compile errors/warnings → structured JSON with file, line, column, code, message |
| Get raw VerseBuild log lines from the most recent compile |
| Check if the UEFN log was recently modified (build just ran?) |
Related MCP server: Xcode Errors MCP Server
Quick Start
Claude Code (uvx — recommended)
claude mcp add-json verse-diagnostics '{
"type": "stdio",
"command": "uvx",
"args": ["verse-diagnostics-mcp"],
"env": {
"UEFN_LOG_PATH": "/mnt/c/Users/YOUR_USER/AppData/Local/UnrealEditorFortnite/Saved/Logs/UnrealEditorFortnite.log",
"VERSE_PROJECT_ROOT": "C:/Users/YOUR_USER/Documents/Fortnite Projects"
}
}' --scope userClaude Desktop / Cursor / VS Code
Add to your MCP config (claude_desktop_config.json, .cursor/mcp.json, etc.):
{
"mcpServers": {
"verse-diagnostics": {
"command": "uvx",
"args": ["verse-diagnostics-mcp"],
"env": {
"UEFN_LOG_PATH": "C:\\Users\\YOUR_USER\\AppData\\Local\\UnrealEditorFortnite\\Saved\\Logs\\UnrealEditorFortnite.log",
"VERSE_PROJECT_ROOT": "C:\\Users\\YOUR_USER\\Documents\\Fortnite Projects"
}
}
}
}pip install
pip install verse-diagnostics-mcp
verse-diagnostics-mcpEnvironment Variables
Variable | Default | Description |
| Auto-detected (WSL/Windows) | Path to |
| Auto-detected | Fortnite Projects directory (for relative paths in output) |
Example Output
{
"ok": false,
"source": "uefn-log",
"error_count": 3,
"warning_count": 0,
"diagnostics": [
{
"file": "Berry/Content/hello_world_device.verse",
"line": 25,
"column": 17,
"endLine": 25,
"endColumn": 31,
"severity": "error",
"code": "VRS3506",
"message": "Unknown identifier `switch_manager`",
"timestamp": "2026-03-07T11:46:52+00:00"
}
]
}How It Works
The server reads UEFN's UnrealEditorFortnite.log and parses VerseBuild: lines using regex. It extracts file paths, line/column ranges, error codes, and messages, deduplicates them (UEFN sometimes logs the same error twice with slightly different formatting), and returns structured JSON.
This is a read-only log parser — it cannot trigger builds. The user must compile from UEFN or VS Code (verseWorkflow.compile), then this server reads the results.
CLAUDE.md Integration
Add this to your UEFN project's CLAUDE.md:
## Verse diagnostics workflow
- After modifying any `.verse` file, use `get_verse_diagnostics` to check for errors.
- If diagnostics include errors, fix them and recheck until `"ok": true`.
- If an API is unfamiliar, verify against official Verse documentation before using it.
- Success = `"ok": true` in diagnostics output.License
MIT
Available Tools
3 toolscheck_verse_log_freshnessARead-onlyIdempotent
Check when the UEFN log was last modified.
Useful for determining if a build has completed since the last check.
Returns: str: JSON with log_path, exists, modified_at, age_seconds
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, destructiveHint. The description adds the return structure (log_path, exists, modified_at, age_seconds) beyond the annotations. No contradictions.
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 concise sentences: first states the action, second explains usefulness, third lists return fields. No wasted words, front-loaded with key 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 the tool's simplicity (no parameters, safe operation) and that annotations cover safety, the description fully explains the tool's purpose and output. Output schema exists but description lists return fields explicitly.
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 tool has no actual parameters (input schema is an empty object). Since there are zero parameters, baseline is 4. Description does not need to add parameter information and correctly focuses on behavior.
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 checks when the UEFN log was last modified, and explicitly connects it to determining build completion. It is distinct from sibling tools get_latest_build_session and get_verse_diagnostics.
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 a clear use case ('useful for determining if a build has completed'), but does not explicitly state when not to use or mention alternatives. Context from siblings implies usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_build_sessionBRead-onlyIdempotent
Get all VerseBuild log lines from the most recent build session.
Returns the raw VerseBuild output lines (both errors and info) from the latest compile session, useful for understanding the full build context.
Returns: str: JSON with fields: - lines (list[str]): Raw VerseBuild log lines - count (int): Number of lines found - log_exists (bool): Whether the log file was found
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description's safety transparency is adequate. However, the claim 'Get all ... log lines' contradicts the tail_lines parameter which only retrieves the last N lines. The description does not disclose this limitation, misleading the agent about the scope of data retrieved.
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 reasonably concise at five sentences, covering purpose, output format, and content. It front-loads the primary action and follows with return structure. Some redundancy (e.g., 'raw VerseBuild output lines' twice) could be trimmed, but overall 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?
For a simple read tool with one optional parameter and strong annotations, the description adequately conveys return fields and general use. However, it omits the tail_lines parameter's role, the fact that 'all' is misleading, and does not mention when the log might not exist (though the output provides log_exists). Given the negative impact of the missing parameter info, completeness is adequate but not thorough.
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 0% (context signal), meaning the description must document the parameter. The parameter 'tail_lines' is not mentioned anywhere in the description; no explanation of its function, defaults, or constraints is provided. The agent gains no behavioral understanding beyond the schema's own minimal label.
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 VerseBuild log lines from the most recent build session' with a specific verb ('Get') and resource (latest build session logs). It implicitly distinguishes from siblings by focusing on build session content, not freshness or diagnostics.
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 indicates the tool is 'useful for understanding the full build context', implying when to use it, but does not explicitly contrast with siblings like 'check_verse_log_freshness' or provide when-not-to-use guidance. Usage is clear but not exclusive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_verse_diagnosticsARead-onlyIdempotent
Get the latest Verse compile diagnostics from UEFN logs.
Parses the UnrealEditorFortnite.log file for VerseBuild errors and warnings, deduplicates them, and returns structured JSON with file paths, line/column locations, error codes, and messages.
Returns: str: JSON object with fields: - ok (bool): True if no errors found - source (str): Always "uefn-log" - error_count (int): Number of errors - warning_count (int): Number of warnings - diagnostics (list): Array of diagnostic objects with: - file, line, column, endLine, endColumn, severity, code, message, timestamp, raw - log_path (str): Path to the log file read - log_exists (bool): Whether the log file was found
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint, idempotentHint, and non-destructive. The description adds significant behavioral detail: parsing method, deduplication, return format (structured JSON with fields), and source log path. This goes well beyond the 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?
The description is well-organized with a summary line, then details, then return structure. It is mostly concise, though the return value list is slightly lengthy. Front-loaded with the 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?
The description fully explains the tool's operation, output format, and parameter effects. Combined with schema descriptions, the agent has all necessary information to use the tool correctly. No gaps identified.
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 already provides descriptions for all parameters (tail_lines, file_filter, max_results, severity_filter), so the description adds no parameter-specific insight. Baseline 3 is appropriate given schema coverage is high despite context signaling 0% (likely a discrepancy).
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 retrieves Verse compile diagnostics from logs. It uses a specific verb ('Get') and resource ('verse diagnostics'), distinguishing it from sibling tools like check_verse_log_freshness (log recency) and get_latest_build_session (session info).
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 for diagnostics but does not explicitly state when to use this tool versus alternatives. No exclusions or when-not-to-use guidance are provided, leaving the agent to infer context from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a unique purpose: checking log freshness, retrieving raw build output, and getting structured diagnostics. There is no overlap or ambiguity.
All tool names follow a consistent verb_noun pattern with snake_case: check_verse_log_freshness, get_latest_build_session, get_verse_diagnostics.
3 tools is appropriate for a focused diagnostics server, though slightly minimal. Each tool serves a clear need without redundancy.
The tool set covers the full workflow: checking log freshness, retrieving raw build lines, and parsing structured diagnostics. No obvious gaps for the stated purpose.
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
Analytics and debugging for your MCP server — explore usage and sessions, then root-cause errors.
Lean 4 MCP server: compile, prove theorems, and formalize math with Mathlib.
Statically audits MCP tool surfaces for token cost, schema quality, and design issues.
A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects to Xcode's build system to extract, parse, and display errors and warnings from your Swift projects, helping AI assistants quickly identify code issues without manually searching through build logs.6MIT
- FlicenseNot gradedqualityCmaintenanceBridges Xcode and Cursor to provide real-time access to build errors, warnings, and debug output from Xcode's DerivedData, enabling automated error analysis and fixes directly within Cursor.
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to parse Xcode and Swift build outputs into structured, token-efficient formats like JSON or TOON. It provides tools for executing build commands and extracting detailed diagnostic information such as errors, warnings, and test failures.8MIT
- AlicenseAqualityFmaintenanceProvides build diagnostics and editor log tools for Unreal Engine AI development, enabling Live Coding builds, parsing compile errors, searching/filtering logs, and crash context.11MIT
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/berry-13/verse-diagnostics-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server