Swift MCP实现

一个全面的Swift实现,展示多种传输机制用于客户端-服务器通信的Model Context Protocol (MCP)。

  • by koaWood
  • Swift
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 koaWood/swiftMCP

使用说明

swiftMCP

Swift的全面实现 模型上下文协议(MCP),演示了客户端-服务器通信的多种传输机制。

概述

swiftMCP提供了Swift中MCP客户端和服务器的完整工作示例,展示了三种不同的传输实现:

  • 标准 -基于过程的通信的标准输入/输出传输
  • httpPOST -基于HTTP POST的Hummingbird web框架传输
  • httpGET -带有服务器发送事件(SSE)的HTTP GET用于流式响应

每个示例都包括客户端和服务器实现,从而很容易理解MCP如何在不同的传输层上工作。

这些例子旨在逐步相互借鉴。从...开始 第一阶段(_S) 使用最简单的传输机制学习MCP的核心概念。一旦你了解了基本原理,就转到 2_httpPOST 查看同一协议如何在HTTP上使用请求-响应模式工作。最后,探索 3_httpGET 了解服务器发送事件的实时流响应。此学习路径将您从基本的流程通信带到更复杂的web服务架构。

什么是MCP?

模型上下文协议是用于AI助手和外部工具/服务之间通信的标准化协议。它能够:

  • 工具发现 -动态列出可用功能
  • 工具调用 -使用结构化参数执行工具
  • 资源访问 -读取和操作外部资源
  • 提示 -常见任务的模板化交互

项目结构

swiftMCP/
├── 1_stdio/           # Standard I/O transport example
│   ├── client/        # Swift client using subprocess pipes
│   └── server/        # Swift server using stdin/stdout
├── 2_httpPOST/        # HTTP POST transport example
│   ├── client/        # Swift HTTP client
│   ├── server/        # Hummingbird-based HTTP server
│   └── web-client.html # Browser-based client
├── 3_httpGET/         # HTTP GET + SSE transport example
│   ├── client/        # Swift HTTP client with streaming
│   ├── server/        # Hummingbird server with SSE support
│   └── web-client.html # Browser client with event streaming
└── common/            # Shared code
    ├── tools/         # Reusable tool implementations
    └── util/          # Common utilities (JSON-RPC, debug, etc.)

需求

  • macOS 14.0或更高版本
  • Swift 6.1或更高版本
  • Xcode 16.0或更高版本(用于开发)

入门指南

1.stdio传输示例

使用标准输入/输出的最简单示例:

cd 1_stdio/client
swift run

这将:

  1. 将服务器作为子进程启动
  2. 通过stdin/stdout管道连接到它
  3. 列出可用工具
  4. 调用工具
  5. 显示结果

2.httpPOST传输示例

基于HTTP的通信:

# Terminal 1 - Start the server
cd 2_httpPOST/server
swift run

# Terminal 2 - Run the client
cd 2_httpPOST/client
swift run

或打开 2_httpPOST/web-client.html 在浏览器中使用web界面。

3.httpGET传输示例

使用服务器发送的事件流式传输HTTP:

# Terminal 1 - Start the server
cd 3_httpGET/server
swift run

# Terminal 2 - Run the client
cd 3_httpGET/client
swift run

或打开 3_httpGET/web-client.html 在用于流式网络界面的浏览器中。

特性

运输实施

  • 标准运输 -高效的流程间沟通
  • HTTP传输 -与JSON-RPC的RESTful API通信
  • SSE运输 -实时流媒体更新

基础功能类库

  • JSON-RPC 2.0 -全面实施请求/响应处理
  • 工具框架 -可扩展的工具注册和调用
  • 健康检查 -服务器健康监控
  • 调试实用程序 -综合测井系统
  • 通知 -事件通知支持

示例工具

  • 工具_1 -系统LINUX命令(Swift版本检查)
  • 工具_2 -自定义方法处理程序演示
  • 工具_3 -流数据演示

建筑

每个示例都遵循相同的模式:

  1. 服务器安装程序

    • 用功能初始化MCP服务器
    • 注册工具处理程序
    • 启动传输侦听器
  2. 客户端连接

    • 创建MCP客户端
    • 通过所选传输连接
    • 初始化握手
  3. 工具操作

    • 列出可用工具
    • 使用参数调用工具
    • 处理响应

依赖项

该项目使用官方 MCP Swift SDK:

.package(url: "https://github.com/modelcontextprotocol/swift-sdk.git", from: "0.10.2")

HTTP示例还使用:

.package(url: "https://github.com/hummingbird-project/hummingbird.git", from: "2.0.0")

发展

建筑

# Build a specific example
cd 1_stdio/client
swift build

# Build in release mode
swift build -c release

用例

  • AI助手集成 -将AI模型连接到外部工具
  • 开发工具 -构建IDE插件和开发助手
  • 自动化 -使用工具编排创建自动化工作流
  • 学习 -了解Swift中MCP协议的实现

贡献

欢迎投稿!请随时提交问题或拉取请求。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

资源

致谢

使用Model Context Protocol组织的官方Model Context Protocol Swift SDK构建。


存储库: github.com/koawood/swiftMCP