项目简介
'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),帮助您监控服务器性能和排查问题。
安装步骤
- 克隆仓库:
git clone https://github.com/last9/mcp-go-sdk.git cd mcp-go-sdk/example - 构建服务器:
在 'example' 目录下执行 Go 构建命令,生成可执行文件:
这将在当前目录下生成一个名为 'mcp-otel-demo' 的可执行文件。go build -o mcp-otel-demo main.go
服务器配置(供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) 协议。
基本使用方法
- 启动服务器: 按照安装步骤编译后,您可以通过MCP客户端配置并启动此服务器。当客户端连接后,服务器会通过标准输入输出来响应请求。
- 注册工具: 您可以在 'main.go' 中,通过调用 'wrapper.RegisterInstrumentedTool' 方法来注册您的自定义工具,例如示例中的 'hello_world'、'math_operation' 和 'slow_task'。每个工具都需要定义其名称、描述和输入Schema。
- 处理工具调用: 为每个注册的工具提供一个处理函数('mcp.ToolHandler'),该函数将接收来自LLM客户端的工具调用请求,执行相应逻辑,并返回结果。
- OpenTelemetry集成: 服务器会自动收集请求和工具调用的追踪和度量数据,并通过配置的OTLP HTTP协议将数据发送到您指定的OpenTelemetry收集器或兼容后端(例如Jaeger、Prometheus)。这使得您可以轻松监控服务器的健康状况和性能。
信息
分类
AI与计算