Add remove_prompt() and remove_resource() for parity with remove_tool()
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 72/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- backend-api-design
Direzione di ricerca
Inizia leggendo l’implementazione esistente di remove_tool() e i relativi test, quindi esamina PromptManager, ResourceManager, MCPServer ed exceptions.py. Aggiungi i metodi di rimozione corrispondenti e PromptError come descritto, con test che coprano la rimozione riuscita e i nomi o URI mancanti. Il lavoro è completo quando prompt, risorse e template delle risorse possono essere rimossi tramite l’API pubblica di MCPServer senza accedere ai manager privati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
MCPServer exposes remove_tool(name) (added in #1322) but has no equivalent for prompts or resources. This was part of the original ask in #711 ("removing a tool or resource dynamically"), which was closed when remove_tool() landed — but the resource and prompt sides were never addressed.
Use case
Multi-tenant / multi-instance deployments where the same server image serves different clients. Today users can filter tools per-instance via remove_tool(), but for prompts and resources they're forced to reach into private internals:
# Current workaround — fragile, undocumented
del mcp._prompt_manager._prompts["some_prompt"]
del mcp._resource_manager._resources[str(uri)]
(This is the same pattern @lukehsiao described in https://github.com/modelcontextprotocol/python-sdk/issues/711#issuecomment-2790042502 for tools, before remove_tool() existed.)
Current state
| Primitive | add_* |
remove_* |
|---|---|---|
| Tool | add_tool() / @tool() |
remove_tool() ✅ |
| Prompt | add_prompt() / @prompt() |
missing |
| Resource | add_resource() / @resource() |
missing |
| Resource Template | add_template() |
missing |
Proposed API
Add these methods, mirroring the existing remove_tool() pattern exactly:
PromptManager.remove_prompt(name: str)— raisesPromptErrorif not foundResourceManager.remove_resource(uri: str)— raisesResourceErrorif not foundResourceManager.remove_template(uri_template: str)— raisesResourceErrorif not foundMCPServer.remove_prompt(name)— thin wrapper delegating to the managerMCPServer.remove_resource(uri)— thin wrapper delegating to the managerMCPServer.remove_resource_template(uri_template)— thin wrapper delegating to the managerPromptErrorexception class inexceptions.py(for symmetry withToolErrorandResourceError)
This is ~15 lines of implementation across 4 source files, plus tests. Purely additive, no breaking changes.
References
- #711 — Original issue requesting dynamic tool/resource removal (closed, only tools were addressed)
- #1322 — PR that added
remove_tool()(the pattern this proposal follows)
- 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
-
货币战争手改优先级配置缺少列表元素类型校验(P3) Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
syfoud/Simulated_Scepter#172 ·
-
A cancelled tests run makes the coverage comment workflow fail and reports it as a red check on main Apertaarea: ci bug perceived difficulty: 3
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
Nitjsefnie-Harness-Commons/daedalus#921 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
EleutherAI/lm-evaluation-harness#4207 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 92/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
ClickHouse/clickhouse-connect#1057 ·