Skip to main content
Glama
CardioTriage MCP Server

CardioTriage MCP Server

CardioTriage MCP — Phenotype-aware Cardiovascular Triage

Prompt Opinion MCP superpower for phenotype-aware emergency cardiovascular triage with FHIR R5 context, missing-data checks, structured bilingual handoff, and Chagas-compatible cardiomyopathy differential surfacing backed by ECGFounder bridge phenotype detection.

NOT FOR CLINICAL USE. Hackathon demonstration only. Synthetic FHIR metadata plus public de-identified ECG samples. Foundation model outputs are uncalibrated demo scores -- they SURFACE differentials for clinical workup, never DIAGNOSE conditions.

We do not propose AI-ECG as a replacement for serology.

Related MCP server: Clinical Handover MCP Server

We propose it as a low-cost triage layer.

Elevator Pitch

CardioTriage gives any Prompt Opinion agent a governed phenotype-aware cardiovascular triage toolkit instead of a free-text-only workflow.

It exposes six MCP tools that discover cases, retrieve FHIR R5 bundles, check critical missing data, run ECGFounder-backed phenotype inference, summarize risk signals, and render an SBAR handoff note.

The ECG tool uses ECGFounder (PKUDigitalHealth, MIT; NEJM AI 2025) embeddings and signal features to return transparent uncalibrated demo scores.

The demo is anchored on chest-pain triage, STEMI pattern recognition, and a Latam Chagas-compatible cardiomyopathy workup scenario.

The MCP server is the primary submission; the Prompt Opinion BYO Agent is the demo wrapper that proves the tools are invokable inside the platform.

Architecture Summary

CardioTriage uses a five-layer architecture:

  1. Domain logic: synthetic FHIR R5 case bundles, HEART-style risk signals, missing-data review, and deterministic SBAR handoff scaffolding.

  2. AI-ECG layer: ECG signal preprocessing plus ECGFounder 1024-d embeddings, centroid cosine similarity, and neurokit2-derived signal features.

  3. MCP server: FastMCP tools exposed over Streamable HTTP for Prompt Opinion.

  4. BYO Agent wrapper: a Prompt Opinion demo agent orchestrates the six tools with concise clinical rationale before each call.

  5. Submission polish: provenance docs, Marketplace evidence, cache skeletons, disclaimers, and a reproducible local test suite.

Six MCP Tools

#

Tool

Purpose

1

list_synthetic_cases

Discover the available demo case IDs A, B, and C.

2

get_fhir_case_bundle

Return the FHIR R5-style bundle for the selected case.

3

analyze_missing_critical_data

Flag missing or pending triage data such as troponin, echo, Chagas serology, or contraindications.

4

summarize_cardiovascular_risk_signals

Summarize deterministic cardiovascular risk signals for STEMI, HF/Chagas, or low-risk patterns.

5

generate_structured_handoff_note

Generate an SBAR-style handoff note in en, es, or pt.

6

interpret_12_lead_ecg

AI-ECG inference (lite + live), uncalibrated demo scores. Bridge phenotype detection backed by ECGFounder; surfaces Chagas-compatible cardiomyopathy pattern when context warrants serology workup. NOT a diagnostic tool.

Tool #6 scores are evidence signals for the hackathon demo. They surface phenotype-aware differentials for workup; they are not calibrated clinical probabilities.

Local Development

uv sync
uv run pytest tests/ -q
uv run python -m server.main

The default transport is stdio. For local Streamable HTTP:

$env:CARDIOTRIAGE_MCP_TRANSPORT = "streamable-http"
$env:CARDIOTRIAGE_MCP_HOST = "127.0.0.1"
$env:CARDIOTRIAGE_MCP_PORT = "8000"
$env:CARDIOTRIAGE_MCP_PATH = "/mcp"
uv run python -m server.main

Health smoke:

curl.exe http://127.0.0.1:8000/health

Marketplace Publish Steps

Phase 0 Gate 0 found that CardioTriage is usable in Prompt Opinion as a WORKSPACE-ONLY listing. Public Marketplace publishing may require subscription publishing enablement.

  1. Open Prompt Opinion.

  2. Go to Configuration -> MCP Servers -> Add.

  3. Friendly name: CardioTriage MCP Server.

  4. Endpoint: https://claudiomedina17--mcp.modal.run/mcp.

  5. Transport: Streamable HTTP.

  6. Authentication: No authentication / open.

  7. Save and verify that the server appears in the workspace MCP server list.

  8. Confirm /health, initialize, and tools/list expose six tools.

  9. Use screenshots from the workspace Manage view as Marketplace evidence if public listing remains unavailable.

See docs/MARKETPLACE_VERIFICATION.md.

BYO Agent Demo

Open or create the Prompt Opinion BYO Agent named CardioTriage Demo.

  1. Tools tab: attach CardioTriage MCP Server.

  2. System Prompt tab: paste docs/BYO_AGENT_SYSTEM_PROMPT.md.

  3. Save.

  4. Run: Triage Case B end-to-end. Use Spanish for the handoff.

  5. Expected trace: all six tools in order, including interpret_12_lead_ecg, with chagas_suspect_demo_score around 0.925 and calibration_status="uncalibrated_demo".

Offline deterministic cache skeletons live in cardiotriage_core/demo_cache/run_case_{a,b,c}.json; rationale and final PO handoff text remain TODO_LIVE_CAPTURE until Claudio captures real UI runs.

License

MIT. See LICENSE.

Acknowledgements

  • ECGFounder by PKUDigitalHealth (MIT license), used for ECG foundation-model embeddings.

  • CODE-15 / Ribeiro et al., Zenodo 4916206, CC-BY 4.0, for public de-identified ECG demo samples.

  • SaMi-Trop / PhysioNet Challenge 2025 for the Chagas-cohort public de-identified ECG demo sample.

  • Bern et al., CDC 2007, for Chagas disease clinical grounding.

  • Nunes et al., JACC 2013, for Chagas cardiomyopathy clinical grounding.

  • Anthropic Claude Haiku for the planned Prompt Opinion BYO Agent narrative layer; this repository does not run live LLM API calls during deterministic cache generation.

Disclaimer

NOT FOR CLINICAL USE. This software is a hackathon demonstration. Demo data only: synthetic FHIR metadata plus public de-identified ECG samples. Scores are uncalibrated demo scores, not clinical probabilities. A licensed clinician must validate all findings and actions.

Available Tools

6 tools
analyze_missing_critical_dataA

Flag missing or pending critical cardiovascular triage data for a synthetic case. Use before risk disposition. NOT for clinical use.

Inputs: case_id (required). Returns: case_id, missing, disclaimer

generate_structured_handoff_noteA

Generate a deterministic SBAR-style handoff note for a synthetic case in English, Spanish, or Portuguese. Use after risk and missing-data review. NOT for clinical use.

Inputs: case_id (required), language. Returns: case_id, language, style, note, +2 more

get_fhir_case_bundleA

Return a synthetic FHIR-like bundle for case A, B, C, or D. Use after selecting a case ID. Synthetic data only; NOT for clinical use.

Inputs: case_id (required). Returns: case_id, bundle, disclaimer

interpret_12_lead_ecgA

Run AI-ECG analysis on a 12-lead recording. Default case_id mode uses precomputed ECGFounder embeddings; advanced raw ECG mode routes to live inference when available. Returns uncalibrated demo scores. NOT for clinical use.

Inputs: case_id (required), ecg_array, sampling_rate.

list_synthetic_casesA

List available synthetic demo cases. Use first when an agent needs to discover CardioTriage case IDs. NOT for clinical use.

Inputs: no named parameters. Returns: cases, disclaimer

summarize_cardiovascular_risk_signalsA

Summarize deterministic cardiovascular risk signals for a synthetic case. Use for STEMI, HF/Chagas, or low-risk pattern triage. NOT for clinical use.

Inputs: case_id (required). Returns: case_id, signals, disclaimer

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.2/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool targets a distinct aspect of the workflow: listing cases, retrieving data, analyzing ECG, summarizing risk, checking missing data, and generating a handoff note. No two tools have overlapping purposes.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (e.g., list_synthetic_cases, interpret_12_lead_ecg), using snake_case throughout. No mixing of conventions or vague verbs.

    Tool Count5/5

    Six tools is well-scoped for a synthetic triage demo, covering discovery, data retrieval, multiple analysis types, and output generation. Neither too few nor too many for the purpose.

    Completeness5/5

    The tool set covers the complete triage workflow: case selection, data retrieval, ECG interpretation, risk signal extraction, missing data check, and handoff note generation. No obvious gaps for a synthetic demo.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI applications to securely search and manage healthcare data from FHIR R4-compliant servers with built-in safety validation for AI-generated clinical observations, preventing recording of physiologically impossible values.
      7 npm
      35 PyPI
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables ambient multimodal clinical triage by fusing wearable ECG/PPG and acoustic distress signals, applying deterministic Manchester Triage safety governance, and orchestrating emergency actions such as E911 dispatch, smart-lock access, and CPR coaching through MCP tools and resources.
      Apache 2.0
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables LLM-based agents and MCP-compatible clients to query and manipulate clinical data on a FHIR-compliant backend through CRUD resource tools, document ingestion, semantic search, and terminology lookup.
      -