fix: encode hyphens in MCP tool names before sanitization #10644
+239
−30
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.
Related GitHub Issue
Closes: #10642
Roo Code Task Context (Optional)
Description
This PR fixes an MCP tool name normalization bug where models (especially Claude) convert hyphens to underscores in tool names when using native tool calling. This caused MCP tools with hyphens in their names (e.g., atlassian-jira_search) to fail because the tool name couldn't be matched after the model mangled it.
Test Procedure
New unit tests are added, and I installed it locally with
pnpm install:vsix.Pre-Submission Checklist
Screenshots / Videos
N/A
Documentation Updates
Additional Notes
Get in Touch
Important
Fix MCP tool name handling by encoding hyphens as triple underscores to prevent conversion by models, ensuring correct parsing and matching.
mcp-name.tsto prevent conversion to underscores by models.NativeToolCallParser.tsto normalize tool names usingnormalizeMcpToolName()before parsing.normalizeMcpToolName()anddecodeMcpName()inmcp-name.tsto handle encoding and decoding of hyphens.normalizeMcpToolName()anddecodeMcpName()inmcp-name.spec.ts.mcp-name.spec.ts.This description was created by
for c23ec0c. You can customize this summary. It will automatically update as commits are pushed.