使用说明

项目简介

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'),可以将服务器注册为系统服务在后台运行。

安装步骤

  1. 安装 Go 环境: 确保已安装 Go 1.21 或更高版本,并配置好 Go 开发环境。
  2. 安装 GNU Make: 确保已安装 GNU Make 或兼容的构建工具。
  3. 克隆仓库:
    git clone https://github.com/AndrewDonelson/go-mcp-server-service.git
    cd go-mcp-server-service
  4. 构建服务器:
    • 开发构建 (包含调试信息):
      make dev
      构建产物位于 'bin/dev/<platform>/' 目录,例如 'bin/dev/darwin/notes-server' (macOS)。
    • 发布构建 (优化性能):
      make release-all
      构建产物位于 'bin/release/<platform>/' 目录,例如 'bin/release/linux/notes-service' (Linux)。

服务器配置

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'

基本使用方法

  1. 启动 MCP 服务器:

    • 命令行方式: 在仓库根目录下,运行以下命令启动开发构建的服务器 (以 macOS 为例):
      make run-cmd
      或直接执行 'bin/dev/darwin/notes-server'。
    • 服务方式: 对于发布构建的服务组件,可以将其注册为系统服务并启动 (具体操作请参考操作系统服务管理文档)。
  2. 配置 MCP 客户端: 根据上述 “服务器配置” 部分,配置 MCP 客户端 (如 Claude Desktop) 连接到 'notes-server'。

  3. 通过 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"}'), 服务器执行工具并返回结果。
  4. 调试 (可选): 可以使用 MCP Inspector 工具 ('npx @modelcontextprotocol/inspector ./bin/dev/<platform>/notes-server') 调试服务器与客户端的 JSON-RPC 通信过程。

通过以上步骤,您可以快速搭建并体验基于 go-mcp-server-service 的 MCP 笔记管理服务器。

信息

分类

开发者工具