44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
---
|
|
title: 'MCP: handle list_changed notifications safely'
|
|
state: 'closed'
|
|
created_at: '2026-06-20T05:30:04Z'
|
|
updated_at: '2026-06-20T10:32:59Z'
|
|
assignee: null
|
|
readiness: 'implementation_ready'
|
|
risk_flags: ['mcp', 'notifications', 'tool-schema', 'prompt-cache', 'refresh']
|
|
queued_by: 'workspace-panel'
|
|
queued_at: '2026-06-20T05:59:05Z'
|
|
---
|
|
|
|
## Background
|
|
|
|
MCP servers can notify that tools/resources/prompts lists changed. Yoi must not silently go stale, but it also must not mutate the active run's model-visible tool schema or context in a way that violates history/prompt-cache invariants. This Ticket defines provider tool-list refresh behavior at safe boundaries.
|
|
|
|
## Requirements
|
|
|
|
- Handle MCP list-changed notifications: `notifications/tools/list_changed`, `notifications/resources/list_changed`, and `notifications/prompts/list_changed`.
|
|
- Choose and implement a safe refresh policy: next-turn refresh, restart/reinitialize-required diagnostic, or bounded live refresh only if it preserves schema/history invariants.
|
|
- Do not mutate current LLM context with hidden resource/prompt content.
|
|
- Emit bounded diagnostics when refresh cannot be applied safely.
|
|
- Tests with mock server notifications.
|
|
|
|
## Acceptance criteria
|
|
|
|
- list_changed does not silently stale forever.
|
|
- Current run tool schema consistency is not broken.
|
|
- Refresh/diagnostic behavior is deterministic and documented.
|
|
- Prompt-context/history invariants are preserved.
|
|
- Tests cover tools/resources/prompts list_changed and unsafe refresh fallback.
|
|
|
|
## Non-goals
|
|
|
|
- Initial tools/list registration.
|
|
- Initial resources/prompts operations.
|
|
- Remote MCP transports.
|
|
|
|
## Related work
|
|
|
|
- Depends on `00001KVHR3WS6` for tool list registration.
|
|
- Related to `00001KVHR3WSN` for resources/prompts lists.
|
|
- Objective: `00001KTR80WMN`.
|