Client-side support for the tasks extension (io.modelcontextprotocol/tasks, SEP-2663)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 52/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- api, backend-api-design
Direzione di ricerca
Inizia con l’API esistente ClientExtension.claims() e la documentazione di Request.name_param, quindi esamina il percorso proposto mcp/client/extensions/tasks.py e i test correlati. Implementa il supporto client per i risultati delle attività di tools/call, il polling di tasks/get con annullamento tramite tasks/cancel e gli header di routing delle attività; conferma il comportamento rispetto agli stati delle attività descritti e a un server conforme alla specifica.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
v2 removed the experimental tasks API in favor of the SEP-2663 extension (io.modelcontextprotocol/tasks), but the SDK currently ships no client-side way to consume task-augmented servers: a tools/call that returns resultType: "task" fails result validation unless every consumer hand-writes a ResultClaim.
The extension surface (ClientExtension.claims()) supports this cleanly. I have a working implementation (~120 lines + tests, exercised against a spec-conformant 2026-07-28 server with server-directed task creation) that:
- advertises
io.modelcontextprotocol/tasksin per-request capabilities, - claims
resultType: "task"ontools/call, - resolves the claim by polling
tasks/get(honoringpollIntervalMs, including mid-task changes), - maps
failed→ a raised error carrying the server's JSON-RPC error, andcancelled→ a distinct error, - sends best-effort
tasks/cancelwhen the caller's scope is cancelled (shielded), per the spec's cooperative-cancellation model, - sets
Mcp-Nameto the taskId ontasks/*requests vianame_param(the SEP-2663 routing-header requirement — theRequest.name_paramdocstring in mcp-types already anticipates this).
Happy to send a PR — proposed location mcp/client/extensions/tasks.py. Two design questions I'd like a maintainer opinion on before polishing:
- Should
input_requiredtasks surface through the existing elicitation callback plumbing (withtasks/updateas the response channel), or is that a follow-up? - Is transparent-polling-inside-
call_toolthe right default, or should the extension also expose the raw task handle for callers that want to manage polling themselves (e.g. UI progress)?
One porting note: the natural base for the wire models is MCPModel (camelCase alias generator), which mcp_types doesn't currently re-export — part of the value of upstreaming is resolving that properly.
- Lingua principale
- Python
- Stelle
- 24.3k
- Fork
- 4k
- Merge medio
- 1g 19m
- PR unite (30g)
- 29
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di modelcontextprotocol/python-sdk
-
v1 v2
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
modelcontextprotocol/python-sdk#3546 · 5 commenti ·
-
v1 v2
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
modelcontextprotocol/python-sdk#3545 · 1 commento ·
-
v1 v2
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 91/100
modelcontextprotocol/python-sdk#3508 · 2 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
modelcontextprotocol/python-sdk#3504 ·
-
v1 v2
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
modelcontextprotocol/python-sdk#3492 · 1 commento ·
Tutte le issue di modelcontextprotocol/python-sdk
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
learningequality/ricecooker#747 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
run-llama/llama_index#23199 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
KhronosGroup/glTF-Blender-IO#2769 ·