使用说明
项目简介
go-mcp-server-service 是一个基于 Go 语言实现的 MCP (Model Context Protocol) 服务器示例,它演示了如何构建一个符合 MCP 协议的后端应用,以便为大型语言模型 (LLM) 客户端提供上下文信息和功能支持。该示例专注于笔记管理,展示了如何通过 MCP 服务器管理资源(笔记)、提供 Prompt 模板和注册工具,从而扩展 LLM 应用的能力。
主要功能点
- 资源管理 (Resources):
- 实现了简单的笔记存储系统,使用 'note://' 自定义 URI scheme 访问和管理笔记资源。
- 支持获取资源元数据,包括名称、描述和 MIME 类型。
- 支持线程安全的并发访问,保证数据一致性。
- Prompt 模板 (Prompts):
- 提供 'summarize-notes' Prompt 模板,用于总结所有存储的笔记内容。
- 支持可选参数 'style' (brief/detailed) 来控制总结的详细程度。
- 支持线程安全地访问笔记数据。
- 工具 (Tools):
- 提供 'add-note' 工具,允许客户端向服务器添加新的笔记。
- 需要 'name' (笔记名称) 和 'content' (笔记内容) 作为参数。
- 支持线程安全的状态更新。
- JSON-RPC 2.0 API:
- 完全兼容 JSON-RPC 2.0 协议,通过标准输入/输出 (stdio) 进行通信。
- 提供完善的错误处理机制,包括标准 JSON-RPC 错误码和自定义错误码。
- 跨平台支持:
- 支持 Windows, Linux, macOS 等多种操作系统。
- 开发和发布构建:
- 提供 Makefile 构建脚本,支持开发 (dev) 和发布 (release) 两种构建模式。
- 可以构建命令行界面 (CLI) 程序和系统服务 (service) 组件。
安装步骤
- 安装 Go 语言环境:确保你的系统中安装了 Go 1.21 或更高版本。可以从 Go 官网 下载并安装。
- 安装 GNU Make (或兼容工具):构建项目需要 'make' 工具。通常 Linux 和 macOS 系统自带,Windows 用户可能需要安装 MinGW 或类似工具。
- 安装 Git:用于版本控制和获取项目信息。
- 克隆仓库:使用 Git 克隆该仓库到本地:
git clone https://github.com/MCP-Mirror/AndrewDonelson_go-mcp-server-service cd AndrewDonelson_go-mcp-server-service - 构建项目:
- 开发构建 (包含调试信息和 race detection):
这将为所有平台构建所有组件。也可以使用 'make dev-windows', 'make dev-linux', 'make dev-darwin' 分别构建特定平台的版本。make dev - 发布构建 (优化和精简):
这将为所有平台构建优化版本。同样可以使用 'make release-windows', 'make release-linux', 'make release-darwin' 构建特定平台版本。make release-all - 构建产物位于 'bin' 目录下的 'dev' 或 'release' 文件夹中,根据构建类型和平台的不同,路径例如 'bin/dev/darwin/notes-server'。
- 开发构建 (包含调试信息和 race detection):
服务器配置
MCP 客户端需要配置 MCP 服务器的启动命令才能连接并使用其功能。以下是针对 Claude Desktop 客户端的配置示例,其他 MCP 客户端的配置方式类似,但配置文件位置和格式可能有所不同。
Claude Desktop 配置位置:
- macOS: '~/Library/Application\ Support/Claude/claude_desktop_config.json'
- Windows: '%APPDATA%/Claude/claude_desktop_config.json'
开发配置示例 (运行命令行程序):
{ "mcpServers": { "notes-server": { "command": "./bin/dev/<platform>/notes-server", // 服务器启动命令,需要根据实际平台修改 <platform> 为 darwin, linux 或 windows "args": [] // 启动参数,这里为空 } } }
发布配置示例 (作为服务运行):
{ "mcpServers": { "notes-server": { "command": "./bin/release/<platform>/notes-service", // 服务器启动命令,需要根据实际平台修改 <platform> "args": [] // 启动参数,这里为空 } } }
注意:
- '<platform>' 需要替换为实际的操作系统平台,例如 'darwin' (macOS), 'linux', 'windows'。
- 'command' 字段需要指向构建生成的服务器程序的可执行文件路径。
- 'args' 字段可以用于传递启动参数,本示例中不需要额外的启动参数,因此为空数组。
基本使用方法
-
启动 MCP 服务器:
- 命令行方式:在项目根目录下,运行以下命令启动命令行版本的服务器:
make run-cmd - 服务方式:将 'service/main.go' 构建为系统服务后,可以使用操作系统的服务管理工具 (如 'systemctl' 或 'Service Manager') 启动、停止和管理 'notes-service' 服务。 具体操作请参考 'service/main.go' 文件中的说明。
- 命令行方式:在项目根目录下,运行以下命令启动命令行版本的服务器:
-
使用 MCP 客户端连接服务器:配置 MCP 客户端 (例如 Claude Desktop) 连接到该服务器。客户端会通过 JSON-RPC 协议与服务器进行通信,调用服务器提供的资源、Prompt 和工具。
-
调试 (推荐使用 MCP Inspector): 项目推荐使用 MCP Inspector 进行调试。在项目根目录下运行:
npx @modelcontextprotocol/inspector ./bin/dev/<platform>/notes-serverInspector 会提供一个调试界面的 URL,方便开发者查看请求和响应,以及进行更深入的调试。
信息
分类
开发者工具