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.

已驗證STDIO僅桌面效率與工作流溝通與協作

概覽

AI 產生的概覽

本機 MCP 連接器,讓 AI 助理透過加密中繼執行 iPhone 捷徑、傳送手機通知,並讀取手機回傳的內容。

可以做什麼
在本機動作目錄中搜尋並建置捷徑配方,可選擇在 macOS 上簽署、安裝並上傳到手機供人工審核。透過加密中繼在 iPhone 上執行已指派的路由,或在本機執行已啟用的自動模式捷徑,並查詢工作狀態與結果。列出路由、裝置與連線模式,並診斷設定,可選擇送出一次唯讀測試。向一支或多支手機傳送單向通知,並讀取或確認手機回傳的內容。讀取與設定和手機共用的變數,並以帳戶金鑰加密。
適用情境
適合希望助理直接操作 iPhone 的情境,例如新增行事曆事件或提醒、傳通知給自己、收集手機回傳的回覆,且手機可以保持鎖定。也適合在 Mac 上執行已安裝的捷徑。
執行需求
透過 npx 在本機執行,需要 Node 22 或更新版本。中繼與已指派的 Mac 目標需要 Askew iPhone 應用程式中的連接器金鑰,放在 ASKEW_CONNECTOR_KEY;本機動作搜尋與配方建置可不填。可選 ASKEW_SERVER 與 ASKEW_KEY_PATH。Askew 應用程式目前為候補名單,手機上需安裝調度器捷徑並開啟自動化開關。需要連線到中繼的網路。
安裝前請注意
連接器金鑰只顯示一次,可存取你的手機;首次驗證呼叫會建立私密金鑰檔案並印出六個單字的指紋,需在應用程式中核對,以免中繼被替換。執行捷徑可能變更手機或 Mac 上的資料,逾時可能伴隨部分已生效的操作,且不會自動重試。上傳配方會送出簽署檔案與明文工作流程,其中可能含個人資料,且不經過加密通道。配方驗證會匯入並執行新捷徑,可能產生其動作帶來的實際效果。本機執行紀錄保存在本機,刪除日誌會失去重試保護,遺失私密金鑰則無法讀取舊結果。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Askew — iPhone, iPad and Mac via Shortcuts,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

askew-mcp

[askew-mcp MCP server] [npm]

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

bash
claude mcp add askew -s user -e ASKEW_CONNECTOR_KEY=akc_XXXX -- npx -y askew-mcp

Claude Desktop / Cursor / any MCP client (claude_desktop_config.json, .cursor/mcp.json, …)

json
{  "mcpServers": {    "askew": {      "command": "npx",      "args": ["-y", "askew-mcp"],      "env": { "ASKEW_CONNECTOR_KEY": "akc_XXXX" }    }  }}

Codex CLI (~/.codex/config.toml)

toml
[mcp_servers.askew]command = "npx"args = ["-y", "askew-mcp"]env = { ASKEW_CONNECTOR_KEY = "akc_XXXX" }

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.

bash
npx -y askew-mcp fingerprint   # print this computer's six fingerprint words

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:

json
{"routeId":"route-id-from-list","target":{"kind":"connector","id":"this-connector-id"},"input":{"text":"hello"}}

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)

ToolWhat it does
askew_actions_searchSearch 539 action definitions and parameter keys locally
askew_recipe_buildBuild/sign on macOS, optionally install/run locally, optionally upload for manual review on iPhone
askew_runRun one assigned device route through the encrypted relay, or an enabled auto-mode target on this Mac locally
askew_get_runStatus and result of a job
askew_list_routesRoutes, devices, connection mode
askew_recipes_catalogReady-made recipes the user can install, with contracts and install state (installed / not / outdated). Works without a key
askew_setup_checkDiagnoses the setup (connector, devices, routes vs. current recipes); probe: true sends one read-only test run and says where it stopped
askew_notifyNotification to the phone + results box (agent → person, one-way). With several phones/iPads, pick deviceId or pass allDevices: true
askew_inbox_list / askew_inbox_wait / askew_inbox_ackRead what the phone sent (waits up to 30 s), then acknowledge
askew_variables_get / askew_variables_setVariables shared with the phone, sealed with the account key

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

VariableDefault
ASKEW_CONNECTOR_KEY—required for relay/assigned Mac targets; optional for local action search and recipe build
ASKEW_SERVERhttps://api.askew.myrelay URL (http://localhost:8787 for local development)
ASKEW_KEY_PATH~/.askew/connector.keywhere the private key lives

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.

bash
git clone https://github.com/Dominic-DK/askew-mcp.git && cd askew-mcppnpm installpnpm build          # tsc → dist/pnpm test           # crypto, stdio/local relay mocks, target authorization; no real Shortcuts runASKEW_SERVER=http://localhost:8787 ASKEW_CONNECTOR_KEY=akc_XXXX pnpm dev   # run from source

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
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

5
  1. v0.3.0最新Sep 30, 2026
  2. v0.2.2Sep 26, 2026
  3. v0.2.1Sep 21, 2026
  4. v0.1.4Sep 19, 2026
  5. v0.1.3Sep 18, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分