This release adds 1 notable feature for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+5 more
Affected surfaces
Summary
AI summaryFixed story search timeout caused by redundant zip parsing and session memory leak eviction.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Added E2E test suite covering MCP handshake, all 21 tools, operator data, and graceful degradation. Added E2E test suite covering MCP handshake, all 21 tools, operator data, and graceful degradation. Source: granite4.1:8b-q6_K@2026-05-19 Confidence: high |
— |
| Dependency | Medium |
Installation instructions updated for direct npx run or global npm install of [email protected]. Installation instructions updated for direct npx run or global npm install of [email protected]. Source: granite4.1:8b-q6_K@2026-05-19 Confidence: low |
— |
| Bugfix | Medium |
Session memory leak fixed by evicting MCP transports after SESSION_IDLE_TIMEOUT_MS inactivity. Session memory leak fixed by evicting MCP transports after SESSION_IDLE_TIMEOUT_MS inactivity. Source: granite4.1:8b-q6_K@2026-05-19 Confidence: high |
— |
| Bugfix | Medium |
ZipStore zip instance caching now uses cached AdmZip instead of re-instantiating on each call. ZipStore zip instance caching now uses cached AdmZip instead of re-instantiating on each call. Source: granite4.1:8b-q6_K@2026-05-19 Confidence: low |
— |
| Bugfix | Medium |
HTML entity decoding uses String.fromCodePoint and expanded lookup table for non-BMP Unicode. HTML entity decoding uses String.fromCodePoint and expanded lookup table for non-BMP Unicode. Source: granite4.1:8b-q6_K@2026-05-19 Confidence: low |
— |
| Bugfix | Medium |
Story search robustness improved with page validation in read_activity and narrowed exception handling in search_stories and read_activity. Story search robustness improved with page validation in read_activity and narrowed exception handling in search_stories and read_activity. Source: granite4.1:8b-q6_K@2026-05-19 Confidence: low |
— |
| Bugfix | Medium |
Enemy blackboard parity corrected; slice order matches Python before null filtering. Enemy blackboard parity corrected; slice order matches Python before null filtering. Source: granite4.1:8b-q6_K@2026-05-19 Confidence: low |
— |
| Bugfix | Medium |
ZipStore now caches AdmZip instances instead of recreating them on each call. ZipStore now caches AdmZip instances instead of recreating them on each call. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Bugfix | Medium |
HTML entity decoding uses String.fromCodePoint and a larger lookup table with regex fallback for unknown entities. HTML entity decoding uses String.fromCodePoint and a larger lookup table with regex fallback for unknown entities. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
| Bugfix | Low |
Story search now validates page >= 1 in read_activity and narrows exception handling to expected error types. Story search now validates page >= 1 in read_activity and narrows exception handling to expected error types. Source: granite4.1:30b@2026-05-19-audit Confidence: low |
— |
Full changelog
Fixed
- ZipStore zip instance caching.
AdmZipis now cached instead of
re-instantiated on everyexists()/readText()call. Insearch_stories
without anevent_idfilter this was ~3000 redundant zip parses,
exceeding the 120 s MCP client timeout. - Session memory leak.
SESSION_IDLE_TIMEOUT_MS(default 30 min)
evicts MCP transports left behind by clients that disconnect without
cleanly closing their session, preventing unbounded memory growth. - Enemy blackboard parity. Filter/slice order corrected to match
Python: slice first 6 entries, then filter null values. - HTML entity decoding.
String.fromCodePointreplaces
String.fromCharCodefor correct non-BMP Unicode handling. Named entity
table extended from 6 hardcoded replacements to a lookup table with
regex-based fallback for unrecognized entities. - Story search robustness.
read_activitygainspage >= 1validation.
Exception handling insearch_storiesandread_activitynarrowed from
barecatch {}to expected error types. Convenience wrappers
(searchStories,getEventSummary,getStorySummary) now use
storyStore()for consistency.
Added
- E2E test suite. MCP protocol-level test (
e2e.test.ts) covering
handshake, tool surface (all 21 tools), operator data, and graceful
degradation when optional data is unavailable.
Install
# Run directly (Streamable HTTP on :3000)
npx prts-mcp-ts
# Or install globally
npm install -g [email protected]
MCP endpoint: http://localhost:3000/mcp
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]