ticket: clarify mcp runtime-discovered tools

This commit is contained in:
2026-06-20 17:00:17 +09:00
parent 9881a061fe
commit 96223148c0
7 changed files with 210 additions and 11 deletions
+7 -5
View File
@@ -12,9 +12,9 @@ queued_at: '2026-06-20T05:58:58Z'
## Background
Once a configured MCP stdio server can initialize, Yoi should expose discovered MCP tools as ordinary model-visible Yoi tools through the existing ToolRegistry path. Server-provided tool metadata and schemas are untrusted data.
Once a configured MCP stdio server can initialize, Yoi should expose provider-discovered MCP tools as ordinary model-visible Yoi tools through the existing ToolRegistry path. Server-provided tool metadata and schemas are untrusted data.
This Ticket only registers tools discovered through `tools/list`. It does not implement `tools/call` execution.
This Ticket only registers tools discovered through `tools/list` at provider initialization / safe refresh boundaries. It does not implement `tools/call` execution and does not allow model-visible tool schema mutation during an active run.
## Requirements
@@ -23,17 +23,19 @@ This Ticket only registers tools discovered through `tools/list`. It does not im
- Normalize MCP tool names into stable namespaced Yoi tool names that include server namespace.
- Validate/normalize tool descriptions and input schemas as untrusted metadata.
- Reject invalid schemas, duplicate names, and collisions fail-closed with diagnostics.
- Register contributions through `pod::feature` / normal ToolRegistry path; no private MCP bypass.
- Register provider-discovered tool contributions through `pod::feature` / normal ToolRegistry path; no private MCP bypass.
- Keep model-visible tool schema run-stable; `list_changed` handling is a later safe-boundary refresh/diagnostic problem, not mid-run mutation.
- Do not register resources/prompts in this Ticket.
## Acceptance criteria
- MCP mock server tool appears as model-visible Yoi tool with stable namespaced name.
- Provider-discovered MCP mock server tool appears as model-visible Yoi tool with stable namespaced name.
- Invalid schema is rejected with bounded diagnostic.
- Duplicate/colliding names are rejected fail-closed.
- Server metadata cannot weaken Yoi instructions/scope/permissions.
- No `tools/call` request is sent during registration.
- Tests cover valid registration, pagination/bounds, invalid schema, duplicate/collision, and untrusted metadata normalization.
- Active-run model-visible schema is not mutated by this registration path.
- Tests cover valid registration, pagination/bounds, invalid schema, duplicate/collision, untrusted metadata normalization, and run-stable schema behavior.
## Non-goals