AzkiDeck-mcp-server
AzkiDeck-mcp-server
AzkiDeck 的多租户 MCP 中继服务器:让 MCP 客户端(Claude Desktop / Claude Code 等)随时随地连到用户手机上的 AzkiDeck App(Android / iOS),把通知推上手表、安装表盘/快应用、管理通知图标——不再要求手机与电脑处于同一局域网。
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 核心)Eigenschaften
Multi-Tenant-Isolation:Die Anmeldedaten sind der Mandant. Die Anmeldedaten werden von der mobilen App generiert und gehalten (Wiederverwendung des LAN-Bridge-Tokens der App); der Server speichert nur den SHA-256-Hash; Geräte, Tools und Puffer verschiedener Mandanten sind vollständig isoliert.
Multi-Geräte-Aggregation:Derselbe Anmeldedatensatz kann mehrere Telefone (iPhone + Android) anhängen; die Tool-Liste wird automatisch dedupliziert und zusammengeführt, Aufrufe werden an das zuletzt aktive Gerät weitergeleitet.
Offline-Nachlieferung:Wenn ein Gerät innerhalb von 10 Minuten wieder verbunden wird, werden Benachrichtigungsaufrufe der letzten 5 Minuten nachgeliefert (Fortschrittsaufrufe werden automatisch auf den neuesten Eintrag komprimiert; durch
cleargelöschte Benachrichtigungen werden nicht nachgeliefert); außerhalb des Fensters wird als offline gewertet und nicht nachgeliefert.Öffentlicher/privater Doppelmodus:Im öffentlichen Modus genügt die Angabe der Adresse zur Kopplung; im privaten Modus ist zusätzlich ein Bereitstellungsschlüssel erforderlich; während des Betriebs kann umgeschaltet werden, wobei optional eine erneute Authentifizierung bereits gekoppelter Geräte verlangt werden kann.
Minimale Abhängigkeiten:Zur Laufzeit nur eine Abhängigkeit
ws; Node ≥ 22.13 (verwendet eingebautesnode:sqlite).
Related MCP server: AItomation MCP relay
Schnellstart
# 需要 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 命令Bei öffentlicher Bereitstellung muss TLS aktiviert sein (eingebautes TLS_CERT/TLS_KEY oder Reverse-Proxy mit Caddy/nginx), siehe docs/deployment.md.
Konfiguration auf dem Telefon
App → Werkzeugkasten → AI-Benachrichtigungsbrücke: bestätigen, dass sie aktiviert ist (das Token befindet sich hier)
Relay-Modus (Einstellungsseite): Serveradresse eintragen, die Anmeldedaten übernehmen automatisch das Brücken-Token; wenn der Server im privaten Modus ist, muss zusätzlich der Bereitstellungsschlüssel eingetragen werden
Die App zeigt „Relay verbunden" an, die Kopplung ist abgeschlossen
MCP-Client-Anbindung
claude mcp add --scope user --transport http azki-watch \
https://你的服务器/mcp --header "Authorization: Bearer <手机 App 里的令牌>"Mehrere Clients (Computer, Laptop, CI) können dasselbe Token gemeinsam nutzen.
Testgerät-Integration (ohne Telefon)
azkideck-mcp-server serve &
node scripts/fake-device.mjs --server ws://127.0.0.1:8787 --credential <任意32位hex>
# 之后 Claude 里调用 send_notification,假设备终端会打印 payloadVerwaltung
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]Laufzeit-Verwaltungs-API (aktiviert durch die Umgebungsvariable ADMIN_TOKEN):
Endpunkt | Beschreibung |
| Öffentlicher Health-Check, enthält nur Zähler |
| Mandantenliste (ID zeigt nur 8-stelliges Präfix) |
| Online-Geräte |
| Widerrufen/Wiederherstellen |
| Modus anzeigen/umschalten; |
Konfiguration (Umgebungsvariablen)
Variable | Standard | Beschreibung |
| 8787 / 0.0.0.0 | Listenadresse |
|
| SQLite-Datenverzeichnis |
|
| Im öffentlichen Modus wird bei der ersten Verbindung eines Geräts automatisch ein Mandant erstellt |
| (keine) | Wenn gesetzt, aktiviert |
| (keine) | Wenn beide gesetzt, aktiviert eingebautes HTTPS/WSS |
| 30000 / 60000 | Timeout für Tool-Aufrufe |
| 300000 | Offline-Puffer 5 Minuten aufbewahren |
| 600000 | Fenster für Nachlieferung nach Trennung 10 Minuten |
| 120 / 600 / 20 | Ratenbegrenzung |
Sicherheitsmodell
Der Server speichert niemals Anmeldedaten im Klartext (SHA-256-Hash), der Vergleich verwendet einen Algorithmus mit konstanter Zeit.
Bei öffentlicher Bereitstellung bitte TLS erzwingen; das Token hat 128 Bit Entropie, 401 wird pro Quell-IP begrenzt.
Widerruf der Anmeldedaten wirkt sofort: Online-Geräte werden gekickt, MCP-Seite erhält 401, und es erfolgt keine automatische Wiederherstellung.
Der private Modus beschränkt „wer koppeln kann" auf Personen mit dem Bereitstellungsschlüssel; mit
require_reauthkann beim Umschalten eine erneute Authentifizierung aller gekoppelten Geräte erzwungen werden.
Beziehung zum LAN-Modus
LAN-Direktverbindung (App-integriert) | Relay-Server | |
Anforderung | Computer und Telefon im selben Netzwerk | Telefon muss nur online sein |
Adresse | Ändert sich bei WLAN-Wechsel | Fest |
Datenpfad | Kein Dritter beteiligt | Über Relay (Server sieht nur Hash und weitergeleitete verschlüsselte Daten/Aufrufinhalte) |
Offline | Direkter Fehlschlag | Benachrichtigungsaufrufe werden in der Warteschlange nachgeliefert |
Beide können gleichzeitig aktiviert werden, ohne sich gegenseitig zu beeinflussen.
Entwicklung
npm install
npm run dev # tsx watch
npm test # vitest(含 e2e:真实端口 + 假设备)
npm run lint && npm run typecheckProtokolldetails siehe docs/protocol.md (Implementierungsspezifikation für die Telefonseite).
Lizenz
This server cannot be deployed
Maintenance
Related MCP Connectors
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
Remote MCP server for Web3TV creators — manage your account over MCP.
Remote MCP server for AI.TV creators — delegate account operations to your AI agent over MCP.
Access Kernel's cloud-based browsers and app actions via MCP (remote HTTP + OAuth).
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceEnables secure remote access to your computer's filesystem and terminal through MCP, allowing AI assistants to manage files, run commands, and automate tasks from anywhere via a hosted relay.145-
- AlicenseNot gradedqualityCmaintenanceEnables external AI applications to access MCP tools by providing a user-hosted HTTPS endpoint that forwards requests to a paired desktop client.MIT
- AlicenseNot gradedqualityBmaintenanceEnables desktop agents such as Claude Code and Codex to control an Android phone as a long-lived action endpoint, pairing over outbound WebSocket and exposing phone capabilities as MCP tools with local pause and revocation.MIT
- AlicenseNot gradedqualityBmaintenanceEnables remote MCP clients to access local MCP servers and command-line tools over the web, with user approval required for every connection.1MIT