mcpField
F
Fonino

Fonino

本地服务
fonino.app生产力05 天前更新

关于 Fonino

Fonino 是在 Mac 上运行的手机控制 MCP 服务,让 Agent 操作真实的 iPhone 或 Android 手机。发送、发布、购买和删除等操作须经用户批准,并设有应用和按钮限制。

主要功能

  1. 01查看屏幕并打开应用
  2. 02点击、滑动和输入文字
  3. 03发送前请求用户批准
  4. 04限制敏感应用和高风险操作
  5. 05通过 USB 或镜像控制 iPhone

适用场景

  1. 01让 Agent 在手机上查找信息或操作应用
  2. 02在批准后代发消息或执行其他操作
  3. 03通过手机界面完成需要用户接管的登录

MCP 相关

Fonino 提供本地 HTTP 和 stdio 两种 MCP 接入方式,向客户端开放设备、屏幕、点击、输入、消息及审批等工具。涉及发送、发布、购买和删除的操作会等待用户批准。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"fonino-fonino": {
"command": "npx",
"args": [
"-y",
"fonino"
]
}
}
}
启动命令npx -y fonino

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmfonino0.1.1

工具

10

收录的工具列表 · 更新于 4 天前

此工具无需参数。

详细介绍

Fonino

让 AI Agent 使用你的真实 iPhone 或 Android 手机,并在发送任何内容前征求你的同意。

Fonino 让 Claude Code、Codex、Hermes 或任何 MCP 客户端查看手机屏幕、打开应用、点击、滑动和输入。任何会发送、发布、购买或删除内容的操作,都必须先获得你的一键批准。它运行在你的 Mac 上,使用你自己的手机:无需越狱、不用云手机;Android 手机上无需安装任何内容,iPhone 上只需安装一个小型辅助程序。

Agent 请 Fonino 给 Sam 发短信;批准卡片等待机主确认;点击 Approve 后,手机通过 Google Messages 发出短信

在 Android 模拟器上使用演示号码实时运行的示例。iPhone 上也可使用相同的工具和审批流程。

  ● agent: text Sam that I'm running late
  │
  ● phone_open_app("Messages") → phone_get_screen → Sam's conversation
  │
  ● phone_send_message(to: Sam, "Running 10 minutes late, sorry!")
  │   ⏸ waiting for your OK: "Send a text to Sam?"   [Approve] [Deny]
  │
  ✓ sent after you approved (Delivered via iMessage)

开始使用

在 Mac 上,将以下内容粘贴到你的编码 Agent(Claude Code、Codex……)中:

Clone https://github.com/fonino/fonino, run npm install, then read docs/setup.md and walk me
through connecting my phone. Stop and ask me whenever a step needs my hands, and never type
my passcode or passwords for me.

或者通过 npm 安装:

npm install -g fonino
fonino doctor        # checks the Mac, the phone and permissions
fonino devices

或者从源代码安装:

git clone https://github.com/fonino/fonino && cd fonino
npm install && npm run build:native
apps/cli/bin/fonino doctor

不想自己设置? Fonino for Mac 是基于此代码构建的签名应用。它会替你完成 iPhone 设置(无需 Xcode),并让你随时随地通过 Grok Bot、Muse、Claude 和 ChatGPT 连接手机,审批操作则在手机上进行。

连接 iPhone 的两种方式

USB 辅助程序(推荐)iPhone 镜像
方式通过 USB 在手机上运行 Fonino 辅助程序(WebDriverAgent,Apple 的 UI 测试运行程序)Fonino 读取并点击 macOS 的 iPhone 镜像窗口
点击精确:读取屏幕结构,而不只是像素根据屏幕截图和文字识别
你的 Mac可自由使用:不会移动鼠标工作时会占用光标
手机一台 Mac 可同时连接多部手机一部
要求Xcode、用于签名的 Apple ID、开发者模式、数据线macOS 15+、iOS 18+、Mac 和 iPhone 使用同一个 Apple 账户(欧盟地区不可用)

Android

开启 USB 调试(设置 → 关于手机 → 连点版本号 7 次,然后进入设置 → 系统 → 开发者选项 → USB 调试),连接手机,并在手机上点击允许。 Fonino 会通过 adb 找到手机(Android platform-tools); Android 模拟器也可使用。手机上无需安装任何内容。

fonino devices
# android-001  Pixel 9  connected  android-adb  Pixel 9, Android 16, USB

与 iPhone 一样,使用相同的工具和安全规则:截图以点为单位,点击前会检查对应位置的按钮,通过 Google Messages 发送文本并在点击发送前验证;设置、Wallet、Play Store 和通话均不可操作。输入内容仅限 ASCII 字符(短信可以包含任意字符)。

iPhone 两种连接方式和 Android 的分步指南:docs/setup.md。

通过 Agent 使用(MCP)

完整工具集,支持审批(推荐):运行本地 HTTP 服务,并将其添加到客户端。

apps/cli/bin/fonino mcp-http --show-token     # http://localhost:3001/mcp
claude mcp add --transport http fonino http://localhost:3001/mcp \
  --header "Authorization: Bearer <token>"

工具包括 phone_list_devices、phone_acquire / phone_release(每部手机仅供一个 Agent 使用)、phone_get_screen(截图 + 元素)、phone_tap、phone_swipe、phone_type、 phone_open_app、phone_read_messages、phone_send_message、phone_wait_for_reply、 phone_await_approval、phone_request_help(为登录操作将手机交给你)等。

仅基础控制: fonino mcp(stdio;点击、输入、滑动、查看屏幕)。此代码库的 .mcp.json 会将其注册到 Claude Code 中。

安全性

规则写在代码中,而不是提示词里,因此 Agent 无法通过说服来绕过它们:

  • 审批。 发送、发布、购买和删除操作都会暂停,直到你批准确切的应用、收件人和文本。Fonino 也会在每次点击时检查按钮:发送、发布、回复、立即购买和下单始终需要你的确认,即使 Agent 没有说明自己正在做什么。 fonino approvals 会列出待处理的请求;fonino approve <id>(--for-task 适用于该任务的其余操作;--always 允许在该应用中执行此类操作,并设有每日上限)。
  • 禁止访问。 设置、钱包、密码、邮件、电话、FaceTime、「查找」和 App Store。
  • 登录信息由你掌控。 Agent 会把手机交给你,以便你输入密码、使用 Face ID 和输入验证码;消息中的一次性验证码会对它隐藏。
  • 短信限制。 按电话号码和收件人设置速率限制;任何回复 STOP 的人都不会再收到短信。
  • 本地且私密。 令牌、审批记录和屏幕截图都保存在 ~/.fonino 中,仅你的 macOS 用户可读取。

其他命令

fonino screen <device> --open          # screenshot
fonino tap <device> 200 500            # screenshot pixels
fonino agent <device> --goal "Open Settings and tell me the iOS version"   # built-in agent (Anthropic API key)
fonino wda up                          # keep the USB helper running (health checks, restarts)
fonino service install                 # run it all as login services
fonino runs && fonino replay <run-id> --open
fonino help                            # everything else

工作原理

apps/cli                 fonino CLI: setup, doctor, watchdog, local services, replay
packages/iphone-adapter  iPhone USB helper (WebDriverAgent over usbmuxd), iPhone Mirroring, Android over adb
packages/mcp-server      MCP tools, approvals, policy (off-limits apps, risky buttons), rate limits
packages/agent-runtime   built-in agent loop and approval gate
packages/device-core     device protocol, leases, mock phone for tests
packages/browser         optional agent browser on the Mac (pages as text, replayable recipes)
packages/relay           client that connects this Mac to the Fonino cloud (optional)
native/                  Swift helpers: screen capture and input for Mirroring, text recognition
docs/                    setup, research notes on controlling a non-jailbroken iPhone

关于为何使用 USB 助手以及我们的测量结果,请参阅: docs/iphone-control-research.md。

要求:搭载 Apple 芯片、运行 macOS 15 或更高版本的 Mac;Node 22.18 或更高版本。 测试:npm test。

限制

  • 手机必须保持解锁状态(iPhone:将自动锁定设为「永不」;Android:将屏幕超时设为最长时间)。
  • 首次启动助手时,可能会显示标题为「XCTest」的密码提示:这是助手在请求使用屏幕。请在手机上输入;重启后才会再次询问。
  • 不支持多点触控、相机或 Face ID 流程。部分应用有自己的检查机制。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。