Skip to main content
Glama
tomwugdgz

Happy MedBox MCP Server

by tomwugdgz

Hausapotheken-Managementsystem (Happy MedBox)

Drei-Endpunkte-Softwaregerüst: WeChat-Miniprogramm + Node/SQLite-Backend + MCP-Server + A2A-Erinnerungsagent. Kernablauf: Foto erfassen → erkennen → in Datenbank schreiben → regelmäßig auf Ablauf scannen → MCP stellt Datenschnittstelle bereit → A2A löst Erinnerung aus → Miniprogramm zeigt Erinnerungen und Vorschläge an.

Technische Auswahl: Backend und Miniprogramm werden nativ / ohne externe Abhängigkeiten implementiert (Node 22 eingebautes http / node:sqlite / node:test), lauffähig und testbar offline mit node, kein npm install erforderlich.

Verzeichnisstruktur

happy-medbox/
├─ prd.md / architecture.md      # 产品需求 + 系统架构(团队 SOP 产出)
├─ package.json / README.md
├─ src/                          # 后端:API + 数据库 + MCP + A2A
│  ├─ db.js          # SQLite 连接与建表(node:sqlite)
│  ├─ expiry.js      # 过期计算(纯函数,可单测)
│  ├─ ocr.js         # OCR 接口 + Mock(预留腾讯云/微信 OCR)
│  ├─ repository.js  # 数据访问层 CRUD
│  ├─ mcp-server.js  # MCP 工具 + JSON-RPC(stdio)
│  ├─ server.js      # REST API(小程序对接)
│  ├─ a2a-server.js  # 提醒代理 + 用户代理(双端口,A2A 推送)
│  ├─ seed.js        # 样例数据
│  └─ index.js       # 编排入口(启动 + 定时扫描)
├─ miniprogram/                  # 微信小程序端(原生)
│  ├─ pages/{index,capture,detail,knowledge,reminder}/
│  └─ utils/{api,ocr,format}.js
└─ test/                         # 单元测试(expiry/db/mcp/a2a)

Related MCP server: Medical MCP Server

Schnellstart

1. Backend + A2A starten (Standardports 3000 / 4100 / 4200)

cd happy-medbox
node src/index.js

Nach dem Start:

  • Miniprogramm verbindet sich mit REST: http://localhost:3000

  • Erinnerungsagent (AgentCard / Scan auslösen): http://localhost:4100

  • Benutzeragenten-Posteingang: http://localhost:4200

Umgebungsvariablen: API_PORT / REMINDER_PORT / USER_PORT / WARNING_DAYS(Standard 30) / REMINDER_INTERVAL_MS(Standard 60000) / MEDBOX_DB(Standard data/medbox.db, für In-Memory-Datenbank :memory:).

2. Tests ausführen (19 Tests, alle bestanden)

node --test

3. MCP-Server separat starten (für AI-Assistent stdio-Aufruf)

node src/mcp-server.js
# 支持 initialize / tools/list / tools/call
# 工具:query_medicines / recognize_medicine_image / compute_expiry /
#       get_medication_advice / add_medicine / list_expiring

4. Miniprogramm öffnen

Importieren Sie das Verzeichnis miniprogram/ mit den WeChat-Entwicklertools (die appid ist bereits auf touristappid gesetzt, im Gastmodus direkt in der Vorschau verfügbar). Ändern Sie bei der echten Gerätedebugging die baseUrl in miniprogram/app.js auf die lokale IP des Computers (z. B. http://192.168.x.x:3000) und aktivieren Sie in den Entwicklertools die Option "Legale Domainnamen nicht überprüfen".

Erläuterung der Schlüsselprozesse

  • Fotoerkennung: capture-Seite wx.chooseMedia → POST /api/ocr → aktuell Rückgabe von Mock-strukturierten Feldern (Name/Spezifikation/Herstellungsdatum/Verfallsdatum), Benutzer überprüft und sendet dann POST /api/medicines zur Datenbank.

  • Countdown bis Ablauf: Backend expiry.js berechnet dynamisch die verbleibenden Tage und den Status (safe/warning/expired) basierend auf dem aktuellen Datum; Miniprogramm-Startseite und Detailseite zeigen dies an.

  • Zeitgesteuerter Scan + A2A-Push: Der Erinnerungsagent in a2a-server.js scannt in Intervallen nach bald ablaufenden Medikamenten → schreibt in die reminders-Tabelle und kapselt eine A2A Task → HTTP-Push an den Benutzeragenten /tasks (Nachrichtenweiterleitung zwischen Agenten) → Miniprogramm reminder-Seite pollt zur Anzeige, Benutzer kann als gelesen markieren.

  • MCP-Datenschnittstelle: AI-Assistent ruft über stdio JSON-RPC sechs Tools auf, um bei Bedarf Medikamente abzufragen, zu erkennen, das Verfallsdatum zu berechnen oder Medikationsvorschläge abzurufen.

Empfehlungen für die Produktion (Schnittstellenvertrag bleibt gleich)

  • Datenbank: node:sqlite → better-sqlite3 (schneller, synchron).

  • MCP: src/mcp-server.js eigene JSON-RPC-Implementierung → offizielles @modelcontextprotocol/sdk.

  • REST: Eingebautes http → Express/Fastify.

  • OCR: ocr.js Mock-Zweig → Einbindung von Tencent Cloud allgemeiner Druckschrift-OCR oder WeChat OCR Plugin (erfordert Schlüssel/Berechtigungen).

Bekannte Einschränkungen (MVP-Umfang)

  • Erinnerungskanal verwendet zunächst Polling innerhalb des Miniprogramms, Schnittstelle für WeChat-Abonnementnachrichten bleibt vorbereitet.

  • Wissensdatenbank enthält nur wenige eingebaute Beispiele, Admin-Hintergrund muss noch entwickelt werden (P2).

  • Kein Kontosystem, lokale Kennzeichnung pro Familie (P2 für Multi-Endpunkt-Synchronisation).

Related MCP Connectors

Related MCP Servers