使用说明

项目简介

SwiftMCP 是一个 Swift 库,用于简化 Model Context Protocol (MCP) 服务器的创建。它利用 Swift 宏来自动化将 Swift 函数暴露为 MCP 兼容工具的过程,处理 JSON-RPC 通信,并管理服务器配置。

主要功能点

  • 宏驱动的 API: 使用 '@MCPServer' 和 '@MCPTool' 宏,轻松定义 MCP 服务器和工具。
  • 自动文档提取: 从 Swift 代码注释中提取工具的元数据(参数名、类型、描述)。
  • JSON-RPC 接口: 完全兼容 MCP 规范的 JSON-RPC 接口,支持 'initialize', 'tools/list', 'tools/call' 等方法。
  • Stdio 传输模式: 支持通过标准输入/输出进行 MCP 通信,适用于本地开发和测试。

安装步骤

由于 SwiftMCP 是一个 Swift 库,通常通过 Swift Package Manager (SPM) 进行集成。

  1. 添加依赖: 在你的 'Package.swift' 文件中,将 SwiftMCP 添加到 dependencies 数组中:

    dependencies: [
        .package(url: "https://github.com/Cocoanetics/SwiftMCP", from: "最新版本号") // 请替换为实际的版本号
    ]

    请访问仓库 https://github.com/Cocoanetics/SwiftMCP 查看最新的版本号并替换 'from: "最新版本号"'。

  2. 在你的目标中引入: 在你的 target 中引入 SwiftMCP:

    targets: [
        .executableTarget(
            name: "YourExecutableName", // 你的可执行文件名
            dependencies: ["SwiftMCP"]),
    ]

服务器配置

MCP 客户端需要配置 MCP 服务器的启动命令才能连接。对于使用 SwiftMCP 构建的服务器,配置信息通常如下:

{
  "server_name": "你的服务器名称",  //  在 @MCPServer 宏中定义的服务器名称,例如 "MyCalculator"
  "command": "./你的可执行文件名", //  编译后的 Swift 可执行文件的路径,例如 "./YourExecutableName"
  "args": []                            //  启动参数,通常为空数组
}
  • 'server_name': 在你的 Swift 服务器类定义中,使用 '@MCPServer(name: "...")' 指定的名称。
  • 'command': 这是编译 Swift 项目后生成的可执行文件的路径。你需要先使用 SwiftPM 构建你的项目,然后在 ' .build/debug/' 或 ' .build/release/' 目录下找到可执行文件。例如,如果你的 target 名称是 "MyMCPApp",则可执行文件路径可能是 './.build/debug/MyMCPApp'。
  • 'args': 启动服务器时需要传递的命令行参数,如果不需要则为空数组。

重要提示: 请根据你的 Swift 项目实际编译生成的可执行文件名和路径,替换上述 'command' 字段。

基本使用方法

  1. 创建 MCP 服务器类: 使用 '@MCPServer' 宏注解你的 Swift 类,定义服务器名称和版本。
  2. 定义 MCP 工具函数: 在服务器类中,使用 '@MCPTool' 宏注解你的函数,使其成为 MCP 工具。添加详细的文档注释,SwiftMCP 会自动提取这些信息。
  3. 实现 stdio 处理循环: 参考 README.md 中的示例代码,实现一个读取标准输入、处理 JSON-RPC 请求、并将响应输出到标准输出的循环。
  4. 构建和运行: 使用 SwiftPM 构建你的项目 ('swift build'),然后运行生成的可执行文件 ('./.build/debug/你的可执行文件名')。
  5. MCP 客户端交互: 使用 MCP 客户端向你的服务器发送 JSON-RPC 请求,服务器会通过标准输出返回响应。

信息

分类

开发者工具