# Uphealth Signal MCP server

The adaptive health-messaging engine for apps and agents. Federally-sourced. Not medical advice.

## Links
- Registry page: https://www.getdrio.com/mcp/us-uphealth-mcp
- Repository: https://github.com/ericinsf/uphealth
- Website: https://uphealth.us/docs/mcp-quickstart

## Install
- Command: `npx -y @uphealth/mcp-server`
- Endpoint: https://mcp.uphealth.us/mcp
- Auth: Auth required by registry metadata

## Setup notes
- Remote header: Authorization (secret)
- Package: Npm @uphealth/mcp-server v1.1.5
- Environment variable: UPHEALTH_API_KEY (secret)
- The upstream registry signals required auth or secrets.
- Remote endpoint: https://mcp.uphealth.us/mcp
- Header: Authorization

## Tools
- lookup_health_fact - Zero setup — NO key required. Returns ONE already-public federal health fact, list, or tip for a question or topic (e.g. "high blood pressure", "sleep", "type 2 diabetes"), with its federal source (CDC / MedlinePlus / NIH) and a link to the public uphealth.me page. Free + rate-limited. For adaptive, patient-specific message sequencing — receptivity-scored cues + audience-safety verdicts over the full library of federally-sourced facts, lists & tips — get a free Discovery key at https://uphealth.us/signup Endpoint: https://mcp.uphealth.us/mcp
- create_patient_stream - Create a Signal cued stream for one patient and get the first cue back synchronously. Every cue is federally-sourced, audience-safety-checked, and sequenced on the patient's prior response — so your agent never fabricates health content. Choose a template_id from the signal://catalog resource and pre-satisfy its required audience_tags + patient_context (clinical templates 422 without them). Display mode renders in your app: no PHI, no BAA. Each later cue MUST submit the prior message's feedback — the engine refuses to advance without it (the sequencing moat). Endpoint: https://mcp.uphealth.us/mcp
- get_next_cued_message - Submit the patient's response to the prior cue and get the next one — federally-sourced, audience-safety-checked, and re-sequenced on that feedback. REFUSES WITHOUT PRIOR-MESSAGE FEEDBACK (the moat): the engine will not advance a stream blind, returning 409 if you skip it. response_action is one of the accepted cue vocabulary (see the signal://catalog resource). Same idempotency_key + same feedback returns the cached cue; conflicting feedback under the same key returns 409. Endpoint: https://mcp.uphealth.us/mcp
- read_stream_state - Read a stream's current state, its current cued message, and event count. Read-only — does NOT advance the stream or consume a cue. Use it between feedback turns to inspect where a patient is in their federally-sourced, audience-safety-checked sequence. Endpoint: https://mcp.uphealth.us/mcp
- list_sandbox_topics - List the curated sandbox topic labels that define the free Discovery corpus — every topic federally-sourced and audience-safety-checked. Use it to preview what content domains exist before creating a stream. Does NOT enumerate messages — the corpus stays internal. For the full live template catalog + gating contract, read the signal://catalog resource. Endpoint: https://mcp.uphealth.us/mcp

## Resources
- signal://catalog - The live Signal stream templates (id, audience-tag + de-identified patient-context gating, duration, delivery modes, crisis-footer policy) plus the accepted cue response_action vocabulary. Read this BEFORE create_patient_stream to pick a template and pre-satisfy its gating. Metadata only — no patient data, no message bodies. MIME type: application/json
- signal://openapi - The machine-readable OpenAPI 3.1 contract URLs (YAML / JSON / Postman) + the docs home, plus the advisory receptivity-score semantics every cue carries. Read this to self-describe the API or generate a client. MIME type: application/json

## Prompts
- pick_template - Choose the single best Signal stream template for a patient/clinical context, and list the audience_tags + de-identified patient_context that create_patient_stream will require. Reads the signal://catalog resource so it never invents a template_id. Arguments: clinical_context
- evaluate_signal - Run a complete Signal episode end to end: read the catalog, pick a template, create a Display-mode stream with no PHI, then loop cues — submitting the prior response each time — and branch on the receptivity score + audience-safety verdict. The canonical way to evaluate whether Signal fits before integrating. Arguments: goal, patient_summary

## Metadata
- Owner: us.uphealth
- Version: 1.1.5
- Runtime: Npm
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jul 22, 2026
- Source: https://registry.modelcontextprotocol.io
