Askew — iPhone, iPad and Mac via Shortcuts について
askew-mcpは、エージェントからiPhoneのショートカットを実行し、通知を送り、受信箱を読み取るローカルMCPコネクターです。同じMac上で割り当て済みの自動モードのショートカットも実行できます。端末ジョブのデータはコネクターとスマートフォン間で暗号化されますが、レシピのアップロードには別の平文経路が使われます。
主な機能
- 01リレー経由で割り当て済みのiPhoneショートカットを実行
- 02有効な自動モードのショートカットをMacで実行
- 03スマートフォンへの通知と受信箱の読み取り
- 04アクション検索とショートカットレシピの作成
- 05端末ジョブデータと共有変数の暗号化
活用シーン
- 01エージェント経由でスマートフォンのカレンダーに予定を追加
- 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 エージェントから iPhone を操作できます。 askew-mcp は Askew のローカルコネクターです。MCP サーバー(stdio)として、Claude Code、Claude Desktop、Cursor、Codex、その他あらゆる MCP クライアントから iPhone 上でショートカットを実行したり、通知を送信したり、iPhone から返された内容を読み取ったりできます。iPhone はロックしたままで構いません。0.2 シリーズでは、デバイスの明示的な選択と、割り当て済みのローカル Mac ターゲットが追加されました。デバイスジョブの入力、結果、受信トレイの項目は、リレーに到達する前にお客様のキーで暗号化されます。レシピのアップロードには別の平文の扱いに関する境界があり、以下で説明します。
iPhone リレーとローカル macOS ターゲットに対応しています。実機 iPad のバックグラウンド検証は保留中です。Android には対応していません。Askew アプリは現在、https://askew.my でウェイトリスト登録を受け付けています。
完全なセットアップガイド:English · 한국어 · 中文 · 日本語
1. コネクターキーを取得する
iPhone の Askew アプリで、設定 → デバイスを登録 → 通知を許可 → 新しいコネクターの順に操作します。キー(akc_…)をコピーします。このキーは一度だけ表示されます。
2. エージェントにコネクターを追加する
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 のような6つの単語からなるフィンガープリントが出力されます。アプリのコネクター画面を開き、同じ6つの単語が表示されていることを確認して、확인함 / Verifiedをタップします。この確認により、リレーがすり替えられていないことを検証できます。確認するまでは、アプリ上でコネクターは未検証と表示され、エージェントから確認を求められます。
npx -y askew-mcp fingerprint # print this computer's six fingerprint words
3. スマートフォンにディスパッチャーをインストールする
アプリのショートカット(단축어)タブで、Askew dispatcherをインストールします(共有シート → ショートカット → 追加)。開いて、上部にあるオートメーションのトグルをオンにします。スマートフォンのロックを解除した状態で、設定 → チェックアップからテストプッシュを1回実行し、常に許可をタップします。トグルを1回、許可を1回、それぞれ一度だけ行います。その後、同じ方法でレシピ(カレンダー、リマインダー、メモなど)を追加して、エージェントに次のように頼みます。
「木曜日の午後3時に、歯医者の予定をスマートフォンのカレンダーに追加して。」
デバイスまたはこの Mac を選択する
askew_list_routes を呼び出し、有効な targets エントリを1つ選択します。target を省略すると、ルートのデフォルトデバイスが使用されます。ブロードキャストはありません。ターゲットの割り当ては電話で管理します。この Mac にすでにインストールされているショートカットを実行するには、次を使用します。
{"routeId":"route-id-from-list","target":{"kind":"connector","id":"this-connector-id"},"input":{"text":"hello"}}
そのルートの実際の入力仕様に従ってください。コネクター ID は askew_list_routes に表示されるものと一致する必要があります。このプロセスでは別の Mac 上で実行できません。ターゲットとルートの両方が有効である必要があります。ローカル実行には macOS、割り当てと緊急停止スナップショットを読み取るための認証済みリレー接続、および executionMode: "auto" が必要です。アカウントが停止されている場合、またはサーバーに停止状態フィールドがない場合、ローカル実行はブロックされます。停止状態はディスパッチ前に確認されます。すでに実行中のショートカットの動作を取り消すことはできません。
ローカルの askew_run は、正確なショートカット名を一意のインストール済み識別子に解決し、1回実行して、結果を 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 と公開鍵ごとに分けて保存されます。レコード、結果、リクエストダイジェストはコネクターの鍵で暗号化され、生の入力は保持されません。ファイルはローカル OS ユーザーのみがアクセスできます。レコードは手動で削除するまで保持されます。ジャーナルを削除すると再試行保護が失われ、秘密鍵を失うと過去の結果にアクセスできなくなります。再起動後も同じ鍵とジャーナルを使用してください。ローカル履歴は実行 ID で参照でき、電話やリレーとは同期されません。
レシピのアップロードとレビュー
ローカル検索/ビルドにはコネクターキーもリレー接続も必要ありません。askew_recipe_build での署名には macOS が必要です。デフォルトの verify: true は、新しいショートカットをこの Mac にインポートして実行します。そのアクションが実行する処理によっては、何らかの影響が生じる可能性があります。その影響が許可されている場合にのみ選択してください。verify: false は、インポートや実行をせずに署名します。署名時にワークフローが Apple に送信されます(Apple のドキュメント)。実行が成功しても、正確性や安全性が証明されるわけではありません。
sendToPhone: true は、ビルドの成功後にのみリレーに接続します。これにより、署名済みファイルとプレーンテキストのワークフローがアップロードされます。ワークフローには、個人データや秘密情報がそのまま含まれている可能性があります。この経路は、暗号化されたジョブ/結果/受信トレイのチャネルの対象外です。共有レシピに機密情報を埋め込まないでください。ローカル実行の出力は MCP クライアントに返されますが、レシピのメタデータとしてアップロードされることはありません。verifiedRun テキストを送信する古いクライアントはアップグレードしてください。
リレーは基本的なファイル構造を確認し、別途送信されたワークフローに基づいて静的なヒントを提示します。アーカイブの署名は検証せず、ヒントがファイルの内容を説明していることも確認しません。エージェントのレシピはすべて未検証のままです。Askew › マイアイテムでは、追加する前にショートカットで実際のアクション、権限、送信先を確認することに同意してください。ファイルをダウンロードしても、インストールされたことにはなりません。
ツール(13)
| ツール | 機能 |
|---|---|
askew_actions_search | 539 件のアクション定義とパラメーターキーをローカルで検索します |
askew_recipe_build | macOS でビルド/署名し、オプションでローカルにインストール/実行し、さらにオプションで iPhone での手動レビュー用にアップロードします |
askew_run | 暗号化されたリレー経由で割り当て済みのデバイスルートを 1 つ実行するか、この Mac で有効な自動モードの対象をローカル実行します |
askew_get_run | ジョブのステータスと結果を取得します |
askew_list_routes | ルート、デバイス、接続モードを表示します |
askew_recipes_catalog | ユーザーがインストールできる既成レシピを、コントラクトとインストール状態(インストール済み/未インストール/古いバージョン)とともに表示します。キーなしで動作します |
askew_setup_check | セットアップ(コネクター、デバイス、現在のレシピと比較したルート)を診断します。probe: true を指定すると、読み取り専用のテスト実行を 1 回送信し、どこで停止したかを示します |
askew_notify | 電話への通知と結果ボックス(エージェント → 人、単方向)を送信します。複数の電話/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
開発
ソース: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 はエンベロープ形式の全体です。目的を info としてバインドした HPKE(X25519 + HKDF-SHA256 + ChaCha20-Poly1305)と、共有変数用のアカウントキーで暗号化する ChaCha20-Poly1305 ボックスを使用し、変数名を AAD として指定します。
한국어
エージェント(Claude Code · Claude デスクトップ · Cursor · Codex)がiPhone をツールとして使えるようにするローカルコネクターです。iPhone アプリ → 設定 → 新しいコネクターを作成 → キー(akc_…)をコピーし、上記のコマンドのいずれかで登録してください。最初のリレーツールの呼び出し時に6 つの単語が表示されます(例:cider grove desert fever city burger)。アプリのコネクター画面に同じ単語が表示されたら、「確認済み」をタップしてください。一度だけ行えば完了です。その後、アプリのショートカットタブからディスパッチャーをインストール(共有シート → ショートカット → 追加 → オートメーションの切り替えをオン → ロック解除状態でテストプッシュを 1 回行い、「常に許可」を選択)すると、スマートフォンがロックされていてもショートカットが動作します。0.2 のソースでは、対象デバイスの選択と、この Mac でのローカル実行が追加されました。まだリリース前で、iPad のバックグラウンド動作は実機での検証が残っています。Mac を対象にする場合はスマートフォンから指定します。確認後の実行と冪等性キーはローカル実行ではサポートされていないため、実行前に拒否されます。Android の予定はありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。