CnOps 社区
首页开源项目实践文章视频课程常见问答开发者工具
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具

CnOps 社区

愿景

CnOps 社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页问答Loongsuite Go Agent 是如何为 MCP 官方 Go SDK 实现自动插桩的?

Loongsuite Go Agent 是如何为 MCP 官方 Go SDK 实现自动插桩的?

#MCP#AI 可观测性#中间件注入#LLM#自动插桩

agenticOps | 2026-05-23

MCP(Model Context Protocol)是 Google、Anthropic 等推出的 LLM 应用与外部工具集成协议。为其官方 Go SDK 自动插桩面临几个挑战:协议复杂(tools/call、resources/read、prompts/get 等多种操作)、依赖用户主动使用中间件、需精确测量请求-响应完整耗时。

Loongsuite Go Agent 采用初始化时自动注入中间件的策略:

// 在 NewServer 创建时自动注入监控中间件
func afterNewServer(call api.CallContext, s *mcp.Server) {
    if s == nil { return }
    s.AddReceivingMiddleware(createServerMonitoringMiddleware())
}

// 在 NewClient 创建时也自动注入
func afterNewClient(call api.CallContext, c *mcp.Client) {
    if c == nil { return }
    c.AddReceivingMiddleware(createClientMonitoringMiddleware())
}

实现效果:无论用户是否手动调用 AddReceivingMiddleware,监控中间件都会 100% 覆盖;能自动记录 MCP 方法名、工具名称、资源 URI、请求参数、错误信息和耗时。用户代码完全不用修改,用 otel go build 编译后所有 MCP 请求自动被监控。