mcpField
G
go-mcp-server-service

go-mcp-server-service

本地服务
github.com/AndrewDonelson开发工具1100 周前更新

关于 go-mcp-server-service

这是一个用于笔记管理的 Go MCP 服务示例和项目模板,包含命令行与服务组件,并提供开发和发布构建配置。

主要功能

  1. 01符合 JSON-RPC 2.0 的 API
  2. 02线程安全的笔记存储
  3. 03使用自定义 URI 的笔记资源
  4. 04添加笔记工具与总结提示词
  5. 05命令行和后台服务组件

适用场景

  1. 01以笔记管理示例构建 Go MCP 服务
  2. 02存储笔记并供 MCP 客户端访问

MCP 相关

向 MCP 客户端提供自定义 `note://` URI 笔记资源、`add-note` 工具和 `summarize-notes` 提示词。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"go-mcp-server-service": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
启动命令npx -y @modelcontextprotocol/inspector

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@modelcontextprotocol/inspector

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

go-mcp-server-service

一个符合 JSON-RPC 2.0 标准的服务器示例,用于实现模型上下文协议(MCP)并管理笔记

这是一个示例。你可以修改它,并将其用作自己项目的模板。它支持跨平台开发,并包含命令行界面和服务组件,可用于开发版和发布版构建。

功能

  • 符合 JSON-RPC 2.0 标准的 API
  • 跨平台支持(Windows、Linux、macOS)
  • 线程安全的笔记管理
  • 开发版和发布版构建配置
  • 服务和命令行界面组件

组件

命令行界面(cmd)

命令行界面可直接访问笔记服务的功能。

服务(service)

服务组件支持系统级集成和后台运行。

资源

服务器实现了一个笔记存储系统,具有以下特性:

  • 用于访问单条笔记的自定义 note:// URI 方案
  • 包含名称、描述和 MIME 类型的资源元数据
  • 线程安全的并发访问
提示词

可用的提示词:

  • summarize-notes:汇总所有已存储的笔记
    • 可选的 style 参数(“brief”/“detailed”)
    • 根据风格偏好汇总所有当前笔记
    • 线程安全的笔记访问
工具

可用的工具:

  • add-note:向服务器添加一条新笔记
    • 必需参数:name(字符串)、content(字符串)
    • 线程安全的状态更新
    • 返回确认消息

构建

先决条件
  • Go 1.21 或更高版本
  • GNU Make 或兼容的构建工具
  • Git(用于版本信息)
构建命令

开发版构建(包含调试符号和竞态检测):

# Build all components for all platforms
make dev

# Build for specific platform
make dev-windows
make dev-linux
make dev-darwin

# Build specific components
make build-cmd
make build-service

发布版构建(已优化并剥离符号):

# Build all components for all platforms
make release-all

# Build for specific platform
make release-windows
make release-linux
make release-darwin

在本地运行:

# Run command-line interface
make run-cmd

# Run service
make run-service

查看所有可用目标:

make help
构建输出

二进制文件会生成在 bin 目录中:

  • 开发版构建:bin/dev/<platform>/
  • 发布版构建:bin/release/<platform>/

配置

Claude Desktop 集成

在 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",
      "args": []
    }
  }
}
发布配置(服务示例)
{
  "mcpServers": {
    "notes-server": {
      "command": "./bin/release/<platform>/notes-service",
      "args": []
    }
  }
}

开发

项目结构
.
├── cmd/                    # Command-line interface
├── service/               # Service implementation
├── internal/
│   └── server/           # Core server implementation
│       ├── operations.go # Server operations
│       ├── server.go    # Main server logic
│       └── types.go     # Type definitions
├── Makefile              # Build configuration
└── README.md
调试

由于服务器通过 stdio 运行,我们建议使用 MCP Inspector 进行调试:

npx @modelcontextprotocol/inspector ./bin/dev/<platform>/notes-server

Inspector 会提供一个用于调试界面的 URL。

错误代码

服务器实现了标准 JSON-RPC 2.0 错误代码,以及自定义代码:

代码描述标准
-32700解析错误是
-32600请求无效是
-32601找不到方法是
-32602参数无效是
-32603内部错误是
-32001找不到资源否
-32002不支持的操作否

许可证

MIT 许可证

Copyright (c) 2024 Andrew Lee Donelson

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。