关于 Unreal Engine API Documentation
unreal-api-mcp 是一个 MCP 服务,为 AI Agent 提供准确的 UE5 C++ API 文档,覆盖引擎运行时、编辑器和内置插件。它按项目使用的引擎版本提供对应数据库,用于减少错误签名、错误 #include 路径和已弃用 API 的使用。无需安装 Unreal Engine。
主要功能
- 01按 UE 版本提供独立的 API 数据库
- 02精确查询函数签名与参数
- 03解析类型对应的 #include 路径
- 04查询 API 弃用警告及替代方案
- 05搜索 Blueprint 图相关内部类(如 UK2Node)
- 06按 .uproject 自动识别引擎版本
适用场景
- 01让 Agent 在编写 UE C++ 代码前核对函数签名
- 02查找类型所需的 #include 路径
- 03检查项目中调用的 API 是否已弃用
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 search_unreal_api、get_function_signature、get_include_path、get_class_reference 和 get_deprecation_warnings 五个工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx unreal-api-mcpUNREAL_VERSIONUnreal Engine version to serve, e.g. 5.7 or 5.8 (default: auto-detect or 5.8)UNREAL_PROJECT_PATHPath to Unreal project for auto-detecting version from .uproject EngineAssociation field本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | |
| n_results | integer | 否 | |
| member_type | string | 否 |
详细介绍
unreal-api-mcp
为 AI Agent 提供准确的 Unreal Engine C++ API 文档的 MCP 服务。节省 token、上下文和时间,避免产生幻觉的函数签名、错误的 #include 路径以及使用已弃用的 API。
兼容 Claude Code、Cursor、Windsurf 以及任何兼容 MCP 的 AI 工具。无需安装 Unreal Engine。查看支持的版本。每周自动检测并构建新版本。
快速开始
将其添加到 MCP 配置(.mcp.json、mcp.json 或工具的 MCP 设置)中,并将 UNREAL_VERSION 设置为与你的项目相匹配的版本:
{
"mcpServers": {
"unreal-api": {
"command": "uvx",
"args": ["unreal-api-mcp"],
"env": {
"UNREAL_VERSION": "5.5"
}
}
}
}
将此项设置为与你项目的 UE 版本相匹配。所有可用数据库请参阅支持的版本。
首次运行时,服务会将正确的数据库下载到 ~/.unreal-api-mcp/。如果没有对应补丁版本的数据库,补丁版本(例如 "5.7.3")会回退到主次版本数据库(例如 "5.7")。
工作原理
- **版本检测。**服务会确定要提供哪个 UE 版本:
| 优先级 | 来源 | 示例 |
|---|---|---|
| 1 | UNREAL_VERSION 环境变量 | "5.5"、"5.7"、"5.7.3" |
| 2 | UNREAL_PROJECT_PATH | 读取 .uproject 的 EngineAssociation 字段(例如 5.5.1 或 5.7) |
将其中一项设置为与你的项目相匹配。若两项都未设置,服务默认使用 UE 5.7。
-
**下载数据库。**如果该版本的数据库尚未缓存在本地,服务会从 GitHub 下载(仅需一次)。对于补丁版本,必要时会回退到主次版本数据库。服务也会在启动时检查更新。
-
**提供服务。**所有工具调用都会查询对应版本的 SQLite 数据库。精确查找耗时不到 1 毫秒,搜索耗时不到 5 毫秒。
每个版本都有独立的数据库,其中包含该版本对应的准确签名、弃用警告和成员列表。
工具
| 工具 | 用途 | 示例 |
|---|---|---|
search_unreal_api | 按关键词查找 API | “角色移动”、“生成 Actor”、“K2Node” |
get_function_signature | 获取包含参数和返回类型的准确签名 | AActor::GetActorLocation |
get_include_path | 查找某个类型对应的 #include | “ACharacter” -> #include "GameFramework/Character.h" |
get_class_reference | 获取完整的类参考卡片 | “APlayerController”、“UK2Node_SpawnActorFromClass”、“UEdGraphSchema_K2” |
get_deprecation_warnings | 检查 API 是否已弃用 | “K2_AttachRootComponentTo” -> 改用 AttachToComponent() |
覆盖范围
涵盖所有引擎运行时、编辑器、开发者模块,以及内置插件(Enhanced Input、Gameplay Abilities、Common UI、Niagara、Chaos 等数百个插件)。
还包括 Blueprint 图表内部结构:158 个 UK2Node 子类、UEdGraphSchema_K2、BlueprintGraph、KismetCompiler 和 GraphEditor 模块(1,120 多条条目)。如果你正在编写自定义 K2 节点或编辑器工具,这些内容都已编入索引。
请在 db-v1 发布页面查看支持的版本和数据库完整列表。新版本会通过 CI 每周一自动检测并构建。
记录明细(UE 5.7):
| 类型 | 数量 | 来源 |
|---|---|---|
| 类(UCLASS) | 10,075 | AActor、ACharacter、UGameplayStatics 等 |
| 结构体(USTRUCT) | 9,014 | FHitResult、FVector、FTransform 等 |
| 枚举(UENUM) | 3,475 | EMovementMode、ECollisionChannel 等 |
| 函数(UFUNCTION) | 23,414 | 包含参数、返回类型和说明符的签名 |
| 属性(UPROPERTY) | 66,340 | 类型、说明符、文档注释 |
| 委托 | 2,406 | 动态多播、委托声明 |
不涵盖第三方插件或市场资源。对于这些内容,请依赖项目源代码。
基准测试
实测结果,而非承诺:在 2 个测试环境中提出 14 个研究问题,由 3 种 Agent 配置作答,每个答案都根据事先核实的真实答案进行评判(API 事实对照文档数据库,源代码事实对照 UE 5.8 引擎源码树)。完整测试框架位于 docs/benchmark/,只需一条命令即可重新运行。
| 配置 | 正确 | 部分正确 | 错误 |
|---|---|---|---|
| MCP + 定向 Read | 14/14 | 0 | 0 |
| 熟练型(Grep+Read) | 11/14 | 2 | 1 |
| 朴素型(完整 Read) | 12/14 | 1 | 1 |
差距并不在你预想之处。对于文档完善的 include 和函数签名,以及 14,000 行引擎文件中可通过 grep 搜索到的实现事实,三种配置的表现不相上下。现代模型了解文档中记载的 UE 接口,也能熟练搜索本地源码。差距出现在近期弃用项上。当被问到 UKismetSystemLibrary::IsSplitScreen 在 5.8 中是否仍有效时,两个非 MCP Agent 都答错了:一个拒绝回答,另一个断言它仍可用。实际上,它已弃用,应改用 HasMultipleLocalPlayers。两者也都错误描述了 5.5 时代的一项变更:直接访问 AActor::NetUpdateFrequency 已被弃用。MCP Agent 正确回答了全部三个弃用问题,因为数据库中记录了弃用标记和替代项提示。
为什么关注正确性,而不是原始输出?如今,Agent 工具已经很擅长搜索代码。Claude Code 从一开始就提供了 Grep 工具,因此 Agent 能找到文件中实际存在的任何内容。问题在于文件中不存在的信息:精确签名、#include 路径,尤其是最新的弃用项。这些信息也不可靠地存在于模型记忆中,答错一个就可能导致构建失败,或悄悄使用已弃用的调用。
方法
- 2 个测试环境:8 个纯 Unreal API 查询(精确签名、
#include路径、弃用项)和 6 个基于 UE 5.8 引擎源码、在CharacterMovementComponent.cpp(约 14,000 行)中查找答案的问题 - 3 种配置,使用相同模型(Sonnet)和轮次限制:MCP 工具 + Grep/Read、仅 Grep/Read、仅 Read
- API 测试在没有引擎源码的情况下运行,这符合在自己的项目中编写 UE C++ 的实际情况,因此非 MCP 配置只能依靠模型记忆作答。源码测试则为每种配置提供相同的文件以供 grep
- 所有测试开始前都已核实真实答案;答案由单独的模型会话根据真实答案进行评判
- 自行运行:
python docs/benchmark/run.py --cwd <dir> --questions <file>(结果来自 2026 年 7 月;Agent 行为会变化,因此引用前请重新运行)。将其指向你自己的 UE 项目,即可复现项目研究场景
查询延迟
在 UE 5.7 数据库(114,724 条记录)上测量,每个查询运行 50 次:
| 查询 | 中位数 | p95 |
|---|---|---|
精确 FQN 查询(get_function_signature) | <1ms | <1ms |
| FTS 搜索:特定函数名 | <1ms | <1ms |
| FTS 搜索:关键词(“spawn actor”) | 1ms | 1ms |
| Include 路径解析 | 2ms | 2ms |
| 类引用(完整成员列表) | 22ms | 23ms |
| 弃用检查 | 24ms | 25ms |
CLAUDE.md 片段
将以下内容添加到项目的 CLAUDE.md(或同等说明文件)中。**这一步很重要。**否则,AI 虽然有这些工具,却不知道何时该使用它们。
## Unreal Engine API Lookup (unreal-api MCP)
Use the `unreal-api` MCP tools to verify UE C++ API usage instead of guessing. **Do not hallucinate signatures or #include paths.**
| When | Tool | Example |
|------|------|---------|
| Unsure about a function's parameters or return type | `get_function_signature` | `get_function_signature("AActor::GetActorLocation")` |
| Need the `#include` for a type | `get_include_path` | `get_include_path("ACharacter")` |
| Want to see all members on a class | `get_class_reference` | `get_class_reference("UCharacterMovementComponent")` |
| Searching for an API by keyword | `search_unreal_api` | `search_unreal_api("spawn actor")` |
| Checking if an API is deprecated | `get_deprecation_warnings` | `get_deprecation_warnings("K2_AttachRootComponentTo")` |
| Writing custom K2 nodes or editor tools | `get_class_reference` | `get_class_reference("UK2Node_SpawnActorFromClass")`, `get_class_reference("UEdGraphSchema_K2")` |
**Rules:**
- Before writing a UE API call you haven't used in this conversation, verify the signature with `get_function_signature`
- Before adding a `#include`, verify with `get_include_path` if unsure
- Covers: all Engine Runtime/Editor modules, built-in plugins (Enhanced Input, GAS, CommonUI, Niagara, etc.), Blueprint graph internals (UK2Node subclasses, EdGraphSchema, BlueprintGraph, KismetCompiler)
- Does NOT cover: third-party plugins or marketplace assets
设置详情
从 .uproject 自动检测版本
无需设置 UNREAL_VERSION,你可以指定 Unreal 项目。服务会读取 .uproject 文件中的 EngineAssociation 字段:
{
"mcpServers": {
"unreal-api": {
"command": "uvx",
"args": ["unreal-api-mcp"],
"env": {
"UNREAL_PROJECT_PATH": "F:/Unreal Projects/MyProject"
}
}
}
}
其他安装方式
使用 pip install:
pip install unreal-api-mcp
{
"mcpServers": {
"unreal-api": {
"command": "unreal-api-mcp",
"args": [],
"env": {
"UNREAL_VERSION": "5.5"
}
}
}
}
环境变量
| 变量 | 用途 | 示例 |
|---|---|---|
UNREAL_VERSION | 服务使用的 UE 版本 | 5.5、5.7、5.7.3 |
UNREAL_PROJECT_PATH | 从 .uproject 自动检测版本 | F:/Unreal Projects/MyProject |
UNREAL_INSTALL_PATH | 覆盖 UE 安装路径(仅用于 ingest) | H:/UE_5.6 |
在本地构建数据库
如果你想使用自己的 Unreal Engine 安装来构建数据库,而不是下载:
# Build for a specific version
python -m unreal_api_mcp.ingest --unreal-version 5.6 --unreal-install "H:/UE_5.6"
python -m unreal_api_mcp.ingest --unreal-version 5.5 --unreal-install "H:/UE_5.5"
默认情况下,数据库会写入 ~/.unreal-api-mcp/unreal_docs_{version}.db。
项目结构
unreal-api-mcp/
├── src/unreal_api_mcp/
│ ├── server.py # MCP server (5 tools)
│ ├── db.py # SQLite + FTS5 database layer
│ ├── version.py # Version detection + DB download
│ ├── header_parser.py # Parse Unreal C++ headers (UCLASS, UFUNCTION, etc.)
│ ├── unreal_paths.py # Locate UE installs + discover modules
│ └── ingest.py # CLI ingestion pipeline
└── pyproject.toml
数据库存储在 ~/.unreal-api-mcp/ 中(首次运行时下载)。
故障排除
| 问题 | 解决方法 |
|---|---|
| “无法下载 UE X 数据库” | 检查网络连接。或者在本地构建:python -m unreal_api_mcp.ingest --unreal-version 5.6 --unreal-install H:/UE_5.6 |
| 服务使用的 API 版本不正确 | 明确设置 UNREAL_VERSION。检查 stderr:unreal-api-mcp: serving UE <version> |
| 服务无法启动 | 检查 python --version(需要 3.10+)。检查路径:which unreal-api-mcp 或 where unreal-api-mcp |
ModuleNotFoundError: No module named 'mcp.server.fastmcp' | 0.3.0 或更早版本安装了 mcp 2.x。重启 MCP 客户端,或运行 uvx unreal-api-mcp@latest。使用 pip 时,运行 pip install -U unreal-api-mcp。 |
| 第三方插件没有返回结果 | Marketplace/第三方插件未编入索引。仅涵盖内置 Engine 和 Plugin API。 |
另请参阅
unity-api-mcp:Unity(C#)的同类工具。涵盖 Unity 2022、2023 和 Unity 6。
联系方式
需要为你的引擎或框架定制 MCP 服务吗?我会构建 MCP 工具,减少令牌浪费,并防止 AI 辅助游戏开发中的幻觉。如果你希望为团队的技术栈构建类似工具,欢迎联系我。
许可证
可免费用于任何个人或非商业用途,包括使用、派生、修改和分享。 商业用途需要获得许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。