AccelByte虚幻SDK MCP服务器
一个MCP(模型上下文协议)服务器,提供对AccelByte的虚幻SDK文档、符号和代码片段的访问。该服务器使AI助手和开发工具能够搜索和检索有关SDK类、函数和代码示例的信息。
概述
此MCP服务器索引并提供对以下内容的访问:
- 符号:虚幻SDK和OSS SDK文档中的类、结构、函数、枚举和其他符号
- 源代码:对AccelByte虚幻SDK存储库中的源文件进行索引
- 代码段:从SDK存储库中提取的教程代码片段
服务器使用基于缓存的方法来实现快速启动。必须在运行服务器之前生成缓存文件。
先决条件
- python 3.10或更高版本
- Git (用于在缓存生成期间克隆SDK存储库)
- XML文档文件:虚幻SDK和OSS SDK的Doxygen XML文件应放置在:
- data/unreal-sdk/ -虚幻SDK XML文件 - data/oss-sdk/ -OSS SDK XML文件
安装
- 克隆或下载此存储库
- 安装依赖项:
pip install -r requirements.txt缓存生成
在运行服务器之前,您必须生成缓存文件。这是一个一次性(或周期性)的过程,对所有符号、源文件和代码段进行索引。
生成所有缓存
python generate_cache.py此脚本将:
- 解析XML文档:从虚幻SDK和OSS SDK的Doxygen XML文件中提取符号
- 索引源文件:克隆AccelByte虚幻SDK存储库(如果需要)并索引源代码文件
- 索引代码段:从教程模块中提取并索引代码片段
已生成缓存文件
以下缓存文件是在 .cache/ 目录:
unreal-sdk-symbols.json-从虚幻SDK XML解析的符号oss-sdk-symbols.json-从OSS SDK XML解析符号source-index.json-源代码文件、类和方法的索引bytewars-snippets.json-教程模块代码片段索引
缓存生成说明
- 缓存生成可能需要几分钟,具体取决于XML文件和存储库的大小
- 源存储库被克隆到
.cache/accelbyte-unreal-sdk-plugin/如果它不存在 - 如果缓存生成失败,请检查:
- XML文件存在于 data/unreal-sdk/ 和 data/oss-sdk/ - 您有网络访问权限可以克隆GitHub存储库 - 您有足够的磁盘空间
运行服务器
生成缓存文件后,启动MCP服务器:
python server.py服务器默认为stdio传输,这是Claude Code和Cursor等MCP客户端所必需的。它将:
- 启动时加载所有缓存文件
- 如果缓存文件丢失或为空,则显示警告
- 通过stdin/stdout接受MCP协议请求
苏格兰和南方能源公司运输
要改用HTTP/SSE传输运行,请执行以下操作:
python server.py --transport=sse --port=3000SSE端点:
http://localhost:3000/sse--SSE连接端点http://localhost:3000/messages/--POST消息端点
服务器启动
启动时,服务器将记录:
- 从每个SDK加载的符号数
- 源索引统计(文件、类、方法)
- 片段计数
如果缺少任何缓存,您将看到警告,指示您运行 generate_cache.py.
工具
服务器提供用于搜索和检索SDK信息、获取实现指南和安装虚幻SDK的工具。返回或建议AccelByte代码的工具(search_symbols、search_snippets、search_example.components、describe_symbol、describe_example.compounds、get_AccelByte_how_to)包括一个顶级 sdkRequirement 在他们的回复中声明必须安装AccelByte虚幻SDK(以及OSS/NetworkUtilities,如果使用的话)才能使代码工作,并且 install_unreal_sdk 如果需要,可以使用。
1. search_symbols
在SDK文档中搜索符号(类、结构、函数等)。
参数:
query(必填,字符串):与符号名称、类型或描述匹配的搜索查询source(可选,枚举):按SDK源筛选-"oss-sdk"或"unreal-sdk"type(可选,枚举):按符号类型筛选-"class","struct","function","enum","namespace","variable"limit(可选,数字):返回的最大结果数(默认值:20)
退货:
- 符号结果数组:
- id:符号标识符(例如。, "FOnlineIdentityAccelByte@cpp") - type:符号类型(例如。, "class", "struct") - description:从XML文档中提取的简要描述
例子:
{
"query": "login",
"source": "oss-sdk",
"type": "class",
"limit": 10
}评分:
- OSS SDK符号优先(接收+100基本分数)
- 精确名称匹配得分高于部分匹配得分
- 结果按相关性得分排序
2. search_snippets
按查询、区域或标签搜索教程模块中的代码片段。
参数:
query(可选,字符串):与代码段内容、名称或函数匹配的搜索查询area(可选,字符串):按区域过滤(例如。,"auth","party","chat","session","store","cloudsave","statistics","friends","presence","matchmaking")tags(可选,字符串数组):按标签筛选(所有指定的标签必须匹配)。示例:"authentication","login","multiplayer","messaging","storage","monetization"limit(可选,数字):返回的最大结果数(默认值:20)
退货:
- 代码段结果数组,包含:
- id:代码段标识符 - uri:用于获取代码段的资源URI - name:代码段名称 - area:功能区域(例如。, "access", "monetization") - function:函数名称 - file:源文件名 - description:人类可读的描述
例子:
{
"query": "device id login",
"area": "access",
"tags": ["authentication"],
"limit": 5
}3. describe_symbols
获取有关特定符号的详细信息,包括它们的字段、方法和相关代码段。
参数:
symbolIds(必填,字符串数组):要描述的符号ID列表(例如。,["FOnlineIdentityAccelByte@cpp", "FOnlineSubsystemAccelByte@cpp"])includeSnippets(可选,布尔值):是否包含相关代码段链接(默认值:true)snippetLimit(可选,数字):每个符号的相关代码段的最大数量(默认值:5)
退货:
- 符号描述数组,包括:
- id:符号标识符 - name:完整符号名称 - type:符号类型 - source:SDK源代码("oss-sdk" 或 "unreal-sdk") - uri:资源URI - fields:包含类型和描述的字段定义的对象 - methods:包含带参数、返回类型和描述的方法定义的对象 - snippets:使用此符号的相关代码段数组 - snippetCount:找到的片段数
例子:
{
"symbolIds": ["FOnlineIdentityAccelByte@cpp"],
"includeSnippets": true,
"snippetLimit": 5
}4. get_accelbyte_how_to
获取常见AccelByte任务的实施最佳实践和操作指南。提供分步说明、代码模板以及相关代码段和示例组件的链接。
参数:
topic(必填,字符串):您需要指导的主题或问题(例如。,"get api client","add api call","authentication","matchmaking").支持部分匹配和关键字。include_code_examples(可选,布尔值):是否包含代码段索引中的相关代码段(默认值:true)include_components(可选,布尔值):是否包含相关示例组件(默认值:true)
可用主题:
- 获取apiclient -如何获取AccelByte API客户端实例
- 添加api调用 -如何向虚幻SDK添加新的API调用
- 认证 -如何使用AccelByte对用户进行身份验证
- 牵线搭桥 -如何使用AccelByte实现匹配
- 成就 -如何查询和显示玩家成就
退货:
guide:结构化指南,包括:
- id, title, source_url:基本元数据 - overview:主题描述 - methods:代码模板、先决条件和步骤的不同方法 - steps:总体实施步骤(针对具有顺序流程的主题) - best_practices:推荐做法 - common_pitfalls:要避免的事情 - related_content:相关片段和示例组件(如果启用)
sdkRequirement:SDK安装说明
例子:
{
"topic": "get api client",
"include_code_examples": true,
"include_components": true
}看 最佳实践.md 详细文档。
5. install_unreal_sdk
从GitHub下载并将AccelByte虚幻组件安装到虚幻项目中;可选更新 .uproject、生成文件和DefaultEngine.ini。支持 AccelByte游戏SDK, AccelByte OSS (在线子系统),以及 AccelByteNetwork实用程序.所有插件都安装在 Plugins/Accelbyte/ 完全集成(插件条目、Build.cs、Target.cs和默认配置(如适用))。
参数:
projectPath(必填,字符串):虚幻项目根目录的路径(包含.uproject文件)。使用绝对路径或相对于的路径workspaceRoot.components(可选,字符串数组):要安装的组件:"sdk"(AccelByte游戏SDK),"oss"(在线子系统),"networkUtilities"(AccelByteNetworkUtilities)。默认["sdk"].安装顺序:networkUtilities、sdk、oss。使用["sdk", "oss", "networkUtilities"]为了实现全面整合。workspaceRoot(可选,字符串):用于解析相对值的工作区根目录projectPath。默认为当前工作目录。source(可选,枚举):如何获取每个组件-"release"(默认)=从GitHub下载最新版本的ZIP;"git"=通过Git克隆存储库。version(可选,字符串):用于source: "release":标签名称(例如。"v1.2.0").忽略最新版本。对于source: "git":要克隆的分支或标记。适用于所有组件。setupProjectFiles(可选,布尔值):如果true,向添加插件.uproject,Build.cs,以及Target.cs,并添加默认的AccelByte配置(使用OSS时添加\[OnlineSubsystem\])DefaultEngine.ini.默认值false.regenerateProjectFiles(可选,布尔值):如果true,运行UnrealVersionSelector(Windows)或GenerateProjectFiles(Mac)以重新生成IDE项目文件(.sln/.vcxproj)设置后。默认false.
退货:
success(boolean):操作是否成功。installedPaths(字符串数组,如果成功):已安装插件文件夹的完整路径(例如。Project/Plugins/Accelbyte/AccelByteUe4Sdk,Project/Plugins/Accelbyte/OnlineSubsystemAccelByte).message(string):人类可读的结果或下一步。setupDetails(数组,可选):当setupProjectFiles是否正确,所做更改列表;当regenerateProjectFiles成功,包括再生消息。regenerateResult(对象,可选):当regenerateProjectFiles是真的,{ success, message }(以及stderr失败)。
示例(仅SDK,默认):
{
"projectPath": "C:/MyGame",
"source": "release",
"setupProjectFiles": true
}示例(完全集成:SDK+OSS+网络实用程序):
{
"projectPath": "C:/MyGame",
"components": ["sdk", "oss", "networkUtilities"],
"source": "release",
"setupProjectFiles": true,
"regenerateProjectFiles": true
}安装后,配置 DefaultEngine.ini 凭借您的AGS证书。看 官方AccelByte虚幻SDK安装文档 用于手动步骤和配置。
资源
服务器公开了几种可以列出和读取的资源:
符号资源
URI格式:
unreal-sdk/cpp://{symbolId}-虚幻SDK符号oss-sdk/cpp://{symbolId}-OSS SDK符号
例子: oss-sdk/cpp://FOnlineIdentityAccelByte@cpp
内容: 符号的完整JSON表示,包括所有字段、方法和元数据。
源文件资源
URI格式:
source://{filePath}-直接文件路径(例如。,source://Source/AccelByteWars/TutorialModules/Access/AuthEssentials/AuthEssentialsSubsystem.cpp)source://class/{ClassName}-类实现查找
内容: C++格式的文件的完整源代码。
片段资源
URI格式:
snippet://{snippetId}-代码片段(例如。,snippet://oss/access/login)
内容: JSON对象包含:
- 片段元数据(id、名称、区域、功能、文件)
- 文件路径和行号
- 标签和用途
- 相关符号
- 完整代码内容
用法示例
示例1:查找登录类
{
"tool": "search_symbols",
"arguments": {
"query": "login",
"source": "oss-sdk",
"type": "class"
}
}示例2:获取详细的符号信息
{
"tool": "describe_symbols",
"arguments": {
"symbolIds": ["FOnlineIdentityAccelByte@cpp"],
"includeSnippets": true
}
}示例3:查找身份验证代码段
{
"tool": "search_snippets",
"arguments": {
"area": "access",
"tags": ["authentication", "login"],
"limit": 10
}
}示例4:读取符号资源
Resource URI: oss-sdk/cpp://FOnlineIdentityAccelByte@cpp以JSON格式返回完整的符号定义。
示例5:读取代码段
Resource URI: snippet://oss/access/login返回包含完整代码内容和元数据的代码段。
示例6:Get-AccelByte How-To指南API客户端
{
"tool": "get_accelbyte_how_to",
"arguments": {
"topic": "get api client",
"include_code_examples": true,
"include_components": true
}
}返回包含多个方法、代码模板和相关代码段/组件的全面指南。
故障排除
缓存文件丢失
如果您看到有关丢失缓存文件的警告:
- 确保XML文件位于
data/unreal-sdk/和data/oss-sdk/ - 跑
python generate_cache.py重新生成所有缓存
空搜索结果
- 验证缓存文件是否已成功生成
- 检查XML文件是否包含预期的文档
- 尝试更广泛的搜索查询(更少的过滤器)
服务器无法启动
- 检查Python版本:
python --version(应为3.10+) - 验证是否安装了依赖项:
pip install -r requirements.txt - 检查缓存文件中的错误(可能需要重新生成)
源索引为空
- 确保可以克隆GitHub存储库
- 检查网络连接
- 验证中的存储库路径
source_indexer.py是正确的
项目结构
.
├── server.py # Main MCP server implementation
├── parser.py # XML parser for symbol extraction
├── source_indexer.py # Source code and snippet indexing
├── generate_cache.py # Cache generation script
├── sdk_installer.py # Unreal SDK download and installation
├── requirements.txt # Python dependencies
├── README.md # This file
├── BEST_PRACTICES.md # Best practices tool documentation
├── TRANSPORT.md # Transport modes documentation
├── data/ # XML documentation and best practices
│ ├── unreal-sdk/ # Unreal SDK XML files
│ ├── oss-sdk/ # OSS SDK XML files
│ └── best-practices.json # Best practices content
└── .cache/ # Generated cache files (gitignored)
├── unreal-sdk-symbols.json
├── oss-sdk-symbols.json
├── source-index.json
└── bytewars-snippets.json许可证
国际学生委员会
