Lifesign
Lifesign — Servidor de Telemetría de Estado y Salud del Usuario
Servicio HTTP ligero: recibe estado del dispositivo + datos de salud reportados desde el móvil y los expone a agentes de IA a través de MCP (Model Context Protocol). Un solo proceso, un solo puerto.
✨ Características
📱 Reporte desde el móvil: Atajo de iOS
POST /ingestenvía instantáneas de batería/ubicación/red/salud🤖 Puerta de enlace MCP: El mismo proceso monta
/mcp, los agentes de IA como Hermes lo leen directamente🏗️ Un solo puerto, un solo proceso: Carga + consulta + MCP todo reutiliza el puerto 8764, sin saltos HTTP secundarios
🐳 Listo para Docker: GitHub Actions construye la imagen automáticamente, 1Panel despliega con un clic Compose
Related MCP server: Rouse Context
🏗️ Arquitectura
手机 (iOS 快捷指令)
│ POST https://<your-domain>/user-status/ingest ← 仅上传经反代
▼
1Panel OpenResty (反向代理)
│ proxy_pass → <host-ip>:8764/ingest
▼
┌──────────────────────────────┐
│ FastAPI + FastMCP 同一进程 │
│ (单端口 8764) │
│ │
│ POST /ingest 手机上传 │
│ GET /query_all agent读取 │
│ /mcp MCP 网关 (同进程) │
└──────┬───────────────────────┘
│ 本机回环 http://127.0.0.1:8764/mcp
▼
Hermes Agent (AI)Carga desde el móvil: HTTPS público a través de proxy inverso →
8764/ingestLectura por IA: Conexión directa de bucle local a
8764/mcp(sin pasar por la red pública)Memoria compartida: Las herramientas MCP leen directamente
app.store, sin necesidad de serialización/solicitudes secundarias
🔌 Endpoints
Método | Ruta | Autenticación | Descripción |
|
| Bearer clave de móvil | El móvil reporta el estado más reciente |
|
| Bearer clave de agente | Devuelve la instantánea completa |
|
| Ninguna | Verificación de salud (para Docker HEALTHCHECK) |
|
| Ninguna (bucle local) | Endpoint MCP streamable-http |
🔑 Identidad y Configuración
Solo dos claves compartidas para identificación (identidad, no autorización a nivel de campo), ambas sobrescribibles con variables de entorno:
Uso | Variable de entorno | Valor por defecto (solo desarrollo) | Endpoint |
Clave de móvil |
|
|
|
Clave de agente |
|
|
|
Puerto de escucha |
|
| — (usado por run.sh) |
⚠️ En producción, las claves predeterminadas deben sobrescribirse mediante variables de entorno. No use los valores predeterminados del repositorio.
🚀 Inicio Rápido
Ejecución local
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
./run.sh start # 后台启动 :8764
./run.sh status
./run.sh stopEjecución con Docker
# 本地构建
docker build -t lifesign:local .
docker run -d --name lifesign -p 8764:8764 \
-e USER_STATUS_PHONE_KEY='<phone-key>' \
-e USER_STATUS_AGENT_KEY='<agent-key>' \
lifesign:localDespliegue con 1Panel Compose (recomendado)
En 1Panel → Contenedores → Orquestación, cree una nueva orquestación y pegue
docker-compose.yml;La imagen se construye automáticamente mediante GitHub Actions y se envía a GHCR, se extrae directamente al desplegar;
Solo necesita abrir 1 puerto
8764, el resto lo maneja el proxy inverso.
Envío de datos desde el móvil
# 经公网反代(手机端快捷指令用这个)
curl -s -X POST https://<your-domain>/user-status/ingest \
-H "Authorization: Bearer <phone-key>" \
-H "Content-Type: application/json" \
-d '{"deviceStage":{"battery":{"percentage":87,"is_charging":true}}}'
# 或内网直连
curl -s -X POST http://<host-ip>:8764/ingest \
-H "Authorization: Bearer <phone-key>" \
-H "Content-Type: application/json" \
-d '{"deviceStage":{"battery":{"percentage":87,"is_charging":true}}}'Configuración de Hermes MCP (config.yaml)
mcp_servers:
user-status:
type: streamable-http
url: http://127.0.0.1:8764/mcp # 本机回环,不走公网
connect_timeout: 10
timeout: 30Verificación: hermes mcp test user-status; después de reiniciar Hermes, la herramienta se registra como mcp_user_status_*.
🐳 Construcción de imagen Docker (GitHub Actions)
El repositorio incluye .github/workflows/docker-build.yml:
Disparador: push a
main/workflow_dispatchmanual / etiqueta (tag)Artefacto:
ghcr.io/<owner>/lifesign:latesty:<git-sha>doble etiquetaPlataforma:
linux/amd64,linux/arm64Nota: La imagen es privada (repositorio privado → paquete GHCR privado). Al desplegar con 1Panel, debe agregar las credenciales de inicio de sesión de GHCR en la configuración de Docker (nombre de usuario
ghcr.io+ PAT).
✅ Pruebas
. .venv/bin/activate
python -m pytest tests/ -v🗂️ Estructura del proyecto
lifesign/
├── app/
│ ├── main.py # FastAPI 入口(挂载 MCP 网关)
│ ├── mcp_server.py # FastMCP 工具定义(get_status/get_battery/...)
│ ├── store.py # 线程安全内存存储
│ ├── models/status.py # Pydantic 数据模型
│ └── routers/ # /ingest 与 /query_all 路由
├── config/clients.example.yaml # 身份配置模板(真实文件勿提交)
├── panel_api.py # 1Panel API 签名请求辅助脚本
├── docker-compose.yml # 1Panel Compose 部署编排
├── Dockerfile
├── run.sh # 本机后台启停
└── tests/📜 Licencia
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Real-time planetary signal engine and Model Context Protocol (MCP) server for autonomous AI agents.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server for OnceAsk, the AI-native current-address layer for people and agents.
Remote MCP server for AI.TV creators — delegate account operations to your AI agent over MCP.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceA real-time system diagnostics MCP server that gives AI agents live access to CPU, RAM, disk, network, processes, and hardware health metrics, with zero cloud dependency.7-
- AlicenseNot gradedqualityAmaintenanceTurn your Android phone into an MCP server. AI assistants connect on demand, query your health data, notifications, app usage, and take actions on your device — all end-to-end encrypted, no cloud sync.5Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to control Android phones via MCP and HTTP. Supports screen capture, taps, swipes, text input, and app management.6AGPL 3.0
- AlicenseAqualityDmaintenanceAn MCP server that locally authenticates with Google Health API v4 and provides read-only access to Fitbit, Pixel Watch, and other health data for AI agents.29164 npm16MIT