内容
实现POE2 Bundles2资源读取MCP服务器, 帮你快速分析POE2游戏资源。
实现了完整的POE2游戏资源读取MCP服务器,包含:
1. 基于MCP SDK的服务器框架,支持stdio传输与工具注册
2. Oodle解压P/Invoke封装,支持解析POE2的bundle文件
3. Bundles2索引解析与文件读取核心逻辑
4. 12个MCP工具,覆盖会话管理、目录浏览、文件读取、文件分析全流程
5. 单例会话缓存,避免重复解析index文件
## 工程配置(oo2core.dll可以在Poe2PriceGUI里获取)
```
<ItemGroup>
<!-- Oodle 解压 DLL: POE2 bundle 使用 Oodle 压缩,运行时需要 oo2core.dll -->
<None Include="..\..\libs\bundle\oo2core.dll">
<Link>oo2core.dll</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
```
## 默认路径
```
BundleSession.cs 里面可以设置默认路径,不然需要告诉mcp游戏路径。
```
## 配置方式
```
{
"mcpServers": {
"poe2-bundle": {
"command": "\"e:\\mcp_bundle_server\\bin\\Release\\Poe2BundleMcpServer.exe\"",
"args": [],
"env": {
"START_MCP_TIMEOUT_MS": "60000",
"RUN_MCP_TIMEOUT_MS": "120000"
}
}
}
}
```
## 能力描述
### 会话管理
- `set_game_dir` - 设置 POE2 游戏目录并打开 Bundles2/_.index.bin。空路径时使用默认 WeGame 目录。
- `get_status` - 获取当前会话状态(是否已打开、游戏目录、bundle 数、文件数)。
### 目录浏览
- `list_bundles` - 列出 index 中所有 bundle(按前缀过滤,分页)。返回每个 bundle 的名称、文件数。
- `list_paths` - 列出 index 中的路径(按前缀+扩展名过滤,分页)。返回每个路径的 path/bundleName/size。
- `list_directory` - 列出指定虚拟目录下的直接子项(子目录+文件),类似 ls。空字符串表示根目录。
- `search_paths` - 搜索路径(包含指定子串,大小写不敏感)。
### 文件读取
- `get_file_info` - 获取单个文件的详细信息(path/bundleName/offset/size/hash)。
- `read_file` - 读取文件内容(自动检测编码),返回文本预览与 base64 片段。适合快速查看文件结构。
- `read_file_text` - 读取文件全部文本(自动检测 UTF-16/UTF-8)。仅用于文本格式文件。
- `read_file_base64` - 读取文件原始字节(base64 编码)。用于二进制文件(.epk/.pet/.trl 等)。
### 文件分析
- `analyze_ao` - 分析 .ao/.aoc 文件结构,识别被清空的子块与修改方法分类。