CardioTriage MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CardioTriage MCP Server summarize cardiovascular risk for case A"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
Quick Links
Live MCP endpoint:
https://claudiomedina17--mcp.modal.run/mcpLive health endpoint:
https://claudiomedina17--mcp.modal.run/healthMarketplace listing evidence:
docs/MARKETPLACE_VERIFICATION.mdDemo video:
TBD - Phase 2Devpost submission:
TBD - Phase 2Repository:
TBD public repo URL(local prototype workspace)Data provenance:
docs/DATA_PROVENANCE.mdBYO Agent system prompt:
docs/BYO_AGENT_SYSTEM_PROMPT.md
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:
Domain logic: synthetic FHIR R5 case bundles, HEART-style risk signals, missing-data review, and deterministic SBAR handoff scaffolding.
AI-ECG layer: ECG signal preprocessing plus ECGFounder 1024-d embeddings, centroid cosine similarity, and neurokit2-derived signal features.
MCP server: FastMCP tools exposed over Streamable HTTP for Prompt Opinion.
BYO Agent wrapper: a Prompt Opinion demo agent orchestrates the six tools with concise clinical rationale before each call.
Submission polish: provenance docs, Marketplace evidence, cache skeletons, disclaimers, and a reproducible local test suite.
Six MCP Tools
# | Tool | Purpose |
1 |
| Discover the available demo case IDs A, B, and C. |
2 |
| Return the FHIR R5-style bundle for the selected case. |
3 |
| Flag missing or pending triage data such as troponin, echo, Chagas serology, or contraindications. |
4 |
| Summarize deterministic cardiovascular risk signals for STEMI, HF/Chagas, or low-risk patterns. |
5 |
| Generate an SBAR-style handoff note in |
6 |
| 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.mainThe 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.mainHealth smoke:
curl.exe http://127.0.0.1:8000/healthMarketplace 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.
Open Prompt Opinion.
Go to Configuration -> MCP Servers -> Add.
Friendly name:
CardioTriage MCP Server.Endpoint:
https://claudiomedina17--mcp.modal.run/mcp.Transport: Streamable HTTP.
Authentication: No authentication / open.
Save and verify that the server appears in the workspace MCP server list.
Confirm
/health,initialize, andtools/listexpose six tools.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.
Tools tab: attach
CardioTriage MCP Server.System Prompt tab: paste
docs/BYO_AGENT_SYSTEM_PROMPT.md.Save.
Run:
Triage Case B end-to-end. Use Spanish for the handoff.Expected trace: all six tools in order, including
interpret_12_lead_ecg, withchagas_suspect_demo_scorearound0.925andcalibration_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 toolsanalyze_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
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
Privacy-preserving synthetic health data generation. FHIR R4/R5 compliant.
Telehealth support for Claude, Codex and Cursor: investigate cases and connect your tools.
HealthGuard - 12-tool health/medical AI safety MCP: PII redaction, HIPAA, GDPR Art.9.
Medical RAG: semantic search for clinical guidelines, drug interactions, diagnoses & EHR data.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables 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 npm35 PyPIMIT
- FlicenseNot gradedqualityDmaintenanceProvides structured tools for risk classification, SBAR generation, completeness validation, follow-up task extraction, and ward preference management for clinical handover coordination agents.-
- AlicenseNot gradedqualityBmaintenanceEnables 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
- FlicenseNot gradedqualityAmaintenanceEnables 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.-