使用说明
项目简介
go-mcp-server-service 是一个使用 Go 语言开发的 MCP (Model Context Protocol) 服务器示例,专注于笔记管理。它演示了如何构建一个符合 MCP 协议的后端服务,可以与支持 MCP 协议的 LLM 客户端(如 Claude Desktop)进行交互,提供笔记资源的访问、Prompt 模板的渲染和工具的调用。
主要功能点
- 资源 (Resources) 管理:
- 提供笔记的存储和访问,使用自定义 'note://' URI scheme。
- 支持获取笔记的元数据(名称、描述、MIME类型)和内容。
- 实现了线程安全的并发访问控制。
- Prompt 模板 (Prompts):
- 内置 'summarize-notes' Prompt,用于总结所有笔记内容。
- 支持可选参数 'style' (brief/detailed) 定制总结风格。
- Prompt 模板可以安全地访问笔记资源。
- 工具 (Tools) 注册与执行:
- 内置 'add-note' 工具,用于向服务器添加新的笔记。
- 工具执行是线程安全的,保证状态更新的一致性。
- JSON-RPC 2.0 协议:
- 完全兼容 JSON-RPC 2.0 协议,确保与 MCP 客户端的标准化通信。
- 跨平台支持:
- 支持 Windows, Linux, macOS 等多种操作系统。
- 开发与发布构建:
- 提供 Makefile 文件,支持便捷的开发和发布构建流程。
- 开发构建包含调试信息和 race detection,发布构建优化性能并去除调试信息。
- 命令行接口与服务组件:
- 提供命令行接口 ('cmd') 用于直接运行和测试服务器功能。
- 提供服务组件 ('service'),可以将服务器注册为系统服务在后台运行。
安装步骤
- 安装 Go 环境: 确保已安装 Go 1.21 或更高版本,并配置好 Go 开发环境。
- 安装 GNU Make: 确保已安装 GNU Make 或兼容的构建工具。
- 克隆仓库:
git clone https://github.com/AndrewDonelson/go-mcp-server-service.git cd go-mcp-server-service - 构建服务器:
- 开发构建 (包含调试信息):
构建产物位于 'bin/dev/<platform>/' 目录,例如 'bin/dev/darwin/notes-server' (macOS)。make dev - 发布构建 (优化性能):
构建产物位于 'bin/release/<platform>/' 目录,例如 'bin/release/linux/notes-service' (Linux)。make release-all
- 开发构建 (包含调试信息):
服务器配置
MCP 服务器主要通过标准输入输出 (stdio) 与客户端通信。MCP 客户端需要配置 MCP 服务器的启动命令才能建立连接。以下是 Claude Desktop 客户端的 MCP 服务器配置示例 (JSON 格式):
开发配置 (以 macOS 平台为例):
{ "mcpServers": { "notes-server": { "command": "./bin/dev/darwin/notes-server", "args": [] // 启动参数,本示例无需参数 } } }
发布配置 (以 Linux 平台服务组件为例):
{ "mcpServers": { "notes-server": { "command": "./bin/release/linux/notes-service", "args": [] // 启动参数,本示例无需参数 } } }
配置说明:
- '"mcpServers"': Claude Desktop 客户端的 MCP 服务器配置 सेक्शन。
- '"notes-server"': 自定义的服务器名称,客户端通过此名称引用该服务器。
- '"command"': MCP 服务器可执行文件的路径。请根据实际构建平台和构建类型 (dev/release) 修改路径。
- '"args"': 启动服务器时需要传递的命令行参数,本示例的 'notes-server' 无需额外参数,因此为空数组 '[]'。
Claude Desktop 客户端配置文件位置:
- macOS: '~/Library/Application\ Support/Claude/claude_desktop_config.json'
- Windows: '%APPDATA%/Claude/claude_desktop_config.json'
基本使用方法
-
启动 MCP 服务器:
- 命令行方式: 在仓库根目录下,运行以下命令启动开发构建的服务器 (以 macOS 为例):
或直接执行 'bin/dev/darwin/notes-server'。make run-cmd - 服务方式: 对于发布构建的服务组件,可以将其注册为系统服务并启动 (具体操作请参考操作系统服务管理文档)。
- 命令行方式: 在仓库根目录下,运行以下命令启动开发构建的服务器 (以 macOS 为例):
-
配置 MCP 客户端: 根据上述 “服务器配置” 部分,配置 MCP 客户端 (如 Claude Desktop) 连接到 'notes-server'。
-
通过 MCP 客户端与服务器交互: 客户端启动后,即可通过 MCP 协议与 'notes-server' 进行通信,例如:
- 列出资源: 客户端请求 'list_resources' 方法,服务器返回所有可用笔记资源的列表。
- 读取资源: 客户端请求 'read_resource' 方法,并提供笔记资源的 URI (例如 'note://internal/example-note'),服务器返回笔记内容。
- 列出 Prompt 模板: 客户端请求 'list_prompts' 方法,服务器返回所有可用 Prompt 模板的列表 (当前为 'summarize-notes')。
- 获取 Prompt 模板: 客户端请求 'get_prompt' 方法,指定 Prompt 名称 (例如 'summarize-notes') 和可选参数,服务器返回渲染后的 Prompt 消息。
- 列出工具: 客户端请求 'list_tools' 方法,服务器返回所有可用工具的列表 (当前为 'add-note')。
- 调用工具: 客户端请求 'call_tool' 方法,指定工具名称 (例如 'add-note') 和参数 (例如 '{"name": "my-note", "content": "This is my note content"}'), 服务器执行工具并返回结果。
-
调试 (可选): 可以使用 MCP Inspector 工具 ('npx @modelcontextprotocol/inspector ./bin/dev/<platform>/notes-server') 调试服务器与客户端的 JSON-RPC 通信过程。
通过以上步骤,您可以快速搭建并体验基于 go-mcp-server-service 的 MCP 笔记管理服务器。
信息
分类
开发者工具