fix(mcp): propagate trace context in default streamable HTTP client#4769
fix(mcp): propagate trace context in default streamable HTTP client#4769pandego wants to merge 2 commits intogoogle:mainfrom
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request addresses an issue where OpenTelemetry trace context was not being propagated in streamable HTTP requests made by the MCP tool. It introduces a wrapper around the default HTTPX client factory to automatically instrument the client with OpenTelemetry when available, ensuring that trace context is correctly forwarded. The changes are designed to be non-breaking, falling back to uninstrumented behavior if OpenTelemetry is not present. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Activity
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request correctly adds OpenTelemetry trace context propagation for the default streamable HTTP client in MCP. The implementation is sound, and the tests cover both scenarios where OTel is present and absent. I've added one suggestion to simplify the test code for better readability and maintainability.
|
Nice improvement — propagating context in the default MCP HTTP client is a strong step for distributed tracing. Suggestion for follow-up robustness: define an end-to-end tracing checklist and validate it as one contract across boundaries:
If this contract is validated in CI (even with a lightweight integration test), it should prevent future partial regressions where one hop drops context. |
0bdcb05 to
c002ade
Compare
|
Thanks - this is a helpful suggestion. I agree that an end-to-end tracing contract would be a good follow-up to catch partial regressions across the full path. I kept this PR scoped to propagating trace context in the default outbound MCP HTTP client, but validating the full inbound -> agent -> outbound -> downstream chain in CI would be a solid next step. |
Related issue
Fixes #4768
What this changes
httpx_client_factoryso outbound streamable HTTP MCP requests use the existing OTel context when OTel HTTPX instrumentation is installedhttpx_client_factoryTesting
uv run pytest tests/unittests/tools/mcp_tool/test_mcp_session_manager.py tests/unittests/tools/mcp_tool/test_mcp_toolset.pyNotes
StreamableHTTPConnectionParams