Repository navigation
fix(sensor): attribute Copilot MCP tool calls to their server - #213
Open
rudycelekli wants to merge 1 commit into
Open
rudycelekli wants to merge 1 commit into
rudycelekli wants to merge 1 commit into
Conversation
Copilot records mcpServerName on assistant.message toolRequests and on tool.execution_start for MCP tools, but the parser never read it, so MCP calls were exported as plain "function" tools with no server_name. Those tools are now typed mcp_tool and carry the recorded server name; other tools are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
This branch has not been deployed
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.
What type of PR is this? (check all applicable)
Related issue: N/A (found by reading the code; reproduced on
mainat 6b33dff)What changed?
When a toolRequest or tool.execution_start has a non-empty string mcpServerName, set tool_type "mcp_tool" and server_name to it; pass server_name through to ToolUsage. Tools without the field are unchanged.
Why?
Copilot's session event schema (github/copilot-sdk python/copilot/generated/session_events.py: AssistantMessageToolRequest and ToolExecutionStartData both have
mcpServerName/mcpToolName) records which MCP server a tool belongs to. CopilotParser (Sensor/adr_sensor/parsers/copilot_parser.py:257-269, 284-293, 150-157) never reads it and never passes server_name to ToolUsage, so e.g. agithub-mcp-server-get_issuecall withmcpServerName: "github-mcp-server"is exported as tool_type "function", server_name None (every other parser in Sensor sets mcp_tool + server_name for MCP calls).How did you test it?
tests/test_parsers.py::TestCopilotParser::test_mcp_tools_are_attributed_to_their_server(one MCP toolRequest, one plainbashtoolRequest, one orphan MCP tool.execution_start). main parser: FAILED (tool_type "function"); branch: passed.pytest tests/ -q(py3.14) 609 passed (main has 608); Python 3.9.6 parser test files 245 passed.Potential risks
The change only affects the input described above; other paths go through the same code as before, and the component's existing tests pass.