这是一个使用Go语言实现的 Model Context Protocol (MCP) 服务器示例。它实现了MCP协议的核心功能,允许 LLM 客户端通过标准输入/输出 (STDIO) 与其通信,获取上下文信息和调用外部功能。

项目简介

'sqirvy-mcp' 项目提供了一个 MCP 服务器的基础框架和示例实现。它包含用于处理 MCP 协议消息的核心库 ('pkg/mcp') 和一个基于该库构建的可运行服务器 ('cmd/sqirvy-mcp')。

主要功能点

  • 资源访问: 支持 LLM 客户端通过统一资源标识符 (URI) 读取服务器托管的资源。目前支持读取本地文件 ('file://') 和按需生成随机数据 ('data://random_data?length=N')。
  • 工具调用: 允许 LLM 客户端调用服务器注册的外部工具。示例中包含一个用于执行网络 'ping' 命令的工具。
  • Prompt模板: 提供预定义的 Prompt 模板,客户端可以获取并使用这些模板进行交互。示例中包含一个简单的 'query' 模板。
  • MCP协议支持: 实现了 MCP 协议中的 'initialize', 'ping', 'resources/list', 'resources/read', 'resources/templates/list', 'tools/list', 'tools/call', 'prompts/list', 'prompts/get' 等核心方法。
  • JSON-RPC通信: 基于 JSON-RPC 2.0 协议进行消息交换。
  • STDIO传输: 通过标准输入 (stdin) 接收请求,通过标准输出 (stdout) 发送响应和通知。
  • 配置管理: 支持通过 YAML 配置文件或命令行参数设置日志级别、日志文件、资源文件根目录等。
  • 能力声明: 在初始化握手时向客户端声明服务器支持的功能。

安装步骤

  1. 确保您的系统已安装 Go 语言环境。
  2. 克隆 'sqirvy-mcp' 仓库到本地。
  3. 进入仓库目录。
  4. 使用 'make' 命令构建服务器可执行文件。
git clone https://github.com/dmh2000/sqirvy-mcp.git
cd sqirvy-mcp
make -C cmd build

构建成功后,可执行文件 'mcp-server' 将位于 'cmd/bin/' 目录下。

服务器配置

MCP 客户端需要知道如何启动和连接到 MCP 服务器。对于 'sqirvy-mcp' 服务器,它通过 STDIO 传输,这意味着客户端需要配置用于启动服务器进程的命令及其参数。

以下是一个 MCP 客户端可能使用的 JSON 格式的服务器配置示例(请根据您的实际文件路径进行调整):

{
  "server name": "Sqirvy Go Example Server",
  "command": "/path/to/your/sqirvy-mcp/cmd/bin/mcp-server",
  "args": [
    "--project-root", "/path/to/your/local/data/directory",
    "--log-level", "DEBUG",
    "--log", "/path/to/your/server.log",
    "--config", "/path/to/your/server.yaml"
  ]
}

参数说明:

  • 'server name': 客户端用于标识此服务器的任意名称。
  • 'command': 指向服务器可执行文件的完整路径
  • 'args': 启动服务器时传递的命令行参数列表(可选)。
    • '--project-root': 设置文件资源 ('file://') 的根目录,客户端请求 'file:///relative/path' 时,服务器会尝试读取 '/path/to/your/local/data/directory/relative/path'。
    • '--log-level': 设置日志输出级别(例如 'DEBUG', 'INFO', 'WARNING', 'ERROR')。
    • '--log': 指定日志文件的路径,服务器会将日志输出到此文件。
    • '--config': 指定 YAML 配置文件的路径,此文件中的设置会被加载,命令行参数优先级更高。

您可以在 'cmd/sqirvy-mcp/config.go' 中查看默认配置和参数解析逻辑。

基本使用方法

该服务器主要设计为由 MCP 客户端进程启动和交互。客户端会启动 'mcp-server' 进程,并通过其标准输入和标准输出进行 JSON-RPC 消息的发送和接收。

您也可以手动运行服务器进行测试(日志将输出到配置的日志文件,如果没有配置日志文件,则输出到默认位置):

cd sqirvy-mcp/cmd/bin/
./run.sh --project-root /some/directory --log-level DEBUG --log ./server.log

然后可以使用一个 MCP 客户端工具(如 'mcp-inspector')连接到该服务器进程的 STDIO 接口进行交互。

信息

分类

AI与计算