AzkiDeck-mcp-server
AzkiDeck-mcp-server
AzkiDeck のマルチテナント MCP リレーサーバー:MCP クライアント(Claude Desktop / Claude Code など)がユーザーのスマホ上の AzkiDeck App(Android / iOS)にいつでも接続し、通知を腕時計にプッシュ、文字盤/クイックアプリのインストール、通知アイコンの管理——スマホとPCが同じLAN内にある必要はもうありません。
MCP 客户端(Claude Desktop 等)
│ POST /mcp (Streamable HTTP, 无状态, Bearer 令牌)
▼
┌─────────────────────────────────────────────┐
│ azkideck-mcp-server │
│ node:http ─┬─ /mcp → MCP 分发 │
│ ├─ /device → 设备接入(WS) │
│ ├─ /admin/* → 管理面 │
│ └─ /healthz │
│ 多租户:凭证即租户,SHA-256 哈希隔离 │
│ 持久化:SQLite(node:sqlite,零原生依赖) │
└─────────────────────────────────────────────┘
▲ wss://server/device (手机出站连接,绕开 NAT)
│ register → mcp-request/response ↔ replay
Android / iOS App(复用 App 内已有的 MCP 核心)特徴
マルチテナント分離:資格情報がテナント。資格情報はスマホAppが生成・保持(AppのLANブリッジトークンを再利用)、サーバーはSHA-256ハッシュのみ保存。異なるテナントのデバイス、ツール、バッファは完全に分離
マルチデバイス集約:同じ資格情報で複数のスマホ(iPhone + Android)を接続可能。ツールリストは自動的に重複排除・統合され、呼び出しは最も最近アクティブなデバイスにルーティング
オフライン再送:デバイスが10分以内に再接続した場合、直近5分以内の通知系呼び出しを再送(進捗系は最新の1件に自動圧縮、clearされた通知は再送しない)。ウィンドウを超えるとオフラインと判定し再送しない
公開/プライベートのデュアルモード:公開モードはアドレスを入力するだけでペアリング可能。プライベートモードはデプロイキーも必要。実行中に切り替え可能。切り替え時に、ペアリング済みデバイスに再認証を要求するか選択可能
最小限の依存関係:実行時は
wsのみ。Node ≥ 22.13(組み込みのnode:sqliteを使用)
Related MCP server: Remote Control MCP (Electrobun)
クイックスタート
# 需要 Node.js ≥ 22.13。尚未发布到 npm registry,从源码安装:
git clone https://github.com/AzumaChiaki/AzkiDeck-mcp-server.git
cd AzkiDeck-mcp-server
npm ci && npm run build
node dist/cli.js serve # 默认监听 0.0.0.0:8787
# 可选:npm link 注册全局 azkideck-mcp-server 命令公網デプロイではTLSを有効にする必要があります(組み込みの TLS_CERT/TLS_KEY、またはCaddy/nginxリバースプロキシ)。詳細は docs/deployment.md を参照。
スマホ側の設定
App → ツールボックス → AI通知ブリッジ:有効になっていることを確認(トークンはここにあります)
リレーモード(設定ページ):サーバーアドレスを入力。資格情報はブリッジトークンを自動的に再利用。サーバーがプライベートモードの場合はデプロイキーも入力
Appに「リレー接続済み」と表示されればペアリング完了
MCPクライアントの接続
claude mcp add --scope user --transport http azki-watch \
https://你的服务器/mcp --header "Authorization: Bearer <手机 App 里的令牌>"複数のクライアント(PC、ノートPC、CI)で同じトークンを共有できます。
フェイクデバイスでの連携テスト(スマホ不要)
azkideck-mcp-server serve &
node scripts/fake-device.mjs --server ws://127.0.0.1:8787 --credential <任意32位hex>
# 之后 Claude 里调用 send_notification,假设备终端会打印 payload管理
azkideck-mcp-server tenants list # 租户列表
azkideck-mcp-server tenants create # 预置租户(AUTO_REGISTER=false 时)
azkideck-mcp-server tenants revoke <id前缀> # 撤销
azkideck-mcp-server tenants allow <id前缀> # 恢复
azkideck-mcp-server mode get # 查看公开/私有模式
azkideck-mcp-server mode set private --key <hex> [--reauth]実行時管理API(ADMIN_TOKEN 環境変数で有効化):
エンドポイント | 説明 |
| 公開ヘルスチェック。カウントのみ含む |
| テナント一覧(idは先頭8桁のみ表示) |
| オンラインデバイス |
| 失効/復元 |
| モードの表示/切り替え。 |
設定(環境変数)
変数 | デフォルト | 説明 |
| 8787 / 0.0.0.0 | リッスンアドレス |
|
| SQLiteデータディレクトリ |
|
| 公開モードでデバイス初回接続時に自動テナント作成 |
| (なし) | 設定すると |
| (なし) | 両方設定すると組み込みHTTPS/WSSを有効化 |
| 30000 / 60000 | ツール呼び出しタイムアウト |
| 300000 | オフラインバッファ保持5分 |
| 600000 | 切断再送ウィンドウ10分 |
| 120 / 600 / 20 | レート制限 |
セキュリティモデル
サーバーは資格情報の平文を決して保存しない(SHA-256ハッシュ)。比較は定数時間アルゴリズムを使用
公網デプロイではTLSを強制。トークンは128ビットのエントロピーを持ち、401は送信元IPごとにレート制限
資格情報の失効は即時有効:オンラインデバイスは切断され、MCP側は401、自動復活はしない
プライベートモードは「誰がペアリングできるか」をデプロイキー保持者に限定。
require_reauth切り替えで、ペアリング済み全デバイスに再認証を強制可能
LANモードとの関係
LAN直接接続(App内蔵) | リレーサーバー | |
要件 | PCとスマホが同じネットワーク | スマホがインターネットに接続できればよい |
アドレス | Wi-Fi変更で変わる | 固定 |
データパス | 第三者を経由しない | リレーを経由(サーバーはハッシュと転送された暗号文/呼び出し内容のみ見える) |
オフライン | 直接失敗 | 通知系はキューで再送 |
両方同時に有効にでき、互いに影響しません。
開発
npm install
npm run dev # tsx watch
npm test # vitest(含 e2e:真实端口 + 假设备)
npm run lint && npm run typecheckプロトコル詳細は docs/protocol.md(スマホ側実装仕様)を参照。
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables MCP-compatible agents to control an Android device over the network via ADB, providing tools for shell commands, screen capture, UI inspection, file operations, and input simulation.17MIT
- FlicenseNot gradedqualityBmaintenanceEnables remote desktop control with screen capture and mouse/keyboard simulation through an MCP server exposed via a WebSocket tunnel.
- FlicenseNot gradedqualityBmaintenanceEnables control of mobile games via MaaFramework, supporting screenshot, click, swipe, and task execution through MCP protocol.
- AlicenseNot gradedqualityAmaintenanceEnables cloud agents to securely operate local machine resources (files, commands, screenshots) via standard MCP protocol.MIT
Related MCP Connectors
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
Access Kernel's cloud-based browsers and app actions via MCP (remote HTTP + OAuth).
A paid remote MCP for AI SDK MCP gateway registry, built to return verdicts, receipts, usage logs, a
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AzumaChiaki/AzkiDeck-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server