{"id":48679197,"url":"https://github.com/3akhp/prts-mcp","last_synced_at":"2026-05-28T07:02:34.266Z","repository":{"id":350025939,"uuid":"1204990174","full_name":"3aKHP/prts-mcp","owner":"3aKHP","description":"MCP Server for Arknights PRTS Wiki and local game data","archived":false,"fork":false,"pushed_at":"2026-05-25T03:15:01.000Z","size":3981,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-25T05:29:32.339Z","etag":null,"topics":["ai-agent","anthropic","arknights","claude","fanfiction","game-data","mcp","mcp-server","model-context-protocol","prts","prts-wiki"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/3aKHP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-08T14:25:53.000Z","updated_at":"2026-05-25T03:14:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/3aKHP/prts-mcp","commit_stats":null,"previous_names":["3akhp/prts-mcp"],"tags_count":39,"template":false,"template_full_name":null,"purl":"pkg:github/3aKHP/prts-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3aKHP%2Fprts-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3aKHP%2Fprts-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3aKHP%2Fprts-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3aKHP%2Fprts-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/3aKHP","download_url":"https://codeload.github.com/3aKHP/prts-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/3aKHP%2Fprts-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33597808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agent","anthropic","arknights","claude","fanfiction","game-data","mcp","mcp-server","model-context-protocol","prts","prts-wiki"],"created_at":"2026-04-10T22:04:23.131Z","updated_at":"2026-05-28T07:02:34.259Z","avatar_url":"https://github.com/3aKHP.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PRTS MCP Server\n\n[![PyPI](https://img.shields.io/pypi/v/prts-mcp)](https://pypi.org/project/prts-mcp/)\n[![npm](https://img.shields.io/npm/v/prts-mcp-ts)](https://www.npmjs.com/package/prts-mcp-ts)\n[![License: MIT](https://img.shields.io/github/license/3aKHP/prts-mcp)](LICENSE)\n\n**Language / 语言：** [English](#english) | [中文](#中文)\n\n---\n\n\u003ca id=\"english\"\u003e\u003c/a\u003e\n\n## English\n\nAn MCP Server for [Arknights](https://www.arknights.global/) fan creation (同人創作) AI agents. Powered by the [PRTS Wiki](https://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.\n\n### Implementations\n\nThis repository contains two independent implementations for different deployment scenarios:\n\n| Directory | Language | Transport | Use case |\n|-----------|----------|-----------|----------|\n| [`python/`](python/) | Python 3.10+ | stdio | Local Claude Desktop / Claude Code, Docker |\n| [`ts/`](ts/) | TypeScript / Node.js | Streamable HTTP | Self-hosted server, remote HTTP access |\n\n### 1.0 Compatibility Matrix\n\n| Area | Python | TypeScript | 1.0 policy |\n|------|--------|------------|------------|\n| Current line | `1.3.0` | `1.3.0` | Stable releases are cut from the same commit when possible |\n| MCP tools | Same 17 public tool names and required parameters | Same 17 public tool names and required parameters | Tool names and required parameters stay stable through 1.x |\n| GameData | `GAMEDATA_PATH` or auto-synced `zh_CN-excel.zip` | `GAMEDATA_PATH` or auto-synced `zh_CN-excel.zip` | Custom paths disable auto-sync |\n| Story data | `STORYJSON_PATH` or auto-synced `zh_CN.zip` | `STORYJSON_PATH` or auto-synced `zh_CN.zip` | Custom zip paths disable auto-sync |\n| Bundled fallback data | Docker image only | Docker image and published npm package | PyPI remains data-light |\n\nSee [`docs/migration-0.x-to-1.0.md`](docs/migration-0.x-to-1.0.md) for the\n0.x to 1.0 migration notes.\n\n### Tools\n\nBoth implementations expose the same tool set:\n\n| Tool | Description |\n|------|-------------|\n| `search_prts(query, limit)` | Search PRTS Wiki by keyword, returns matching article titles |\n| `read_prts_page(page_title)` | Fetch the plain-text content of a PRTS Wiki article |\n| `get_operator_archives(operator_name)` | Retrieve operator archive records (Chinese name) |\n| `get_operator_voicelines(operator_name)` | Retrieve operator voice lines (Chinese name) |\n| `get_operator_basic_info(operator_name)` | Retrieve basic operator profile: class, rarity, faction, recruit tags, talents (Chinese name) |\n| `list_story_events(category?)` | List story events; optional filter: `main` (main story) or `activities` |\n| `list_stories(event_id, include_summaries?)` | List chapters of an event in official order, with optional summaries |\n| `get_event_summary(event_id)` | Narrative overview of all chapters in an event with summaries |\n| `get_story_summary(story_key)` | Single-chapter summary (LLM long summary or official one-liner) |\n| `read_story(story_key, include_narration)` | Read full dialogue for a single chapter |\n| `read_activity(event_id, include_narration, page, page_size)` | Read a complete activity's transcript, with pagination |\n| `list_search_scopes` | List available search domains (operators, stories) with descriptions |\n| `search_data(pattern, scope, max_results)` | Full-text regex search across operator names, descriptions, archives, and voice lines |\n| `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 |\n| `list_prts_sections(page_title)` | Section table of contents for a wiki page |\n| `get_prts_categories(page_title)` | Category tags for a wiki page |\n| `get_prts_links(page_title, direction, limit)` | Outbound links or inbound backlinks with pagination |\n| `get_prts_template(page_title)` | Extract structured template data (key-value pairs) from a wiki page |\n| `list_enemies()` | List all enemies in the handbook with threat level and description |\n| `get_enemy_info(name)` | Retrieve full enemy handbook entry by name |\n| `search_enemies(pattern, max_results?)` | Full-text regex search across enemy names, descriptions, and abilities |\n\n### Quick Start\n\n- **Local stdio (Python / Docker)** → see [`python/`](python/)\n- **HTTP server (TypeScript / Docker)** → see [`ts/`](ts/)\n\n### Data Sources\n\n- **PRTS Wiki API** (`https://prts.wiki/api.php`) — lore articles, faction info, world-building entries\n- **ArknightsGameData** ([`3aKHP/ArknightsGameData`](https://github.com/3aKHP/ArknightsGameData)) — Release archive mirror of [`Kengxxiao/ArknightsGameData`](https://github.com/Kengxxiao/ArknightsGameData), used for operator archives, voice lines, base stats, and other game tables\n- **ArknightsStoryJson** ([`3aKHP/ArknightsStoryJson`](https://github.com/3aKHP/ArknightsStoryJson)) — parsed story dialogue, auto-synced from GitHub Releases (`zh_CN.zip`)\n\nGame data lives in the `gamedata` volume. Story data lives in the `storyjson` volume. Both are auto-synced in the background after the server starts listening.\n\nPublished Docker images and the npm package include bundled fallback game/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.\n\n---\n\n\u003ca id=\"中文\"\u003e\u003c/a\u003e\n\n## 中文\n\n明日方舟同人创作辅助 MCP Server。通过 [PRTS Wiki](https://prts.wiki) API 和自动同步的干员数据，为 MCP 客户端（Claude Desktop、Claude Code、Chatbox 等）提供泰拉世界观检索与干员资料查询能力。\n\n### 实现版本\n\n本仓库包含两个独立实现，适用于不同的部署场景：\n\n| 目录 | 语言 | 传输方式 | 适用场景 |\n|------|------|----------|----------|\n| [`python/`](python/) | Python 3.10+ | stdio | Claude Desktop / Claude Code 本地接入、Docker |\n| [`ts/`](ts/) | TypeScript / Node.js | Streamable HTTP | 个人服务器部署，供他人通过 HTTP 调用 |\n\n### 1.0 兼容矩阵\n\n| 范围 | Python | TypeScript | 1.0 策略 |\n|------|--------|------------|----------|\n| 当前版本线 | `1.3.0` | `1.3.0` | 稳定发布尽量从同一 commit 发布 |\n| MCP 工具 | 相同的 17 个工具名和必填参数 | 相同的 17 个工具名和必填参数 | 1.x 期间保持工具名和必填参数稳定 |\n| 干员数据 | `GAMEDATA_PATH` 或自动同步 `zh_CN-excel.zip` | `GAMEDATA_PATH` 或自动同步 `zh_CN-excel.zip` | 自定义路径会禁用自动同步 |\n| 剧情数据 | `STORYJSON_PATH` 或自动同步 `zh_CN.zip` | `STORYJSON_PATH` 或自动同步 `zh_CN.zip` | 自定义 zip 会禁用自动同步 |\n| bundled 兜底数据 | Docker 镜像 | Docker 镜像和正式 npm 包 | PyPI 继续保持轻量 |\n\n0.x 到 1.0 的迁移说明见 [`docs/migration-0.x-to-1.0.md`](docs/migration-0.x-to-1.0.md)。\n\n### 工具集\n\n两个实现提供相同的工具集：\n\n| 工具 | 说明 |\n|------|------|\n| `search_prts(query, limit)` | 关键词搜索 PRTS 维基词条，返回匹配标题列表 |\n| `read_prts_page(page_title)` | 读取指定词条的纯文本内容 |\n| `get_operator_archives(operator_name)` | 获取干员档案资料（中文名） |\n| `get_operator_voicelines(operator_name)` | 获取干员语音记录（中文名） |\n| `get_operator_basic_info(operator_name)` | 获取干员基本信息：职业、稀有度、所属、招募标签、天赋（中文名） |\n| `list_story_events(category?)` | 列出剧情活动，可选过滤：`main`（主线）或 `activities`（活动） |\n| `list_stories(event_id, include_summaries?)` | 列出指定活动的章节（按官方顺序），可选附带梗概 |\n| `get_event_summary(event_id)` | 获取活动的章节梗概概览，含 LLM 长摘要 |\n| `get_story_summary(story_key)` | 获取单章梗概（LLM 长摘要或官方一句话简介） |\n| `read_story(story_key, include_narration)` | 读取单章完整台词 |\n| `read_activity(event_id, include_narration, page, page_size)` | 读取整个活动的完整剧情，支持分页 |\n| `list_search_scopes` | 列出可搜索的数据域（干员、剧情）及其内容类型 |\n| `search_data(pattern, scope, max_results)` | 在干员名称、描述、档案、语音中执行全文正则搜索 |\n| `search_stories(pattern, character?, line_type?, context_lines?, max_results?, event_id?)` | 在剧情台词中执行全文正则搜索，支持按角色和台词类型过滤 |\n| `list_prts_sections(page_title)` | 获取词条的章节目录 |\n| `get_prts_categories(page_title)` | 获取词条的分类标签 |\n| `get_prts_links(page_title, direction, limit)` | 获取词条的出链或入链，支持分页 |\n| `get_prts_template(page_title)` | 提取词条中的结构化模板键值对数据 |\n| `list_enemies()` | 列出敌方图鉴中所有敌人及其威胁等级和描述 |\n| `get_enemy_info(name)` | 获取指定敌人的详细图鉴资料 |\n| `search_enemies(pattern, max_results?)` | 在敌人名称、描述和能力中执行全文正则搜索 |\n\n### 快速开始\n\n- **本地 stdio 接入（Python / Docker）** → 见 [`python/`](python/)\n- **HTTP 服务部署（TypeScript / Docker）** → 见 [`ts/`](ts/)\n\n### 数据源\n\n- **PRTS Wiki API** (`https://prts.wiki/api.php`) — 世界观词条、阵营设定\n- **ArknightsGameData** ([`3aKHP/ArknightsGameData`](https://github.com/3aKHP/ArknightsGameData)) — [`Kengxxiao/ArknightsGameData`](https://github.com/Kengxxiao/ArknightsGameData) 的 Release 压缩包镜像，用于干员档案、语音记录、基础信息及其他游戏表\n- **ArknightsStoryJson** ([`3aKHP/ArknightsStoryJson`](https://github.com/3aKHP/ArknightsStoryJson)) — 剧情台词解析数据，从 GitHub Releases 自动同步（`zh_CN.zip`）\n\n干员数据存放在 `gamedata` volume，剧情数据存放在 `storyjson` volume，均在服务器开始监听后于后台自动同步。\n\n正式发布的 Docker 镜像和 npm 包会由 CI 预置 bundled 兜底数据；PyPI 包保持轻量，不内置这些数据文件，依赖启动时 auto-sync 或用户自行提供数据路径。\n\n---\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3akhp%2Fprts-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F3akhp%2Fprts-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F3akhp%2Fprts-mcp/lists"}