fix(runtime): replay provider-facing MCP arguments - #2243
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
English
Summary
Root cause
buildMcpToolsprojected every MCP call into{ serverId, toolName, arguments }before persistence. RuntimeEvent history later replayed that internal transport shape as the model's own tool input. A model following its history nested the envelope again, so the actual MCP schema rejected the call.The MCP proxy closure already owns the server and tool identity. Persisting that identity inside provider-facing arguments was redundant and made the model history invalid.
Validation
@maka/runtimefull test suite: 3,179 passed, 0 failed, 9 skipped@maka/runtimetypecheck中文
概要
根因
buildMcpTools在持久化前将每个 MCP 调用投影为{ serverId, toolName, arguments }。RuntimeEvent 历史随后把这个内部传输结构作为模型自己的工具参数回放。模型模仿历史时再次嵌套 envelope,最终被真实 MCP schema 拒绝。MCP proxy 的闭包已经持有 server 和 tool 身份,因此把这部分身份写入 provider-facing 参数既重复,又会破坏模型历史。
验证
@maka/runtime全量测试:3,179 passed,0 failed,9 skipped@maka/runtimetypecheck