使用说明
项目简介
go-mcp 是一个基于 Go 语言开发的 MCP 服务器实现,它提供了资源管理、工具注册与执行以及 Prompt 模板定义等核心 MCP 功能,旨在帮助开发者构建可扩展、安全的 LLM 应用后端。该项目代码结构清晰,包含客户端和服务端实现,并提供了详细的集成测试用例,方便用户理解和使用。
主要功能点
- 资源 (Resources) 管理: 支持托管和管理各种类型的数据资源,并提供客户端数据访问能力。
- 工具 (Tools) 注册与执行: 允许注册外部功能为工具,并通过 JSON-RPC 协议供 LLM 客户端调用,扩展 LLM 的能力边界。
- Prompt 模板 (Prompts) 定义与渲染: 支持定义可参数化的 Prompt 模板,客户端可以根据需求获取并使用这些模板与 LLM 进行交互。
- JSON-RPC 通信: 采用标准的 JSON-RPC 协议与客户端进行通信,实现请求-响应和通知机制。
- 多传输协议支持: 通过抽象的 Transport 接口,理论上支持 Stdio, SSE, WebSocket 等多种传输协议(仓库目前主要实现了 Stdio 和 SSE 传输)。
- 会话管理与能力声明: 服务器端负责会话管理,并在初始化过程中声明自身 capabilities,与客户端进行能力协商。
安装步骤
- 安装 Go 环境: 确保您的机器上已安装 Go 语言环境 (>= 1.20)。
- 获取仓库: 使用 'go get' 命令下载 'go-mcp' 仓库:
go get github.com/nalbion/go-mcp - 编译服务器: 进入仓库目录,编译 'cli.go' 文件以生成服务器可执行文件:
编译成功后,会在当前目录下生成 'mcp-server' 可执行文件。cd $GOPATH/github.com/nalbion/go-mcp/pkg/mcp go build cli.go -o mcp-server
服务器配置
MCP 服务器的配置主要在代码层面完成,例如注册工具、Prompt 和资源。对于 MCP 客户端而言,配置的关键在于指定如何启动和连接到 MCP 服务器。通常,MCP 客户端需要配置服务器的启动命令及其参数。
以下是一个 MCP 客户端可能需要的服务器启动配置示例 (JSON 格式),客户端会使用 'command' 和 'args' 来启动 go-mcp 服务器进程:
{ "serverName": "go-mcp-server", "command": "./mcp-server", "args": [ "server", "8080" ], "description": "启动本地 go-mcp MCP 服务器,监听 8080 端口" }
配置参数说明:
- 'serverName': 服务器的名称,客户端用于标识连接的服务器,可以自定义。
- 'command': MCP 服务器的可执行文件路径。 根据上面的安装步骤,如果您在 '$GOPATH/github.com/nalbion/go-mcp/pkg/mcp' 目录下执行了 'go build' 命令,且当前工作目录也在该目录下,则可以使用 '"./mcp-server"'。请根据实际情况修改可执行文件的路径。
- 'args': 启动服务器进程时需要传递的命令行参数。 示例中 '"server"' 参数指定运行服务器模式,'"8080"' 指定服务器监听的端口号。 'go-mcp' 服务器接受 'server [port]' 命令,'port' 参数可选,默认为 '8080'。
- 'description': 服务器配置的描述信息,方便客户端用户理解其用途。
注意: 上述 JSON 配置仅为示例,实际 MCP 客户端如何读取和使用这些配置信息取决于具体的客户端实现。 'go-mcp' 仓库本身主要关注服务器端的实现。
基本使用方法
-
启动 MCP 服务器: 在服务器端机器上,打开终端,进入 '$GOPATH/github.com/nalbion/go-mcp/pkg/mcp' 目录,执行以下命令启动 go-mcp 服务器(默认监听 8080 端口):
./mcp-server server # 或者指定端口 ./mcp-server server 9090服务器成功启动后,将开始监听指定端口,等待 MCP 客户端连接。
-
配置 MCP 客户端: 在 MCP 客户端应用中,根据客户端的要求,配置连接到 go-mcp 服务器所需的信息。 这通常包括服务器的启动命令 (command) 和参数 (args),以便客户端能够启动服务器进程并建立连接。
-
客户端与服务器交互: MCP 客户端启动后,将通过 JSON-RPC 协议与 go-mcp 服务器进行通信。客户端可以发送请求,例如:
- 'tools/list': 获取服务器注册的工具列表。
- 'tools/call': 调用服务器提供的工具,并传递相应的参数。
- 'prompts/list': 获取服务器提供的 Prompt 模板列表。
- 'prompts/get': 获取指定名称的 Prompt 模板。
- 'resources/list': 获取服务器管理的资源列表。
- 'resources/read': 读取指定 URI 的资源内容。
具体的操作和请求参数,请参考 Model Context Protocol 的官方文档以及 'go-mcp' 仓库中 'pkg/mcp/mcp_models.go' 文件定义的 MCP 消息结构。
示例: 您可以参考 'go-mcp' 仓库中的 'pkg/mcp/integration_test.go' 文件,该文件包含了完整的客户端与服务器集成测试用例,展示了如何使用 go-mcp 客户端与服务器进行交互,例如列出工具、调用工具等。
开发者提示: 'go-mcp' 仓库主要提供了 MCP 协议的基础框架和服务器端实现。 实际应用中,您需要根据具体的 LLM 应用场景,扩展和定制 go-mcp 服务器的功能,例如:
- 实现具体的工具 Handler 函数,连接到外部 API 或服务。
- 实现 Prompt 模板的 MessageProvider 函数,根据参数动态生成 Prompt 消息。
- 实现 Resource 的 ReadHandler 函数,从文件系统、数据库或其他数据源读取资源内容。
- 根据需要添加和配置更多的 MCP capabilities。
信息
分类
AI与计算