SilbercueSwift
](https://github.com/silbercue/SilbercueSwift/releases)       
用于iOS开发的最快、最完整的MCP服务器。一个Swift二进制文件,58个工具,零依赖。 SilbercueSwift拥有最完整的工具集。
正在寻找现有iOS MCP服务器的替代品? SilbercueSwift在一个二进制文件中涵盖了XcodeBuildMCP、Appium MCP和iosef的全部功能集,以及xcresult解析、UI自动化、代码覆盖率和高达75倍的屏幕截图速度。 请参阅下面的比较.
为什么选择SilbercueSwift?
每个iOS MCP服务器都有同样的问题: 原始的xcodebuild输出对AI代理毫无用处。 500行构建日志,stderr噪声被误认为错误,没有结构化的测试结果。代理浪费几分钟来解析人类在几秒钟内看到的东西。
SilbercueSwift修复了这个问题。它解析 .xcresult bundles——Xcode内部使用的相同结构化数据——并返回代理所需的内容:通过/失败计数、带file:行的失败消息、每个文件的代码覆盖率和失败截图。
| 您将获得什么 | XcodeBuildMCP | Appium MCP | iosef | SilbercueSwift |
|---|---|---|---|---|
| 屏幕截图延迟 | ~1127毫秒 | ~77毫秒 | ~83毫秒 | 约316毫秒 |
| ( ~15ms,75倍) | ||||
| 视图层次结构 | ~259ms | ~938ms | ~44ms | 约31毫秒 |
| ( ~5ms) | ||||
| 查找元素 | -- | 76ms | 50ms | 31毫秒 |
( \ 屏幕截图速度提高75倍** --约316毫秒( ~15ms)
免费层截图(约316ms)比XcodeBuildMCP(约1127ms)和大多数替代品更快。Pro将延迟降至约15ms,比Appium快5倍,比XcodeBuildMCP快75倍。特工可以在任何一层自由截图,而不会受到惩罚。
xcresult包的结构化测试结果 --对失败零猜测
当测试失败时,代理会收到错误消息、确切的file:行、失败状态的屏幕截图,以及可选的控制台输出——所有这些都是从Apple的 .xcresult 格式。从500行xcodebuild stderr中无法猜测。这就是“代理知道什么坏了”和“代理猜测什么坏了。”之间的区别。
单一二进制,零依赖 --58个工具,10秒内安装
brew install silbercueswift --完成。8.5MB Swift原生二进制文件。没有Node.js,没有npm,没有Appium服务器,没有Python,没有Java,没有Rust工具链。冷启动约50ms。让iOS MCP服务器运行的最快方法。
代理只读取重要的内容——令牌减少90%,呼叫浪费为零 (主题筛选 )
自由层已经去除了噪声:在捕获时排除了15个已知的噪声过程,并折叠了重复行(I/O减少79%)。Pro添加主题过滤-- read_logs 将行分为8个主题,默认情况下仅显示app+崩溃,并带有菜单: network(87) lifecycle(12) springboard(8)代理在一次调用中打开特定主题——无需猜测,无需迭代。
一次调用以关闭所有权限对话框 --1次往返中有3个警报
每个应用程序在首次启动时显示2-3个权限对话框。其他服务器要求代理进行屏幕截图→ “查找”按钮→ 单击每个对话框。 handle_alert(action: "accept_all") 在一次通话中清除所有内容,在SpringBoard、ContactsUI和活动应用程序中搜索。免费版通过以下方式单独处理警报 accept / dismiss.
使用元素ID拖放 --1个电话,而不是3个
“将项目A拖到项目B上方”是一个单一的调用: drag_and_drop(source_element: "el-0", target_element: "el-1")竞争只支持原始坐标,迫使代理找到这两个元素,提取它们的帧,并构建W3C动作序列——至少3次调用。
自动滚动到屏幕外元素 --不再有手动滑动循环
find_element(using: "accessibility id", value: "Save", scroll: true) 自动滚动,直到元素出现。SmartScroll处理UIKit、SwiftUI和延迟加载列表,无需猜测滚动方向。
在~31ms(免费)/~5ms(专业版)内查看层次结构 --元件检测速度提高188倍
get_source 在~31ms(免费)或~5ms(专业版)内返回完整的UI树。最快的参赛者需要44毫秒,大多数需要250毫秒以上。这使得代理商几乎可以免费进行元件检查。
一次通话导航 --在大约380毫秒内找到+点击+结算+截图
navigate(to: "Settings") 找到元素,点击它,等待屏幕稳定,并返回验证屏幕截图——所有这些都在一次调用中完成。没有竞争对手提供这种服务。代理在每个导航步骤中节省3-4次工具调用。
批量UI自动化 --run_plan执行具有自适应决策的多步骤计划
run_plan 执行一系列UI步骤并在服务器端执行。当一个步骤需要做出决定时(意外对话框,找不到元素),它会通过4个层次回退——从MCP采样到暂停和恢复。不再有“每次点击一次工具调用”的开销。
快速开始
通过 Homebrew 安装
brew tap silbercue/silbercue
brew install silbercueswift或从源代码构建
git clone https://github.com/silbercue/SilbercueSwift.git
cd SilbercueSwift
swift build -c release
cp .build/release/SilbercueSwift /usr/local/bin/在Claude代码中配置
一个命令--为所有项目全局安装:
claude mcp add --scope user SilbercueSwift /opt/homebrew/bin/SilbercueSwift注: 使用完整路径(/opt/homebrew/bin/SilbercueSwift).Claude Code在没有完整shell PATH的情况下启动MCP服务器,因此将找不到裸命令名。在游标中配置
添加 ~/.cursor/mcp.json:
{
"mcpServers": {
"SilbercueSwift": {
"command": "/opt/homebrew/bin/SilbercueSwift"
}
}
}在其他MCP客户端中配置(Cline、Continue等)
任何支持stdio MCP服务器的客户端:指向 /opt/homebrew/bin/SilbercueSwift 没有争论。
卸载
claude mcp remove --scope user SilbercueSwift
brew uninstall silbercueswift
brew untap silbercue/silbercue免费vs专业
SilbercueSwift免费提供49种工具——构建、测试、模拟、自动化UI、捕获日志和截图。没有时间限制,没有注册。
Pro为需要全面了解的团队和高级用户添加了9个工具和更快的内部组件。
| 免费 | 专业版 | |
|---|---|---|
| 构建、测试、sim卡管理 | 49个工具 | 58个工具 |
| 屏幕截图 | ~316ms | ~15ms(快75倍) |
| 结构化测试结果(xcresult) | 是 | 是 |
| 查找元素 | 31ms | **\ |
## 14个类别中的58个工具
### 构建(5个工具)
|工具|说明|
|---|---|
| `build_sim` |iOS模拟器构建-返回结构化错误+缓存捆绑包ID和应用程序路径|
| `build_run_sim` |在一次调用中构建+引导+安装+启动——并行2阶段流水线,比顺序快约9秒|
| `clean` |清理构建工件|
| `discover_projects` |查找.xcodeproj/.xcworkspace文件|
| `list_schemes` |列出可用方案|
### 测试和诊断(4个工具)
|工具|说明|
|---|---|
| `test_sim` |运行测试+结构化xcresult摘要(通过/失败/持续时间)|
| `test_failures` |失败的测试,包括错误消息、文件:行和失败截图|
| `test_coverage` |每个文件的代码覆盖率,可排序和过滤|
| `build_and_diagnose` |来自xcresult的构建+结构化错误/警告|
### 模拟器(12个工具)
|工具|说明|
|---|---|
| `list_sims` |列出可用模拟器|
| `boot_sim` |启动模拟器|
| `shutdown_sim` |关闭模拟器|
| `install_app` |安装.app捆绑包|
| `launch_app` |按捆绑包ID启动应用程序|
| `terminate_app` |终止正在运行的应用程序|
| `clone_sim` |克隆现有模拟器|
| `erase_sim` |擦除模拟器内容和设置|
| `delete_sim` |删除模拟器|
| `set_orientation` |通过WDA旋转设备(肖像、左景观、右景观)|
| `sim_status` |模拟器状态(启动/关闭、设备类型、运行时)|
| `sim_inspect` |详细的模拟器信息(数据路径、日志路径、UDID)|
### UI自动化(16个工具)
手势的原生输入,元素查询和警报的WDA——没有Appium,没有Node.js,没有Python。
|工具|描述|延迟|
|---|---|---|
| `handle_alert` | **接受、解除或批量处理系统和应用内警报** |~200ms|
| `find_element` / `find_elements` |通过可访问性ID、谓词、类链查找元素。 **`scroll: true` 自动滚动** 直到元素出现(SmartScroll--3种回退策略)| **31毫秒**
( **\<1ms**) |
| `click_element` |点击UI元素| **约75毫秒** |
| `tap_coordinates` |基于坐标的点击| **~16ms**
( **~4ms**) |
| `double_tap` / `long_press` |在坐标处双击或长按| **~60ms** / **~1000ms** |
| `swipe` |定向滑动| **约250毫秒** |
| `pinch` |放大/缩小|~400ms |
| `drag_and_drop` | **从源拖动到目标** --元素到元素、坐标或混合。可重新排序列表、看板、滑块的智能默认值| **约1.3秒** |
| `navigate` | **在一次通话中查找+点击+结算+截图** --节省3-4次往返| **约380毫秒** |
| `type_text` / `get_text` |输入或读取元素|~100-300ms|
| `get_source` |全视图层次结构(JSON/XML)| **约31毫秒**
( **~5ms**) |
| `wda_status` / `wda_create_session` |WDA健康检查和会话管理|~50-100ms|
#### handle_alert——最智能的警报处理程序
Accept a single alert with smart defaults
handle_alert(action: "accept")
Dismiss with a specific button label
handle_alert(action: "dismiss", button_label: "Not Now")
Batch-accept ALL alerts after app launch (unique to SilbercueSwift)
handle_alert(action: "accept_all")
**三层警报搜索** --在以下位置查找警报:
1. **跳板** --系统权限对话框(位置、摄像头、跟踪)
1. **联系方式UI** --iOS 18+联系人“限制访问”对话框(单独进程)
1. **活动应用程序** --应用内 `UIAlertController` 对话
**智能默认值** --知道要点击哪个按钮:
- 接受:“允许”→ “使用应用程序时允许”→ "OK" → “继续”→ 最后一个按钮
- 取消:“不允许”(处理Unicode U+2019)→ “取消”→ “现在不行”→ 第一个按钮
**批处理模式** — `accept_all` / `dismiss_all` 在服务器端循环多个连续的警报。一个HTTP往返而不是N。返回每个已处理警报的详细信息。
这些功能超越了其他iOS MCP服务器目前提供的功能。
### 截图(1个工具)
|工具|延迟|
|---|---|
| `screenshot` |免费: **约316毫秒** /优点: **~15ms** |
### 日志(4个工具)
|工具|说明|
|---|---|
| `start_log_capture` | **智能过滤os_log流** --3种模式: `smart` (默认,启用主题过滤), `app` (紧流,自动检测), `verbose` (未经过滤)。消除重复行。 |
| `stop_log_capture` |停止捕获|
| `read_logs` | **主题筛选阅读** --默认设置:app+仅崩溃。响应包括带有行数的主题菜单。通过添加主题 `include` 参数。 |
| `wait_for_log` |等待带有超时的正则表达式模式——消除sleep()技巧|
#### 智能日志过滤——4层,零配置
Start capture (default: smart mode — broad stream, topic filtering enabled)
start_log_capture()
Read logs — default shows only app logs + crashes + topic menu
read_logs()
→ --- 230 buffered, 42 shown [app, crashes] ---
→ Topics: app(35) crashes(2) | network(87) lifecycle(12) springboard(8) widgets(0) background(3) system(83)
→ Hint: include=["network"] to add SSL/TLS + background transfer logs
→ ---
→ [42 filtered lines]
Agent sees network(87) and wants SSL details — one call:
read_logs(include: ["network"])
Narrow stream for production monitoring:
start_log_capture(mode: "app")
Bypass mode logic with explicit predicate:
start_log_capture(subsystem: "com.apple.SwiftUI")
**4个过滤层:**
1. **流侧噪声排除** --在缓冲之前,删除了15个已知的噪声过程+子系统/类别排除 `logd` --I/O减少79%。
1. **3种捕捉模式** — `smart` (默认情况下,用于主题过滤的宽流), `app` (紧密的、自动检测的包ID+进程名称), `verbose` (未经过滤)。
1. **阅读时间主题过滤** — `read_logs` 将每个缓冲行分为8个主题(应用程序、崩溃、网络、生命周期、跳板、小部件、背景、系统)。默认情况下只显示应用程序+崩溃。Agent根据需要添加主题——每次调用都是无状态的。
1. **缓冲区重复数据删除** --60条相同的心跳线变成2条:这条线本身+ `... repeated 59x`.
**LLM优化菜单的8个主题:**
|主题|匹配|用例|
|---|---|---|
| `app` (始终打开)|子系统==bundleId或进程==appName |您的应用程序:os_log、print()、NSLog()|
| `crashes` (始终打开)|故障级别日志|任何进程的崩溃|
| `network` |trusted、nsurlsessiond|SSL/TLS证书、后台传输|
| `lifecycle` |runningboard,com.apple.nrunningboard.\*| Jetsam,内存压力,应用程序杀死|
| `springboard` |SpringBoard |推送通知,应用程序状态|
| `widgets` |chronod|WidgetKit时间线,刷新预算|
| `background` |com.apple.xpc.active.\*|BGTaskScheduler,后台获取|
| `system` |其他内容|警告:音量大|
### 控制台(3个工具)
|工具|说明|
|---|---|
| `launch_app_console` |使用stdout/stderr捕获启动应用程序|
| `read_app_console` |读取控制台输出|
| `stop_app_console` |停止控制台捕获|
### Git(5个工具)
|工具|说明|
|---|---|
| `git_status` / `git_diff` / `git_log` |读取操作|
| `git_commit` / `git_branch` |写入操作|
### 可视化回归(2个工具)
|工具|说明|
|---|---|
| `save_visual_baseline` |将屏幕截图另存为命名基线|
| `compare_visual` |将当前屏幕与基线进行比较——像素差异+匹配分数|
### 多设备(1个工具)
|工具|说明|
|---|---|
| `multi_device_check` |在多个模拟器(暗模式、横向、iPad)上运行视觉检查——返回布局分数|
### 可访问性(1个工具)
|工具|说明|
|---|---|
| `accessibility_check` |跨动态类型内容大小类别渲染屏幕--检测截断和布局问题|
### 本地化(1个工具)
|工具|说明|
|---|---|
| `localization_check` |跨语言渲染屏幕,包括RTL(阿拉伯语、希伯来语)——检测布局中断|
### 自动化(2个工具)
|工具|说明|
|---|---|
| `run_plan` |在服务器端执行多步骤UI自动化计划——具有4层回退的自适应决策|
| `run_plan_decide` |恢复暂停的计划并做出决定——适用于没有MCP采样的客户|
### 会话(1个工具)
|工具|说明|
|---|---|
| `set_defaults` |设置默认项目、方案、模拟器——避免重复参数|
## xcresult解析——杀手级特性
### 问题
每个Xcode MCP服务器返回原始数据 `xcodebuild` 输出。对于试运行,这是500多行噪声。人工智能代理无法可靠地提取哪些测试失败以及失败的原因。
### 解决方案
SilbercueSwift使用 `xcresulttool` 解析 `.xcresult` bundle——与Xcode的测试导航器使用的结构化数据相同。
One call, structured result
test_sim(project: "MyApp.xcodeproj", scheme: "MyApp")
→ Tests FAILED in 15.2s 12 total, 10 passed, 2 FAILED FAIL: Login shows error message LoginTests.swift:47: XCTAssertTrue failed FAIL: Profile image loads ProfileTests.swift:112: Expected non-nil value
Failure screenshots (2): /tmp/ss-attachments/LoginTests_failure.png /tmp/ss-attachments/ProfileTests_failure.png
Device: iPhone 16 Pro (18.2) xcresult: /tmp/ss-test-1774607917.xcresult
代理人获得:
- **通过/失败计数** --即时概览
- **带有file:line的失败消息** --可操作
- **故障截图** --视觉语境(克劳德是多模态的)
- **xcreason路径** --可重复使用 `test_failures` 或 `test_coverage`
### 深度失效分析
test_failures(xcresult_path: "/tmp/ss-test-*.xcresult", include_console: true)
→ FAIL: Login shows error message [LoginTests/testErrorMessage()] LoginTests.swift:47: XCTAssertTrue failed Screenshot: /tmp/ss-attachments/LoginTests_failure.png Console: [LoginService] Network timeout after 5.0s [LoginService] Retrying with fallback URL... ✘ Test "Login shows error message" failed after 6.2s
### 代码覆盖率
test_coverage(project: "MyApp.xcodeproj", scheme: "MyApp", min_coverage: 80)
→ Overall coverage: 72.3%
Target: MyApp.app (74.1%) 0.0% AnalyticsService.swift 45.2% LoginViewModel.swift 67.8% ProfileManager.swift
Target: MyAppTests.xctest (62.0%) ...
## 基准测试
在M3 MacBook Pro、iOS 26.4模拟器上测量。所有数值均为2次预热后5次跑步的中位数。
|行动| iosef | XcodeBuildMCP |应用程序MCP | SS免费版| SS Pro|
|---|---|---|---|---|---|
|屏幕截图| 83毫秒| 1127毫秒| 77毫秒| 316毫秒| **15毫秒** |
|查找元素|50ms|N/A|76ms| **31毫秒** | **\<1ms** |
|点击(坐标)|48毫秒|235毫秒|470毫秒| **16毫秒** | **4ms** |
|滑动|262毫秒|1284毫秒|2685毫秒| **约250毫秒** | **约250毫秒** |
|视图层次结构|44毫秒|259毫秒|938毫秒| **31毫秒** | **5ms** |
|导航(1次呼叫)|--|--|--| **约380毫秒** | **约380毫秒** |
|双击|--|--|--| **约84毫秒** | **~60ms** |
|拖放|--|仅限咕咕|--| **约1.3秒** | **约1.3秒** |
|处理警报|--|--|118ms| **~200ms** | **~200ms** |
|处理3个警报(批处理)|--|--|3个呼叫| **~800ms(1次通话)** | **~800ms(1次通话)** |
|滚动到元素|--|--|滑动循环| **—** | **自动** |
|构建(清理)|--|2501ms|--|3188ms| **1800毫秒** |
|模拟器列表|12ms|567ms|--| **15毫秒** | **15毫秒** |
|冷启动|~100ms|~400ms|~1000ms| **~50ms** | **~50ms** |
|二进制大小|~5MB |~4MB |~200MB| **8.5毫巴** | **8.5毫巴** |
## 与其他MCP服务器的比较
## 建筑
SilbercueSwift (8.5MB Swift binary) ├── MCP SDK (modelcontextprotocol/swift-sdk) ├── StdioTransport (JSON-RPC) └── 58 Tools in 14 Categories Build · Test · Simulator · Screenshot · UI Automation Logs · Console · Visual Regression · Multi-Device Accessibility · Localization · Automation · Git · Session
没有Node.js。没有Python。没有Appium服务器。没有硒。一个二进制。
## 需求
- macOS 13+
- Xcode 15+(适用于 `xcresulttool` 和 `simctl`)
- Swift 6.0+(用于从源代码构建)
- 模拟器上安装的WebDriver Agent(用于UI自动化工具)
## 许可证
核心二进制文件和所有49个免费工具 **麻省理工学院许可** --看 [许可证](LICENSE)。无论是商业上还是其他方面,都可以随心所欲地使用它们。
专业工具(9个附加工具+更快的内部组件)需要 [付费许可证](https://polar.sh/silbercueswift)许可证验证码(`LicenseManager.swift`)源代码中包含了透明度——您可以确切地看到它检查了什么以及何时检查。
## 贡献
欢迎问题和拉取请求。看 [贡献.md](CONTRIBUTING.md) 作为指导方针。
## 隐私
SilbercueSwift完全在您的Mac上运行,不收集任何用户数据。看 [隐私.md](PRIVACY.md) 了解详情。