Skip to content

Conversation

binggg
Copy link
Member

@binggg binggg commented Aug 4, 2025

问题描述

当用户通过 createCloudBaseMcpServercloudBaseOptions 传入 envId 时,遥测数据上报仍然只从环境变量获取环境ID,导致上报数据不准确。

解决方案

采用参数传递方案,通过修改工具包装器将服务器配置传递给遥测上报函数:

  1. 修改遥测上报函数接口

    • reportToolCallreportToolkitLifecycle 添加 cloudBaseOptions 可选参数
    • 更新环境ID获取优先级:传入配置 > 环境变量 > 配置文件 > unknown
  2. 修改工具包装器

    • 修改 createWrappedHandler 函数,添加 cloudBaseOptions 参数
    • 更新 wrapServerWithTelemetry 函数,传递服务器配置
  3. 保持向后兼容性

    • 所有参数都是可选的,不影响现有功能
    • 环境变量和配置文件的支持保持不变

测试验证

  • ✅ 测试服务器创建时的配置传递
  • ✅ 测试工具调用时的遥测数据上报
  • ✅ 测试生命周期事件的遥测数据上报
  • ✅ 验证向后兼容性

相关文件

  • mcp/src/utils/telemetry.ts - 遥测上报函数
  • mcp/src/utils/tool-wrapper.ts - 工具包装器
  • mcp/src/server.ts - 服务器创建逻辑
  • mcp/tests/telemetry-envid.test.js - 单元测试

变更类型

  • Bug修复
  • 新功能
  • 破坏性变更
  • 文档更新

- 修改 reportToolCall 和 reportToolkitLifecycle 函数,添加 cloudBaseOptions 参数
- 更新环境ID获取优先级:传入配置 > 环境变量 > 配置文件 > unknown
- 修改工具包装器,通过参数传递服务器配置
- 添加单元测试验证功能
- 保持向后兼容性,不影响现有功能

解决当用户通过 createCloudBaseMcpServer 传入 cloudBaseOptions.envId 时,
遥测数据上报仍使用环境变量导致数据不一致的问题。
@binggg binggg merged commit 736f99d into main Aug 4, 2025
1 check passed
binggg added a commit that referenced this pull request Sep 4, 2025
- 修改 reportToolCall 和 reportToolkitLifecycle 函数,添加 cloudBaseOptions 参数
- 更新环境ID获取优先级:传入配置 > 环境变量 > 配置文件 > unknown
- 修改工具包装器,通过参数传递服务器配置
- 添加单元测试验证功能
- 保持向后兼容性,不影响现有功能

解决当用户通过 createCloudBaseMcpServer 传入 cloudBaseOptions.envId 时,
遥测数据上报仍使用环境变量导致数据不一致的问题。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant