SupaMCP服务器使用说明
项目简介
SupaMCP 是一个用 C 语言实现的跨平台 MCP 服务器,旨在为大型语言模型(LLM)客户端提供资源和工具服务。它不仅支持标准 MCP 协议,还具备网关模式,能够路由请求到下游 MCP 服务器,提供灵活和可扩展的上下文服务框架。
主要功能点
- 跨平台支持: 可在 Windows、macOS 和 Linux 系统上运行。
- 多种传输协议: 支持 Stdio 和 TCP 传输协议,预留 WebSocket 扩展。
- 资源管理: 托管和管理本地资源,提供数据访问能力。
- 工具注册与执行: 注册和执行本地工具,允许 LLM 调用外部功能。
- MCP 网关模式: 可配置为网关,将请求路由到下游 MCP 服务器,实现多服务器联动。
- 可扩展架构: 模块化设计,易于扩展和定制资源、工具及传输协议。
- 日志系统: 提供完善的日志记录功能,支持不同级别和文件输出。
安装步骤
-
环境准备:
- 确保已安装 CMake (3.10 或更高版本) 和 C99 兼容的编译器。
- 在类 Unix 系统 (Linux/macOS) 上,确认已安装 pthread 库。
-
构建步骤:
- 创建构建目录:
mkdir build cd build - 使用 CMake 配置项目:
cmake .. - 编译项目:
make - (可选)运行测试:
make test - (可选)安装到系统目录:
sudo make install - Windows 系统构建步骤类似,请参考仓库 README.md 中 Windows 构建指南。
- 创建构建目录:
-
构建产物:
- 'libmcp_common.a' (或 Windows 下的 'mcp_common.lib'): 静态链接库,包含服务器和客户端共享代码。
- 'mcp_server': 服务器可执行文件。
- 'mcp_client': 客户端可执行文件。
服务器配置
MCP 服务器主要通过命令行参数进行配置。以下是一个 MCP 客户端连接 SupaMCP 服务器的配置示例 (JSON 格式),展示了 'command' 和 'args' 字段的配置方法:
{ "serverName": "SupaMCP Server", "command": "/path/to/supamcp/build/mcp_server", "args": [ "--stdio" ], "transport": "stdio" }
或者使用 TCP 传输:
{ "serverName": "SupaMCP Server (TCP)", "command": "/path/to/supamcp/build/mcp_server", "args": [ "--tcp", "--host", "127.0.0.1", "--port", "8080" ], "transport": "tcp", "host": "127.0.0.1", "port": 8080 }
参数说明:
- 'serverName': MCP 服务器的名称,客户端用于标识连接。
- 'command': 启动 SupaMCP 服务器可执行文件的命令路径。请根据实际构建路径修改。
- 'args': 传递给 'mcp_server' 可执行文件的命令行参数,用于配置服务器行为,例如:
- '--stdio': 使用标准输入输出进行通信 (默认)。
- '--tcp': 启用 TCP 传输模式。
- '--host HOST': 指定服务器绑定的主机地址 (TCP 模式下使用)。默认为 '127.0.0.1'。
- '--port PORT': 指定服务器监听的端口号 (TCP 模式下使用)。默认为 '8080'。
- '--log-file FILE': 指定日志输出文件路径。
- '--log-level LEVEL': 设置日志级别 (error, warn, info, debug)。默认为 'info'。
- '--api-key KEY': 设置 API 密钥进行身份验证。
- '--daemon': 以守护进程模式运行 (仅限类 Unix 系统)。
- '--gateway': 启用 MCP 网关模式,需要 'gateway_config.json' 配置文件。
- 'transport': 客户端与服务器通信的传输协议,与服务器配置保持一致。
- '"stdio"': 用于 Stdio 传输。
- '"tcp"': 用于 TCP 传输。
- 'host': MCP 服务器主机地址 (TCP 传输时客户端连接使用)。
- 'port': MCP 服务器端口号 (TCP 传输时客户端连接使用)。
基本使用方法
-
启动服务器:
- 根据选择的传输协议,使用相应的命令启动 'mcp_server' 可执行文件,例如:
- Stdio 传输: './mcp_server'
- TCP 传输: './mcp_server --tcp --host 127.0.0.1 --port 8080'
- 可以根据需要添加其他命令行选项,例如 '--log-file' 或 '--log-level'。
- 根据选择的传输协议,使用相应的命令启动 'mcp_server' 可执行文件,例如:
-
使用客户端:
- 使用仓库中提供的 'mcp_client' 可执行文件或任何兼容的 MCP 客户端连接到 SupaMCP 服务器。
- 使用客户端命令与服务器交互,例如:
- 列出资源: 'mcp_client --list-resources'
- 读取资源: 'mcp_client --read-resource example://hello'
- 调用工具: 'mcp_client --call-tool echo '{"text":"Hello, world!"}''
- 客户端的具体命令和选项请参考仓库 README.md 中客户端使用说明。
网关模式使用
- 如果需要使用网关模式,启动服务器时添加 '--gateway' 标志: './mcp_server --gateway'
- 网关模式需要配置 'gateway_config.json' 文件,该文件定义了后端 MCP 服务器的地址和路由规则。
- 'gateway_config.json' 文件示例请参考仓库 README.md。
- 网关模式允许将特定资源或工具的请求路由到不同的后端服务器,实现更复杂的 MCP 服务架构。
扩展功能
- SupaMCP 服务器支持通过 C 语言扩展资源和工具。
- 可以实现自定义的资源处理函数和工具处理函数,并将其注册到服务器中。
- 扩展资源的示例代码请参考仓库 README.md 中 "Extending -> Adding Resources" 部分。
- 扩展工具的示例代码请参考仓库 README.md 中 "Extending -> Adding Tools" 部分。
信息
分类
开发者工具