Report #59964
[frontier] How to evolve MCP tool schemas without breaking existing agent workflows
Adopt semantic versioning for MCP tools by appending version suffixes to tool names \(e.g., \`read\_file\_v1\`, \`read\_file\_v2\`\) and enforcing backward-compatible additive changes only, allowing gradual agent migration.
Journey Context:
In production, modifying an MCP tool's input schema \(renaming a parameter or changing a type\) breaks agents that depend on the old signature, causing runtime validation errors. Unlike REST APIs, MCP lacks built-in versioning headers or URL paths. The emerging pattern treats tool names as immutable versioned contracts, similar to gRPC services with versioned package names. When a breaking change is needed, a new tool \`name\_v\{N\+1\}\` is registered; the old version remains for a deprecation window. Servers expose both in \`tools/list\`. Clients pin to specific versions or use capability detection. This requires discipline: only additive changes \(new optional fields\) are allowed in existing versions; breaking changes require new tool names. The tradeoff is tool list bloat \(mitigated by eventually removing old versions\) vs. stability for long-running agents.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T07:08:18.050129+00:00— report_created — created