loading…
Search for a command to run...
loading…
MCP Server for [Arknights](https://www.arknights.global/), querying the [PRTS Wiki](https://prts.wiki) API and serving auto-synced operator archives and voice l
An MCP Server for Arknights fan creation (同人創作) AI agents. Powered by the PRTS Wiki MediaWiki API and auto-synced operator game data, it gives any MCP-compatible client — Claude Desktop, Claude Code, Chatbox, and more — live access to lore, operator archives, and voice lines from the world of Terra.
This repository contains two independent implementations for different deployment scenarios:
| Directory | Language | Transport | Use case |
|---|---|---|---|
| python/ | Python 3.10+ | stdio | Local Claude Desktop / Claude Code, Docker |
| ts/ | TypeScript / Node.js | Streamable HTTP | Self-hosted server, remote HTTP access |
| Area | Python | TypeScript | 1.0 policy |
|---|---|---|---|
| Current line | 1.6.0 |
1.6.0 |
Stable releases are cut from the same commit when possible |
| MCP tools | Same 29 public tool names and required parameters | Same 29 public tool names and required parameters | Tool names and required parameters stay stable through 1.x |
| GameData | GAMEDATA_PATH or auto-synced zh_CN-excel.zip |
GAMEDATA_PATH or auto-synced zh_CN-excel.zip |
Custom paths disable auto-sync |
| Level data | Auto-synced zh_CN-levels.zip beside GameData |
Auto-synced zh_CN-levels.zip beside GameData |
Custom GameData roots may provide their own zh_CN/gamedata/levels |
| Story data | STORYJSON_PATH or auto-synced zh_CN.zip |
STORYJSON_PATH or auto-synced zh_CN.zip |
Custom zip paths disable auto-sync |
| Bundled fallback data | Docker image only | Docker image and published npm package | PyPI remains data-light |
See docs/migration-0.x-to-1.0.md for the 0.x to 1.0 migration notes.
Both implementations expose the same tool set:
| Tool | Description |
|---|---|
search_prts(query, limit) |
Search PRTS Wiki by keyword, returns matching article titles |
read_prts_page(page_title) |
Fetch the plain-text content of a PRTS Wiki article |
get_operator_archives(operator_name) |
Retrieve operator archive records (Chinese name) |
get_operator_voicelines(operator_name) |
Retrieve operator voice lines (Chinese name) |
get_operator_basic_info(operator_name) |
Retrieve basic operator profile: class, rarity, faction, recruit tags, talents (Chinese name) |
list_story_events(category?) |
List story events; optional filter: main (main story) or activities |
list_stories(event_id, include_summaries?) |
List chapters of an event in official order, with optional summaries |
get_event_summary(event_id) |
Narrative overview of all chapters in an event with summaries |
get_story_summary(story_key) |
Single-chapter summary (LLM long summary or official one-liner) |
read_story(story_key, include_narration) |
Read full dialogue for a single chapter |
read_activity(event_id, include_narration, page, page_size) |
Read a complete activity's transcript, with pagination |
list_search_scopes |
List available search domains (operators, stories, enemies, stages, items) with descriptions |
search_data(pattern, scope, max_results) |
Full-text regex search across operator names, descriptions, archives, and voice lines |
search_stories(pattern, character?, line_type?, context_lines?, max_results?, event_id?) |
Full-text regex search across story dialogue, narration, and choice lines with filtering |
list_prts_sections(page_title) |
Section table of contents for a wiki page |
get_prts_categories(page_title) |
Category tags for a wiki page |
get_prts_links(page_title, direction, limit) |
Outbound links or inbound backlinks with pagination |
get_prts_template(page_title) |
Extract structured template data (key-value pairs) from a wiki page |
list_enemies() |
List all enemies in the handbook with threat level and description |
get_enemy_info(name, stage_id?) |
Retrieve full enemy handbook entry by name, or stage-specific stats when stage_id is provided |
search_enemies(pattern, max_results?) |
Full-text regex search across enemy names, descriptions, and abilities |
get_stage_enemies(stage_id) |
List enemies actually spawned in a stage, with stage-specific levels and combat stats |
get_enemy_appearances(name, limit?, offset?) |
Reverse lookup stages where an enemy actually spawns |
list_stages(chapter?, type?, limit?, offset?) |
List stages with optional zone and stage-type filters |
get_stage_info(stage_id) |
Retrieve detailed stage information by stage ID |
search_stages(pattern, max_results?) |
Full-text regex search across stage names, codes, descriptions, and types |
list_items(category?, limit?, offset?) |
List items/materials from item_table.json with optional category filtering |
get_item_info(name) |
Retrieve item/material details, usage, obtain methods, drops, production, and shop links |
search_items(pattern, max_results?) |
Full-text regex search across item names, descriptions, usage, obtain methods, and types |
https://prts.wiki/api.php) — lore articles, faction info, world-building entrieszh_CN-excel.zip + zh_CN-levels.zip)zh_CN.zip)Game data lives in the gamedata volume. Level combat data lives in the gamedata-levels volume. Story data lives in the storyjson volume. All three are auto-synced in the background after the server starts listening.
Published Docker images and the npm package include bundled fallback game/level/story data prepared by CI. The PyPI package stays lightweight and does not embed these data files; it relies on startup auto-sync or user-provided data paths.
明日方舟同人创作辅助 MCP Server。通过 PRTS Wiki API 和自动同步的干员数据,为 MCP 客户端(Claude Desktop、Claude Code、Chatbox 等)提供泰拉世界观检索与干员资料查询能力。
本仓库包含两个独立实现,适用于不同的部署场景:
| 目录 | 语言 | 传输方式 | 适用场景 |
|---|---|---|---|
| python/ | Python 3.10+ | stdio | Claude Desktop / Claude Code 本地接入、Docker |
| ts/ | TypeScript / Node.js | Streamable HTTP | 个人服务器部署,供他人通过 HTTP 调用 |
| 范围 | Python | TypeScript | 1.0 策略 |
|---|---|---|---|
| 当前版本线 | 1.6.0 |
1.6.0 |
稳定发布尽量从同一 commit 发布 |
| MCP 工具 | 相同的 29 个工具名和必填参数 | 相同的 29 个工具名和必填参数 | 1.x 期间保持工具名和必填参数稳定 |
| 干员数据 | GAMEDATA_PATH 或自动同步 zh_CN-excel.zip |
GAMEDATA_PATH 或自动同步 zh_CN-excel.zip |
自定义路径会禁用自动同步 |
| 关卡战斗数据 | 自动同步与 GameData 并列的 zh_CN-levels.zip |
自动同步与 GameData 并列的 zh_CN-levels.zip |
自定义 GameData 根目录可直接提供 zh_CN/gamedata/levels |
| 剧情数据 | STORYJSON_PATH 或自动同步 zh_CN.zip |
STORYJSON_PATH 或自动同步 zh_CN.zip |
自定义 zip 会禁用自动同步 |
| bundled 兜底数据 | Docker 镜像 | Docker 镜像和正式 npm 包 | PyPI 继续保持轻量 |
0.x 到 1.0 的迁移说明见 docs/migration-0.x-to-1.0.md。
两个实现提供相同的工具集:
| 工具 | 说明 |
|---|---|
search_prts(query, limit) |
关键词搜索 PRTS 维基词条,返回匹配标题列表 |
read_prts_page(page_title) |
读取指定词条的纯文本内容 |
get_operator_archives(operator_name) |
获取干员档案资料(中文名) |
get_operator_voicelines(operator_name) |
获取干员语音记录(中文名) |
get_operator_basic_info(operator_name) |
获取干员基本信息:职业、稀有度、所属、招募标签、天赋(中文名) |
list_story_events(category?) |
列出剧情活动,可选过滤:main(主线)或 activities(活动) |
list_stories(event_id, include_summaries?) |
列出指定活动的章节(按官方顺序),可选附带梗概 |
get_event_summary(event_id) |
获取活动的章节梗概概览,含 LLM 长摘要 |
get_story_summary(story_key) |
获取单章梗概(LLM 长摘要或官方一句话简介) |
read_story(story_key, include_narration) |
读取单章完整台词 |
read_activity(event_id, include_narration, page, page_size) |
读取整个活动的完整剧情,支持分页 |
list_search_scopes |
列出可搜索的数据域(干员、剧情、敌人、关卡、物品)及其内容类型 |
search_data(pattern, scope, max_results) |
在干员名称、描述、档案、语音中执行全文正则搜索 |
search_stories(pattern, character?, line_type?, context_lines?, max_results?, event_id?) |
在剧情台词中执行全文正则搜索,支持按角色和台词类型过滤 |
list_prts_sections(page_title) |
获取词条的章节目录 |
get_prts_categories(page_title) |
获取词条的分类标签 |
get_prts_links(page_title, direction, limit) |
获取词条的出链或入链,支持分页 |
get_prts_template(page_title) |
提取词条中的结构化模板键值对数据 |
list_enemies() |
列出敌方图鉴中所有敌人及其威胁等级和描述 |
get_enemy_info(name, stage_id?) |
获取指定敌人的详细图鉴资料;传入 stage_id 时返回关卡级数值 |
search_enemies(pattern, max_results?) |
在敌人名称、描述和能力中执行全文正则搜索 |
get_stage_enemies(stage_id) |
获取指定关卡实际出场敌人及关卡级等级/战斗属性 |
get_enemy_appearances(name, limit?, offset?) |
反查指定敌人实际出现在哪些关卡 |
list_stages(chapter?, type?, limit?, offset?) |
列出关卡,支持按章节/区域和关卡类型过滤 |
get_stage_info(stage_id) |
根据关卡 ID 获取关卡详细信息 |
search_stages(pattern, max_results?) |
在关卡名称、编号、描述和类型中执行全文正则搜索 |
list_items(category?, limit?, offset?) |
列出物品/材料,支持按类别过滤和分页 |
get_item_info(name) |
获取物品/材料详情、用途、获取方式、掉落、基建产出和商店关联 |
search_items(pattern, max_results?) |
在物品名称、描述、用途、获取方式和类型中执行全文正则搜索 |
https://prts.wiki/api.php) — 世界观词条、阵营设定zh_CN-excel.zip + zh_CN-levels.zip)zh_CN.zip)干员/表格数据存放在 gamedata volume,关卡战斗数据存放在 gamedata-levels volume,剧情数据存放在 storyjson volume,均在服务器开始监听后于后台自动同步。
正式发布的 Docker 镜像和 npm 包会由 CI 预置 bundled 兜底数据;PyPI 包保持轻量,不内置这些数据文件,依赖启动时 auto-sync 或用户自行提供数据路径。
MIT
Run in your terminal:
claude mcp add 3akhp-prts-mcp -- npx pro tip
Just installed 3aKHP/prts-mcp? Say to Claude: "remember why I installed 3aKHP/prts-mcpand what I want to try" — it'll save into your Vault.
how this works →Security
Low riskAutomated heuristic from public metadata — not a security guarantee.