SupaMCP服务器使用说明

项目简介

SupaMCP 是一个用 C 语言实现的跨平台 MCP 服务器,旨在为大型语言模型(LLM)客户端提供资源和工具服务。它不仅支持标准 MCP 协议,还具备网关模式,能够路由请求到下游 MCP 服务器,提供灵活和可扩展的上下文服务框架。

主要功能点

  • 跨平台支持: 可在 Windows、macOS 和 Linux 系统上运行。
  • 多种传输协议: 支持 Stdio 和 TCP 传输协议,预留 WebSocket 扩展。
  • 资源管理: 托管和管理本地资源,提供数据访问能力。
  • 工具注册与执行: 注册和执行本地工具,允许 LLM 调用外部功能。
  • MCP 网关模式: 可配置为网关,将请求路由到下游 MCP 服务器,实现多服务器联动。
  • 可扩展架构: 模块化设计,易于扩展和定制资源、工具及传输协议。
  • 日志系统: 提供完善的日志记录功能,支持不同级别和文件输出。

安装步骤

  1. 环境准备:

    • 确保已安装 CMake (3.10 或更高版本) 和 C99 兼容的编译器。
    • 在类 Unix 系统 (Linux/macOS) 上,确认已安装 pthread 库。
  2. 构建步骤:

    • 创建构建目录:
      mkdir build
      cd build
    • 使用 CMake 配置项目:
      cmake ..
    • 编译项目:
      make
    • (可选)运行测试:
      make test
    • (可选)安装到系统目录:
      sudo make install
    • Windows 系统构建步骤类似,请参考仓库 README.md 中 Windows 构建指南。
  3. 构建产物:

    • '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 传输时客户端连接使用)。

基本使用方法

  1. 启动服务器:

    • 根据选择的传输协议,使用相应的命令启动 'mcp_server' 可执行文件,例如:
      • Stdio 传输: './mcp_server'
      • TCP 传输: './mcp_server --tcp --host 127.0.0.1 --port 8080'
    • 可以根据需要添加其他命令行选项,例如 '--log-file' 或 '--log-level'。
  2. 使用客户端:

    • 使用仓库中提供的 '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" 部分。

信息

分类

开发者工具