This release includes 2 breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
+5 more
Affected surfaces
Summary
AI summaryData path architecture split into volume and bundled fallback, fixing silent ignore of mounted data.
Full changelog
Added
- Bundled operator data files (
data/gamedata/zh_CN/gamedata/excel/*.json) now committed to the repository and baked into the Docker image at build time, serving as a read-only offline fallback when the volume has no data yet
Changed
- Data path architecture split into two independent roots:
/data/gamedata(volume, auto-sync write target) and/app/data/gamedata(bundled, read-only fallback inside Docker);config.pyresolves the effective read path by preferring the volume when its files are present, falling back to bundled otherwise _DEFAULT_GAMEDATA_PATHinside Docker now fixed to/data/gamedata(the volume mount-point) instead of being derived fromPRTS_MCP_ROOT; outside Docker retains the per-user data directory fallback- Auto-sync skip condition changed from path comparison to
is_custom_gamedataflag: sync is disabled only whenGAMEDATA_PATHis explicitly set by the user, regardless of the path value Configdataclass gainsis_custom_gamedata: boolandeffective_excel_path: Path | Nonefields;has_operator_datanow reflects both the volume path and the bundled fallback- Operator tool error message updated to indicate that auto-sync may still be in progress, rather than asking the user to set
GAMEDATA_PATH - Dockerfile creates
/data/gamedataand/data/storyjsonas empty directories (volume mount-points) - Recommended Docker invocation updated to include a named volume:
docker run -i --rm -v prts-mcp-data:/data/gamedata prts-mcp .mcp.example.json,docker-compose.override.example.yml,README.md,CONTRIBUTING.md, anddocs/deployment.mdupdated to reflect the new volume-first workflow- CI verify assertions updated to match the new error message prefix
Fixed
- Volume-mounted data directory was silently ignored when
GAMEDATA_PATHwas not set; the server now correctly uses/data/gamedataas the sync target inside Docker without requiring the user to set any environment variable - Raw
[Errno 2] No such file or directorypropagated to MCP clients when operator data files were missing; now caught and returned as a human-readable message
Removed
PRTS_MCP_ROOT-based data root resolution no longer drives the sync write path (retained only as a Docker/non-Docker environment marker)
Docker image
docker pull ghcr.io/3akhp/prts-mcp:0.2.1
Breaking Changes
- Removed `PRTS_MCP_ROOT`-based sync write path; now always `/data/gamedata` inside Docker
- Changed `_DEFAULT_GAMEDATA_PATH` to fixed `/data/gamedata` instead of deriving from `PRTS_MCP_ROOT`
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About 3aKHP/prts-mcp
MCP Server for Arknights, querying the PRTS Wiki API and serving auto-synced operator archives and voice lines from game data. Designed for fan-creation (同人創作) AI agents. Python (stdio/Docker) and TypeScript (Streamable HTTP) implementations.
Related context
Related tools
Earlier breaking changes
- vts/v1.0.0 Public tool surface frozen; 9 MCP tool names, parameters, and response formats locked.
Beta — feedback welcome: [email protected]