关于 Askew — iPhone, iPad and Mac via Shortcuts
askew-mcp 是供 Agent 使用的本地 MCP 连接器,可运行 iPhone 快捷指令、发送通知并读取手机收件箱,也能在同一台 Mac 上运行已分配的自动模式快捷指令。设备任务数据在连接器与手机之间加密;配方上传则使用独立的明文通道。
主要功能
- 01通过中继运行已分配的 iPhone 快捷指令
- 02在本机 Mac 运行启用的自动模式快捷指令
- 03发送手机通知并读取收件箱
- 04搜索操作并构建快捷指令配方
- 05加密设备任务数据和共享变量
适用场景
- 01通过 Agent 向手机日历添加事件
- 02在指定设备上运行已分配的快捷指令
- 03在本机 Mac 执行自动模式快捷指令
- 04构建快捷指令配方并提交手机审核
MCP 相关
stdio MCP 服务提供运行快捷指令、管理路由、通知、收件箱、变量和配方的工具。它通过 Askew 中继处理手机任务,也可执行符合条件的本机 Mac 目标。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y askew-mcpASKEW_CONNECTOR_KEY密钥Connector key (akc_) from Askew Settings. Required for relay and assigned Mac targets; optional for local action search and recipe build.ASKEW_SERVERRelay URL. Defaults to https://api.askew.my.ASKEW_KEY_PATH密钥Where the connector's private key file lives. Defaults to ~/.askew/connector.key.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
13收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | |
| query | string | 是 | 操作标识符、显示名称或参数键的一部分。 |
详细介绍
askew-mcp
让任何 AI Agent 都能使用你的 iPhone。 askew-mcp 是 Askew 的本地连接器:一个 MCP 服务(stdio),可让 Claude Code、Claude Desktop、Cursor、Codex 或任何 MCP 客户端在你的 iPhone 上运行快捷指令、向你发送通知,并读取手机发回的内容。iPhone 可以保持锁定。0.2 系列新增了显式设备选择和指定的本地 Mac 目标。设备任务输入、结果和收件箱项目在抵达中继服务前,都会使用你的密钥加密。配方上传有单独的明文边界,详见下文。
iPhone 中继服务和本地 macOS 目标;实体 iPad 后台验证尚未完成。不支持 Android。Askew 应用目前正在 https://askew.my 开放候补名单
完整设置指南:English · 한국어 · 中文 · 日本語
1. 获取连接器密钥
在 iPhone 上的 Askew 应用中:Settings → Register device → allow notifications → New connector。复制密钥(akc_…)。密钥只会显示一次。
2. 将连接器添加到你的 Agent
Claude Code
claude mcp add askew -s user -e ASKEW_CONNECTOR_KEY=akc_XXXX -- npx -y askew-mcp
Claude Desktop / Cursor / 任意 MCP 客户端(claude_desktop_config.json、.cursor/mcp.json、…)
{
"mcpServers": {
"askew": {
"command": "npx",
"args": ["-y", "askew-mcp"],
"env": { "ASKEW_CONNECTOR_KEY": "akc_XXXX" }
}
}
}
Codex CLI(~/.codex/config.toml)
[mcp_servers.askew]
command = "npx"
args = ["-y", "askew-mcp"]
env = { ASKEW_CONNECTOR_KEY = "akc_XXXX" }
首次通过身份验证的工具调用会创建 ~/.askew/connector.key(X25519 私钥,权限模式为 0600),向中继服务注册公钥,并在 stderr 上输出由六个单词组成的指纹,例如 cider grove desert fever city burger。打开应用的连接器界面,确认显示的是相同的六个单词,然后轻点확인함 / 已验证。这项检查可以排除中继服务被调包的情况。在完成检查之前,应用会将连接器显示为未经验证,并提示你的 Agent 向你询问指纹。
npx -y askew-mcp fingerprint # print this computer's six fingerprint words
3. 在手机上安装分发器
在应用的 Shortcuts(단축어)标签页中,安装 Askew dispatcher(通过共享菜单 → Shortcuts → Add),打开它并开启顶部的 Automation 开关。解锁手机后,从 Settings → Checkup 运行一次测试推送,然后轻点 Always Allow。只需打开一个开关、允许一次。之后用相同方式添加配方(Calendar、Reminders、Notes 等),并向你的 Agent 说:
“把周四下午 3 点的牙医预约添加到我的手机日历。”
选择设备或这台 Mac
调用 askew_list_routes,并选择一个已启用的 targets 条目。省略 target 时会使用该路由的默认设备;不会广播。目标分配由手机管理。要在这台 Mac 上运行已安装的快捷指令,请使用:
{"routeId":"route-id-from-list","target":{"kind":"connector","id":"this-connector-id"},"input":{"text":"hello"}}
使用该路由的实际输入契约。连接器 ID 必须与 askew_list_routes 打印的 ID 一致;此进程无法在另一台 Mac 上执行。目标和路由都必须已启用。本地执行需要 macOS、经过身份验证的中继连接(用于读取分配和紧急停止状态快照),以及 executionMode: "auto"。账户已停止或服务器缺少停止状态字段时,会阻止本地执行。停止状态会在分发前检查;无法撤销已经运行的快捷指令所产生的影响。
本地 askew_run 会将快捷指令的准确名称解析为唯一的已安装标识符,运行一次,并将结果直接返回给 MCP 客户端。输入和输出都保留在这台 Mac 上;不会创建服务器任务、产生使用费用、记录服务器运行历史或更新上次成功状态。wait 仅适用于设备任务:Mac 执行最多等待 60 秒,并返回一个 local_… 任务 ID。askew_get_run 会从此连接器的本地日志中读取该 ID(不会长轮询)。超时或失败后可能已产生部分影响;系统绝不会自动重试。Mac 进入睡眠可能会阻止执行。
需要确认模式的路由要求人工处理流程,而此本地执行器不支持该流程,因此会在运行前拒绝执行。对于 Mac 上的自动运行,请提供稳定的 idempotencyKey(1–200 个字符)。连接器会在分发前保存持久化预留。重复相同请求会返回已保存的结果;输入、路由或快捷指令名称变更时会产生冲突。进程中断或结果不确定的失败会保持 unknown 状态,绝不会使用该键再次运行。不带键的请求会作为独立运行处理。不要移除或更改键后盲目重试结果不确定的尝试;请先检查其影响。
本地历史记录存储在 ASKEW_KEY_PATH 所在目录旁的 local-runs/ 下(通常为 ~/.askew/local-runs),并按连接器身份和公钥隔离。记录、结果和请求摘要均使用连接器密钥加密;不会保留原始输入。文件仅对本地操作系统用户可见。记录会一直保留,直至手动删除:删除日志会失去重试保护,丢失私钥则会无法访问旧结果。重启时请保留相同的密钥和日志。本地历史记录可按运行 ID 查询,不会同步到手机或中继。
配方上传与审核
本地搜索和构建无需连接器密钥或中继连接。askew_recipe_build 需要 macOS 才能签名。默认的 verify: true 会导入并在这台 Mac 上运行新快捷指令,这可能会产生其操作带来的任何影响;仅在这些影响已获授权时才选择此选项。verify: false 会签名,但不会导入或运行。签名时,工作流会发送给 Apple(Apple 文档)。成功运行并不能证明其正确或安全。
只有在成功构建后,sendToPhone: true 才会连接中继。这会上传已签名文件和明文工作流,其中可能包含具体的个人数据或机密。此路径不属于加密的任务/结果/收件箱通道。共享配方中不要嵌入敏感值。本地执行输出会返回给 MCP 客户端,但绝不会作为配方元数据上传。仍会发送 verifiedRun 文本的旧版客户端必须升级。
中继会检查基本文件结构,并根据单独提交的工作流提供静态提示。它不会验证归档签名,也无法确认提示描述的就是该文件。每个 Agent 配方都仍然是未经验证的。在 Askew › My Stuff 中,确认你会先在快捷指令中检查实际操作、权限和目标位置,再添加配方。下载文件并不表示已确认安装。
工具(13)
| 工具 | 功能 |
|---|---|
askew_actions_search | 在本地搜索 539 个操作定义和参数键 |
askew_recipe_build | 在 macOS 上构建/签名,可选择在本地安装/运行,也可上传以便在 iPhone 上手动审核 |
askew_run | 通过加密中继运行一个指定的设备路由,或在这台 Mac 上本地运行已启用的自动模式目标 |
askew_get_run | 查看任务状态和结果 |
askew_list_routes | 查看路由、设备和连接模式 |
askew_recipes_catalog | 查看用户可安装的现成配方及其契约和安装状态(已安装/未安装/已过时)。无需密钥即可使用 |
askew_setup_check | 诊断设置(连接器、设备、路由与当前配方);probe: true 会发送一次只读测试运行,并说明运行在哪一步停止 |
askew_notify | 向手机发送通知+结果框(Agent → 用户,单向)。有多部手机/iPad 时,选择 deviceId 或传入 allDevices: true |
askew_inbox_list / askew_inbox_wait / askew_inbox_ack | 读取手机发来的内容(最多等待 30 秒),然后确认 |
askew_variables_get / askew_variables_set | 获取/设置与手机共享并使用账户密钥加密的变量 |
收件箱项目始终会标记为用户手机发送的数据,而非指令。
连接时,服务还会发送 MCP instructions:说明运行如何经由调度器流转、设置顺序、症状 → 原因表(已过期/未知/失败),以及如何组合配方。
环境
| 变量 | 默认值 | |
|---|---|---|
ASKEW_CONNECTOR_KEY | — | 远程中继/指定的 Mac 目标需要此变量;本地操作搜索和配方构建可选 |
ASKEW_SERVER | https://api.askew.my | 中继 URL(本地开发时使用 http://localhost:8787) |
ASKEW_KEY_PATH | ~/.askew/connector.key | 私钥存放位置 |
需要 Node 22 或更高版本。
隐私
任务输入、结果、通知正文、收件箱项目和变量均通过 HPKE、X25519 在此连接器与手机之间进行端到端加密。对于这些通道,中继会存储加密信封以及路由名称、时间戳和状态等元数据。本地 Mac 运行的输入/结果会保留在这台电脑上。上传的配方文件和工作流中的字面内容为明文;本地配方测试输出不会上传。详情:https://askew.my/#privacy
Development
Source: https://github.com/Dominic-DK/askew-mcp(欢迎提交问题和拉取请求)。连接器是 Askew 中唯一持有你密钥的部分,因此你可以阅读它的代码。
git clone https://github.com/Dominic-DK/askew-mcp.git && cd askew-mcp
pnpm install
pnpm build # tsc → dist/
pnpm test # crypto, stdio/local relay mocks, target authorization; no real Shortcuts run
ASKEW_SERVER=http://localhost:8787 ASKEW_CONNECTOR_KEY=akc_XXXX pnpm dev # run from source
src/crypto.ts 定义了完整的信封格式:HPKE(X25519 + HKDF-SHA256 + ChaCha20-Poly1305),并将用途绑定为 info;共享变量则使用由账户密钥派生的 ChaCha20-Poly1305 密钥进行加密,变量名称用作 AAD。
韩语
让 Agent(Claude Code · Claude 桌面版 · Cursor · Codex)将 iPhone 用作工具的本地连接器。在 iPhone 应用中,依次进入“设置”→“创建新连接器”→复制密钥(akc_…),然后使用上面的任一命令注册。首次调用中继工具时会显示 6 个单词(例如:cider grove desert fever city burger)。如果应用的连接器页面显示相同的单词,请点击“已确认”。只需操作一次。接下来,在应用的“快捷指令”标签页中安装调度器(共享表单 → 快捷指令 → 添加 → 开启自动化开关 → 解锁状态下测试推送 1 次并选择“始终允许”),这样即使手机锁定,快捷指令也能运行。0.2 版源码新增了目标设备选择和在这台 Mac 上本地运行的功能。该版本尚未发布,iPad 后台运行仍待真机验证。Mac 目标由手机指定;本地运行不支持执行前确认和幂等键,因此会在执行前拒绝请求。没有 Android 计划。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。