modelcontextprotocol / modelcontextprotocol/php-sdk

[Server] SEP-2663 Tasks: TaskStoreInterface with InMemory and PSR-16 stores

Offen
#347 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

2026-07-28 enhancement improves spec compliance needs design Server
Vorherrschende Sprache
PHP
Sterne
1.6k
Forks
173
Ø Merge
2 T. 49 Min.
Gemergte PRs (30 T.)
23

Beschreibung

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().
  • InMemoryTaskStore with 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 separate FileTaskStore.
  • 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).

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, TasksExtension, Task::isReadable() und die vorgeschlagenen TaskStoreInterface-Einstiegspunkte zu lokalisieren. Verfolge, wie der serverseitige Task-Zustand und Task::$inputRequests an die Extension übergeben werden, und definiere anschließend die Zuständigkeiten von InMemoryTaskStore und Psr16TaskStore. Als erledigt gilt dies, wenn save/get/delete mit Ablauf funktionieren, im Speicher eine begrenzte Verdrängung des am längsten nicht verwendeten Elements vorhanden ist und das PSR-16-TTL-Verhalten PHP-FPM unterstützt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php
Bereich
backend
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
52/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.