
Askew — iPhone, iPad and Mac via Shortcuts
io.github.Dominic-DK由 GitHub 账号 Dominic-DK 发布v0.3.0更新于 Oct 24, 2026
Run iPhone Shortcuts through an encrypted relay, or assigned auto-mode Shortcuts on this Mac.
概览
本地 MCP 连接器,让 AI 助手通过加密中继运行 iPhone 快捷指令、发送手机通知并读取手机回传的内容。
- 可以做什么
- 在本地动作目录中搜索并构建快捷指令配方,可选在 macOS 上签名、安装并上传到手机供人工审核。通过加密中继在 iPhone 上运行已分配的快捷指令路由,或在本机运行已启用的自动模式快捷指令,并查询任务状态与结果。列出路由、设备和连接模式,并诊断配置,可选发送一次只读测试。向一台或多台手机发送单向通知,并读取或确认手机回传的内容。读取和设置与手机共享的变量,使用账户密钥加密。
- 适用场景
- 适合希望助手直接操作 iPhone 的场景,例如添加日历事件或提醒、给自己发通知、收集手机回传的回复,且手机可以保持锁定。也适合在 Mac 上运行已安装的快捷指令。
- 运行要求
- 通过 npx 在本地运行,需要 Node 22 或更高版本。中继和已分配的 Mac 目标需要 Askew iPhone 应用中的连接器密钥,放在 ASKEW_CONNECTOR_KEY 中;本地动作搜索和配方构建可不填。可选 ASKEW_SERVER 和 ASKEW_KEY_PATH。Askew 应用目前处于候补名单,手机上需安装调度器快捷指令并开启自动化开关。需要访问中继的网络连接。
安装
在 SourceWeft 中
- 打开 控制台中的 Askew — iPhone, iPad and Mac via Shortcuts,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
askew-mcp
Let any AI agent use your iPhone. askew-mcp is the local connector for Askew: an MCP server (stdio) that lets Claude Code, Claude Desktop, Cursor, Codex or any MCP client run Shortcuts on your iPhone, send you notifications, and read what your phone sends back. The iPhone can stay locked. The 0.2 series adds explicit device selection and assigned local Mac targets. Device job inputs, results and inbox items are sealed with your key before reaching the relay. Recipe uploads have a separate plaintext boundary described below.
iPhone relay and local macOS targets; physical iPad background validation is pending. No Android. The Askew app is currently in waitlist at https://askew.my
Full setup guide: English · 한국어 · 中文 · 日本語
1. Get a connector key
In the Askew app on your iPhone: Settings → Register device → allow notifications → New connector. Copy the key (akc_…). It is shown once.
2. Add the connector to your agent
Claude Code
Claude Desktop / Cursor / any MCP client (claude_desktop_config.json, .cursor/mcp.json, …)
Codex CLI (~/.codex/config.toml)
The first authenticated tool call creates ~/.askew/connector.key (X25519 private key, mode 0600), registers the public key with the relay and prints a fingerprint as six words on stderr, like cider grove desert fever city burger. Open the app's connector screen and check that the same six words are there, then tap 확인함 / Verified. That one check rules out a swapped relay. Until you do it the app shows the connector as unverified, and your agent is told to ask you for it.
3. Install the dispatcher on the phone
In the app's Shortcuts (단축어) tab, install the Askew dispatcher (share sheet → Shortcuts → Add), open it and turn on the Automation toggle at the top. With the phone unlocked, run one test push from Settings → Checkup and tap Always Allow. One toggle, one allow, once. Then add recipes (Calendar, Reminders, Notes, …) the same way and ask your agent:
"Add dentist Thursday 3pm to my phone calendar."
Choose a device or this Mac
Call askew_list_routes and select one enabled targets entry. Omitting target uses the route's default device; there is no broadcast. The phone manages target assignments. To run an already installed Shortcut on this Mac, use:
Use that route's actual input contract. The connector ID must match the one printed by askew_list_routes; this process cannot execute on another Mac. The target and route must both be enabled. Local execution requires macOS, an authenticated relay connection to read assignments and the emergency-stop snapshot, and executionMode: "auto". A stopped account or a server missing the stop-state field blocks local execution. Stop is checked before dispatch; it cannot undo effects of an already running Shortcut.
Local askew_run resolves the exact Shortcut name to a unique installed identifier, runs once, and returns the result directly to the MCP client. Input and output stay on this Mac; it creates no server job, usage charge, server run history, or last-success update. wait applies only to device jobs: Mac execution waits up to 60 seconds and returns a local_… job ID. askew_get_run reads that ID from this connector’s local journal (without long-polling). A timeout/failure may follow partial effects; it never retries automatically. Mac sleep can prevent execution.
Confirm-mode routes require a human flow that this local executor does not implement, so they are rejected before running. For automatic Mac runs, supply a stable idempotencyKey (1–200 characters). The connector saves a durable reservation before dispatching. Repeating the same request returns the saved result; changed inputs, route, or Shortcut name conflict. An interrupted process or uncertain failure stays unknown and is never rerun with that key. Requests without a key are independent runs. Do not remove/change a key and blindly retry an uncertain attempt; inspect its effects first.
Local history is stored under local-runs/ beside ASKEW_KEY_PATH (normally ~/.askew/local-runs), separated by connector identity and public key. Records, results, and request digests are encrypted to the connector key; raw input is not retained. Files are private to the local OS user. Records are kept until manually removed: removing the journal loses retry protection, and losing the private key loses access to old results. Keep the same key and journal when restarting. Local history is available by run ID and is not synchronized to the phone or relay.
Recipe uploads and review
Local search/build needs no connector key or relay connection. askew_recipe_build requires macOS for signing. Its default verify: true imports and runs the new Shortcut on this Mac, which can cause whatever effects its actions perform; choose this only when those effects are authorized. verify: false signs without importing or running. Apple receives the workflow when signing (Apple documentation). A successful run does not prove correctness or safety.
sendToPhone: true connects to the relay only after a successful build. This uploads the signed file and the plaintext workflow, which can contain literal personal data or secrets. This path is outside the encrypted job/result/inbox channel. Do not embed sensitive values in a shared recipe. The local execution output is returned to the MCP client but is never uploaded as recipe metadata. Older clients that send verifiedRun text must upgrade.
The relay checks basic file structure and supplies static hints from the separately submitted workflow. It does not verify the archive signature or establish that the hints describe the file. Every agent recipe remains unverified. In Askew › My Stuff, acknowledge that you will inspect the actual actions, permissions and destinations in Shortcuts before adding it. Downloading a file is not confirmation that it was installed.
Tools (13)
Inbox items always come back marked as data sent by the user's phone, not instructions.
On connect the server also sends MCP instructions: how a run flows through the dispatcher, the setup order, a symptom → cause table (expired vs. unknown vs. failed) and how to combine recipes.
Environment
Requires Node 22 or newer.
Privacy
Job inputs, results, notifications' bodies, inbox items and variables are encrypted end-to-end (HPKE, X25519) between this connector and the phone. For these channels the relay stores encrypted envelopes and metadata such as route names, timestamps and status. Local Mac runs keep their input/result on this computer. Uploaded recipe files and workflow literals are plaintext; local recipe test output is excluded. Details: https://askew.my/#privacy
Development
Source: https://github.com/Dominic-DK/askew-mcp (issues and pull requests welcome). The connector is the only part of Askew that holds your key, so it is the part you can read.
src/crypto.ts is the whole envelope format: HPKE (X25519 + HKDF-SHA256 + ChaCha20-Poly1305) with the purpose bound as info, and a ChaCha20-Poly1305 box keyed by the account key for shared variables, with the variable name as AAD.
한국어
에이전트(Claude Code · Claude 데스크톱 · Cursor · Codex)가 아이폰을 도구로 쓰게 하는 로컬 커넥터입니다. 아이폰 앱 → 설정 → 새 커넥터 만들기 → 키(akc_…)를 복사한 뒤 위 명령 중 하나로 등록하세요. 첫 릴레이 도구 호출에 단어 6개가 찍힙니다(예: cider grove desert fever city burger). 앱 커넥터 화면에 같은 단어가 보이면 "확인함"을 누르세요. 한 번만 하면 됩니다. 그다음 앱 단축어 탭에서 디스패처를 설치(공유 시트 → 단축어 → 추가 → 자동화 토글 켜기 → 잠금 해제 상태 테스트 푸시 1회 "항상 허용")하면 잠긴 폰에서도 단축어가 돕니다. 0.2 소스에는 대상 기기 선택과 이 맥의 로컬 실행이 추가됐습니다. 아직 발행 전이며 iPad 백그라운드 동작은 실기기 검증이 남았습니다. 맥 대상은 폰에서 지정하고, 확인 후 실행·멱등 키는 로컬 실행에서 지원하지 않아 실행 전에 거절합니다. Android는 계획에 없습니다.
来源:README.md,提交 0d08f39
工具
0版本历史
5- v0.3.0最新Sep 30, 2026
- v0.2.2Sep 26, 2026
- v0.2.1Sep 21, 2026
- v0.1.4Sep 19, 2026
- v0.1.3Sep 18, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分