Inspiration
CRNA programs run on clinical training scenarios, written case studies where students reason through anesthetic plans for a specific patient. Today those scenarios are written by hand, generic, and disconnected from any real patient context. Meanwhile, the FHIR ecosystem has standardized how patient data moves between systems, and MCP has standardized how agents call tools. Nobody had connected the three.
PrecepGo already runs production clinical education software for Gonzaga University's DNAP program. When Prompt Opinion's FHIR Context extension shipped, the path was obvious: take the same generative scenario engine students use today, expose it through MCP, and let any healthcare agent personalize anesthesia training to whatever patient is in context.
What it does
PrecepGo CRNA FHIR Scenarios is an MCP server that turns a FHIR patient into a board-grade nurse anesthesia training scenario.
Two tools:
cache_patient_for_demoingests a FHIRPatient, plusCondition,MedicationRequest, andAllergyIntolerancewhen scoped. PHI is stripped at the boundary (no names, addresses, or MRNs) and records are keyed only by FHIR Patient ID. Idempotent, so re-invoking refreshes the snapshot.create_clinical_scenariogenerates a CRNA anesthesia training case tailored to the cached patient's profile, with selectable difficulty (beginner, intermediate, advanced) and student class standing. Returns a 2 to 3 sentence clinical narrative, 3 to 5 student decision points, and topic-level citations into a curated anesthesia knowledge base via vector search. If you omitprocedure_type, the model picks an age- and condition-appropriate case on its own.
The scenarios aren't generic templates with names swapped in. A 78-year-old with atrial fibrillation on warfarin gets a different airway plan, a different induction sequence, and different decision points than a 34-year-old with well-controlled asthma, because the underlying engine is the same one Gonzaga students train against today.
How it was built
The MCP server wraps PrecepGo's existing scenario pipeline:
- FHIR ingestion layer parses inbound resources against the
ai.promptopinion/fhir-contextextension. Patient scope is required.Condition,MedicationRequest,AllergyIntolerance, andObservationdegrade gracefully when the workspace doesn't grant them, and scenarios still personalize on demographics and Patient ID alone. - De-identification runs at the cache boundary. PHI never reaches the training pool.
- Scenario generation combines the patient profile with retrieval over a chunked, citation-tagged anesthesia knowledge corpus, then asks the model to produce structured output: narrative, decision points, and topic-level citations as discrete fields, not free text.
- MCP transport exposes both tools with strict JSON schemas so agents can call them without prompt engineering.
The MCP server runs on Cloud Run (Python / FastAPI), and its tools relay to Firebase Cloud Functions where PrecepGo's production backend already lives.
Challenges we ran into
The hardest part wasn't the MCP wiring. It was making the scenarios actually good. Early versions produced clinically plausible but pedagogically flat cases: correct medications, no real decision tension. Fixing that meant restructuring the prompt to require explicit decision points with competing reasonable answers, and grounding citations at the topic level rather than the document level so students can actually find what they're being cited to.
Graceful degradation across FHIR scopes was the second one. Workspaces grant different resource access, and the server had to produce a useful scenario whether it got the full clinical picture or just demographics.
What we learned
FHIR plus MCP is a real unlock for healthcare education, not just clinical care. The same patient context that lets a clinical agent reason about a real patient lets a training agent generate a personalized case study for a student. The student never sees the real patient (PHI stays inside the FHIR boundary) but the realism of the training improves dramatically.
What's next
- Expanding beyond CRNA into other anesthesia and acute-care training audiences
- COA Standard D accreditation analytics exposed as MCP tools for program directors
- Student performance analytics, so agents can reason about where a specific student is in their training trajectory
- Multi-patient scenario chaining for OR-day simulation

Log in or sign up for Devpost to join the conversation.