项目简介

'mcp-go-sdk' 是一个利用Go语言构建的MCP服务器实现。它在官方MCP Go SDK的基础上进行了扩展,集成了OpenTelemetry,为您的LLM应用提供了一个功能丰富且具有强大可观测性的后端服务。此服务器能够管理和提供LLM所需的上下文信息(资源)、响应LLM调用的外部功能(工具),并支持可定制的LLM交互模式(Prompt模板)。

主要功能点

  • 上下文服务: 托管并管理LLM客户端所需的各类上下文资源。
  • 工具调用: 注册并执行LLM可以调用的外部工具或功能。
  • Prompt模板: 支持定义和渲染可定制的Prompt模板,优化LLM交互。
  • JSON-RPC通信: 通过标准JSON-RPC协议与LLM客户端进行通信。
  • 多种传输协议: 支持Stdio、SSE等多种传输方式。
  • OpenTelemetry集成: 自动为所有MCP请求和工具调用生成分布式追踪(Tracing)和度量(Metrics),帮助您监控服务器性能和排查问题。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/last9/mcp-go-sdk.git
    cd mcp-go-sdk/example
  2. 构建服务器: 在 'example' 目录下执行 Go 构建命令,生成可执行文件:
    go build -o mcp-otel-demo main.go
    这将在当前目录下生成一个名为 'mcp-otel-demo' 的可执行文件。

服务器配置(供MCP客户端使用)

MCP客户端需要以下信息来启动并连接到此MCP服务器。请根据您的实际部署路径替换 'command' 字段。

JSON格式配置示例:

{
  "server_name": "otel-mcp-demo",
  "version": "1.0.0",
  "command": "./mcp-otel-demo",
  "args": [],
  "transport": "stdio"
}
  • 'server_name': 服务器的名称,本例中为 "otel-mcp-demo"。
  • 'version': 服务器的版本号,本例中为 "1.0.0"。
  • 'command': MCP服务器可执行文件的路径。如果您在 'example' 目录下编译并运行,通常是 './mcp-otel-demo'。请根据您的实际部署位置调整此路径。
  • 'args': 启动MCP服务器时需要传递的命令行参数列表。本例中服务器无需额外参数,所以为空数组 '[]'。
  • 'transport': 服务器与客户端通信所使用的传输协议。本例中服务器使用标准输入输出 (Stdio) 协议。

基本使用方法

  1. 启动服务器: 按照安装步骤编译后,您可以通过MCP客户端配置并启动此服务器。当客户端连接后,服务器会通过标准输入输出来响应请求。
  2. 注册工具: 您可以在 'main.go' 中,通过调用 'wrapper.RegisterInstrumentedTool' 方法来注册您的自定义工具,例如示例中的 'hello_world'、'math_operation' 和 'slow_task'。每个工具都需要定义其名称、描述和输入Schema。
  3. 处理工具调用: 为每个注册的工具提供一个处理函数('mcp.ToolHandler'),该函数将接收来自LLM客户端的工具调用请求,执行相应逻辑,并返回结果。
  4. OpenTelemetry集成: 服务器会自动收集请求和工具调用的追踪和度量数据,并通过配置的OTLP HTTP协议将数据发送到您指定的OpenTelemetry收集器或兼容后端(例如Jaeger、Prometheus)。这使得您可以轻松监控服务器的健康状况和性能。

信息

分类

AI与计算