[Server] SEP-2663 Tasks: TaskStoreInterface with InMemory and PSR-16 stores
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 52/100
Research direction
Start by locating TasksExtension, Task::isReadable(), and the proposed TaskStoreInterface entry points. Trace how server-side task state and Task::$inputRequests are handed to the extension, then define the InMemoryTaskStore and Psr16TaskStore responsibilities. Done means save/get/delete work with expiry, bounded oldest-by-last-use eviction exists in memory, and PSR-16 TTL behavior supports PHP-FPM.
Written by the indexing model from the issue text.
Description
Task persistence for SEP-2663 for the 2026-07-28 release. Tracked by umbrella #335.
Scope
Mcp\Server\Task\TaskStoreInterface:save(),get()(null for unknown or expired — a client cannot tell them apart and does not need to),delete().InMemoryTaskStorewith a task limit (default 1000, oldest-by-last-use evicted) so unbounded task creation cannot exhaust memory. Right for stdio and single-process runtimes; wrong under PHP-FPM, where the worker that creates a task is not the one polled for it.Psr16TaskStore(PSR-16 cache-backed) for PHP-FPM — a filesystem adapter covers the "file store" case, so no separateFileTaskStore.- Expiry is TTL-based (
Task::isReadable()on read, cache TTL for PSR-16) plus the in-memory limit; no request-counted GC pass. - The store is the one place both server-side task state and the pending server→client asks (
Task::$inputRequests) live. - The store is handed to
TasksExtension, not to the builder (see #346).
- Dominant language
- PHP
- Stars
- 1.6k
- Forks
- 173
- Avg merge
- 2d 49m
- Merged PRs (30d)
- 23
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from modelcontextprotocol/php-sdk
-
[Server] Handler type uses bare Closure, hard to decorate RegistryInterface under strict PHPStan OpenServer
Difficulty 1/5 Under an hour Newbie friendliness 78/100
modelcontextprotocol/php-sdk#468 · 2 comments ·
-
needs confirmation needs maintainer action Server
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
modelcontextprotocol/php-sdk#398 · 1 reaction ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
modelcontextprotocol/php-sdk#370 ·
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 55/100
modelcontextprotocol/php-sdk#510 · 1 comment ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 45/100
modelcontextprotocol/php-sdk#504 ·
All issues in modelcontextprotocol/php-sdk
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
getgrav/grav-plugin-api#45 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
RSS-Bridge/rss-bridge#5098 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
phingofficial/phing#2025 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
silverstripe/developer-docs#911 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100