这是一个使用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 配置文件或命令行参数设置日志级别、日志文件、资源文件根目录等。
- 能力声明: 在初始化握手时向客户端声明服务器支持的功能。
安装步骤
- 确保您的系统已安装 Go 语言环境。
- 克隆 'sqirvy-mcp' 仓库到本地。
- 进入仓库目录。
- 使用 '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与计算