关于 Unity API Documentation
unity-api-mcp 是一个 MCP 服务,为 AI Agent 提供准确的 Unity API 文档,覆盖 Unity 6、2023 和 2022 LTS,用于减少错误的方法签名、命名空间和已弃用 API 的使用。无需安装 Unity 即可运行,数据库按版本本地缓存。
主要功能
- 01按 Unity 版本提供 API 签名与所有重载
- 02解析 using 命名空间指令
- 03查询类参考卡片与成员列表
- 04检查已弃用 API 并给出替代建议
- 05基于 SQLite 与 FTS5 的快速本地查询
适用场景
- 01编写 Unity 脚本时确认方法参数与返回类型
- 02查找 SceneManager 等类型所需的 using 指令
- 03检查项目中是否使用了已弃用的 WWW 等 API
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露搜索 API、获取签名、查询命名空间、类参考和弃用警告等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx unity-api-mcpUNITY_VERSIONUnity version to serve: 2022, 2023, or 6 (default: auto-detect or 6)UNITY_PROJECT_PATHPath to Unity project for auto-detecting version from ProjectSettings/ProjectVersion.txt本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| query | string | 是 | |
| n_results | integer | 否 | |
| member_type | any | 否 |
详细介绍
unity-api-mcp
为 AI Agent 提供准确 Unity API 文档的 MCP 服务,可避免虚构签名、错误命名空间和使用已弃用 API。
支持 Unity 6(每个次要版本系列对应一个数据库)、Unity 2023 和 Unity 2022 LTS。可与 Claude Code、Cursor、Windsurf 或任何兼容 MCP 的 AI 工具搭配使用。无需安装 Unity。请参阅支持的版本。系统每周自动检测并构建新的 Unity 版本。
快速开始
将以下内容添加到 MCP 配置(.mcp.json、mcp.json 或工具的 MCP 设置)中,并将 UNITY_VERSION 设置为与项目匹配的版本:
{
"mcpServers": {
"unity-api": {
"command": "uvx",
"args": ["unity-api-mcp"],
"env": {
"UNITY_VERSION": "6000.3"
}
}
}
}
有效值:Unity 6 系列版本,例如 "6000.3",或 "6"、"2023"、"2022"。
首次运行时,服务会将相应的数据库(约 20-30 MB)下载到 ~/.unity-api-mcp/。
工作原理
- 版本检测。 服务会确定要提供哪个 Unity 版本:
| 优先级 | 来源 | 示例 |
|---|---|---|
| 1 | UNITY_VERSION 环境变量 | "2022"、"6"、"6000.3" 或 "6000.3.8f1" |
| 2 | UNITY_PROJECT_PATH | 读取 ProjectSettings/ProjectVersion.txt,将 2022.3.62f1 映射为 "2022",将 6000.3.8f1 映射为 "6000.3" |
| 3 | 默认值 | "6" |
-
下载数据库。 如果本地尚未缓存该版本的数据库,服务会从 GitHub 下载。Unity 6 的次要版本系列(
6000.0、6000.3、6000.5……)各自有独立数据库;如果某个系列的数据库尚未发布,则回退到通用的6数据库。服务启动时会检查缓存数据库是否为最新版本,因此每周重新构建的数据库会自动更新到现有安装中。 -
提供服务。 所有工具调用都会查询对应版本的 SQLite 数据库。每次查询耗时均少于 15 毫秒。
每个版本都有独立的数据库,其中包含该版本对应的准确签名、弃用警告和成员列表。
工具
| 工具 | 用途 | 示例 |
|---|---|---|
search_unity_api | 按关键字查找 API | "Tilemap SetTile"、"async load scene" |
get_method_signature | 获取包含所有重载的准确签名 | UnityEngine.Physics.Raycast |
get_namespace | 解析 using 指令 | "SceneManager" -> using UnityEngine.SceneManagement; |
get_class_reference | 获取完整的类参考卡片 | "InputAction" -> 所有方法/字段/属性 |
get_deprecation_warnings | 检查 API 是否已弃用 | "WWW" -> 改用 UnityWebRequest |
覆盖范围
涵盖所有 UnityEngine 和 UnityEditor 模块,以及从 C# 源代码解析的包:Input System、Addressables、uGUI(Unity 6 中包括 TextMeshPro)、AI Navigation 和 Netcode。每个 Unity 6 数据库约有 42,500 条记录,以及约 500 条弃用警告。
完整版本列表:db-v1 发布页面。CI 会在每次构建时重新生成该表。每周一会自动检测并构建新的 Unity 补丁版本。
不涵盖第三方资源(DOTween、VContainer、Newtonsoft.Json)。对于这些资源,请依赖项目源代码。
基准测试
这些是实测结果,而非承诺:在 3 个测试环境中提出 25 个研究问题,由 3 种 Agent 配置作答,并将每个答案与事先在源代码中核实的真实答案进行对照评判。完整的测试框架位于 docs/benchmark/,可通过一条命令重新运行。
| 配置 | 正确 | 部分正确 | 错误 | 幻觉 API |
|---|---|---|---|---|
| MCP + 定向 Read | 24/25 | 1 | 0 | 0 |
| 熟练配置(Grep+Read) | 20/25 | 3 | 2 | 1 |
| 基础配置(完整 Read) | 19/25 | 3 | 3 | 1 |
这次复现出的幻觉很有启发性。当被要求列出 SceneManager.LoadSceneAsync 的重载时,两个未使用 MCP 的 Agent 都虚构了不存在的单参数 LoadSceneAsync(string) 和 LoadSceneAsync(int) 重载。基于这些重载编写的代码无法编译。MCP Agent 则给出了准确的 4 个真实重载。
为什么关注正确性,而不是节省 token?如今 Agent 工具已经很擅长搜索代码。Claude Code 从一开始就提供了 Grep 工具,而当前的模型会先搜索,再读取较窄的行范围,因此我们测试中所有配置的 token 用量大致相当。但确切的重载、命名空间和弃用信息根本不在项目文件中。没有 MCP 的 Agent 只能根据用法示例推断;一旦推断错误,你就得为构建失败买单。
方法说明
- 3 个测试环境:一个真实的 Unity 6 游戏项目(11 个问题)、纯 Unity API 查询(8 个)和 Unity Input System 包源代码(文件行数为 2,700 至 4,600 行,共 6 个问题)
- 3 种配置,使用相同的模型和轮次限制:MCP 工具 + Grep/Read、仅 Grep/Read、仅 Read
- 所有测试运行前,先通过阅读源代码核实真实答案;再由独立的模型会话根据真实答案评判作答;token 用量取自 API 用量字段
- 亲自运行:
python docs/benchmark/run.py --project <unity-project-path>(结果来自 2026 年 7 月;Agent 行为会变化,因此引用前请重新运行)
CLAUDE.md 片段
将以下内容添加到项目的 CLAUDE.md(或同等的指令文件)中。**这一步很重要。**没有这段内容,AI 虽然拥有这些工具,却不知道何时该使用它们。
## Unity API Lookup (unity-api MCP)
Use the `unity-api` MCP tools to verify Unity API usage instead of guessing. **Do not hallucinate signatures.**
| When | Tool | Example |
|------|------|---------|
| Unsure about a method's parameters or return type | `get_method_signature` | `get_method_signature("UnityEngine.Tilemaps.Tilemap.SetTile")` |
| Need the `using` directive for a type | `get_namespace` | `get_namespace("SceneManager")` |
| Want to see all members on a class | `get_class_reference` | `get_class_reference("InputAction")` |
| Searching for an API by keyword | `search_unity_api` | `search_unity_api("async load scene")` |
| Checking if an API is deprecated | `get_deprecation_warnings` | `get_deprecation_warnings("FindObjectOfType")` |
**Rules:**
- Before writing a Unity API call you haven't used in this conversation, verify the signature with `get_method_signature`
- Before adding a `using` directive, verify with `get_namespace` if unsure
- Covers: all UnityEngine/UnityEditor modules, Input System, Addressables, uGUI/TextMeshPro, AI Navigation, Netcode
- Does NOT cover: DOTween, VContainer, Newtonsoft.Json (third-party)
设置详情
根据项目路径自动检测版本
无需设置 UNITY_VERSION,只需指定 Unity 项目路径即可。服务会自动读取 ProjectSettings/ProjectVersion.txt:
{
"mcpServers": {
"unity-api": {
"command": "uvx",
"args": ["unity-api-mcp"],
"env": {
"UNITY_PROJECT_PATH": "/path/to/your/unity-project"
}
}
}
}
其他安装方式
使用 pip install:
pip install unity-api-mcp
{
"mcpServers": {
"unity-api": {
"command": "unity-api-mcp",
"args": [],
"env": {
"UNITY_VERSION": "6000.3"
}
}
}
}
环境变量
| 变量 | 用途 | 示例 |
|---|---|---|
UNITY_VERSION | 要提供服务的 Unity 版本 | 6000.3、6000.3.8f1、6、2023、2022 |
UNITY_PROJECT_PATH | 从项目自动检测版本 | F:/Unity Projects/my-project |
UNITY_INSTALL_PATH | 覆盖 Unity 安装路径(仅用于 ingest) | D:/Unity/6000.3.8f1 |
在本地构建数据库
如果你想从自己的 Unity 安装构建数据库,而不是下载数据库:
# Install with ingest dependencies
pip install unity-api-mcp[ingest]
# Windows
python -m unity_api_mcp.ingest --unity-version 6000.3 --unity-install "D:/Unity/6000.3.8f1" --project "F:/Unity Projects/MyProject"
# macOS
python -m unity_api_mcp.ingest --unity-version 6000.3 --unity-install "/Applications/Unity/Hub/Editor/6000.3.20f1" --project "/path/to/UnityProject"
# Legacy versions
python -m unity_api_mcp.ingest --unity-version 2022 --unity-install "D:/Unity/2022.3.62f1"
默认情况下,数据库会写入 ~/.unity-api-mcp/unity_docs_{version}.db。
AI 辅助设置
如果由 AI Agent 为你进行设置:
使用
uvx将unity-api-mcp添加到我的 MCP 配置中,并将UNITY_VERSION设置为与我的项目匹配的版本;追加 README 中的 CLAUDE.md 代码片段,并通过get_namespace("SceneManager")验证。
项目结构
unity-api-mcp/
├── src/unity_api_mcp/
│ ├── server.py # MCP server (5 tools)
│ ├── db.py # SQLite + FTS5 database layer
│ ├── version.py # Version detection + DB download
│ ├── xml_parser.py # Parse Unity XML IntelliSense files
│ ├── cs_doc_parser.py # Parse C# doc comments from package source
│ ├── unity_paths.py # Locate Unity install + package dirs
│ └── ingest.py # CLI ingestion pipeline
└── pyproject.toml
数据库存储在 ~/.unity-api-mcp/ 中(首次运行时下载)。
故障排除
| 问题 | 解决方法 |
|---|---|
| “Could not download Unity X database” | 检查网络连接。或者在本地构建:python -m unity_api_mcp.ingest --unity-version 2022 |
| 提供服务的 API 版本不正确 | 明确设置 UNITY_VERSION。检查标准错误输出:unity-api-mcp: serving Unity <version> API docs |
| 服务无法启动 | 检查 python --version(需要 3.10+)。检查路径:which unity-api-mcp 或 where unity-api-mcp |
ModuleNotFoundError: No module named 'mcp.server.fastmcp' | 2.1.0 或更早版本安装了 mcp 2.x。重启 MCP 客户端,或运行 uvx unity-api-mcp@latest。使用 pip 时,运行 pip install -U unity-api-mcp。 |
| 第三方包没有返回结果 | DOTween、VContainer、Newtonsoft.Json 未建立索引(它们是第三方包,并非 Unity 包) |
另请参阅
unreal-api-mcp:Unreal Engine(C++)的同类工具,按 UE 版本每周自动构建数据库。
联系方式
需要为你的引擎或框架定制 MCP 服务吗?我会构建 MCP 工具,减少 Token 浪费,并避免 AI 辅助游戏开发中的幻觉。如果你想为团队的技术栈构建类似工具,欢迎联系我。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。