Skip to main content
Glama

Virtual Care MCP

A virtual-care visit that can follow you between an MCP Apps chat and a browser. Prepare an appointment, save access needs and questions, rehearse a consultation, and take the after-visit record with you.

This MIT-licensed project implements MCP and MCP Apps directly. It has no ChatGPT Apps SDK or host-specific runtime bridge.

This is a working software demonstration using fictional data. It is not HIPAA compliant and does not provide medical care. Appointments, clinician responses, insurance decisions, payments, and after-visit notes are simulated. There is no provider backend, payer connection, wallet transaction, or CIN integration.

Try it locally

Install the official stable Bun 1.4.2, then:

git clone https://github.com/collinbentley1/virtual-care-mcp.git
cd virtual-care-mcp
bun ci --no-env-file --ignore-scripts --registry=https://registry.npmjs.org
bun run build
bun start

Open localhost:3000. The MCP endpoint is http://localhost:3000/mcp. Saved fictional visits use SQLite in .local/visits.sqlite and expire after 24 hours. The server listens on loopback during local development.

Choose an older adult, rural adult, or uninsured adult scenario. The journey includes:

  • Appointment time, US physical location, and time zone.

  • Editable fictional intake, medication and allergy notes, and questions for the care team.

  • Large text, audio-first and text options, low-bandwidth preferences, and caregiver, language, interpreter, and caption requests.

  • Simulated insurance eligibility, a $35 self-pay x402 exchange, or financial assistance.

  • Consent review, a scripted consultation, and a clearly attributed sample after-visit note.

  • Resume codes, browser continuation, printable records, and a downloadable FHIR R4 collection Bundle.

Access requests are saved preferences. They do not arrange an interpreter, invite a caregiver, translate the interface, or provide live captions. You can finish the practice visit without a camera or microphone.

Related MCP server: Secure Clinical LLM Access via MCP

Connect an MCP Apps host

Deploy the server at a public HTTPS origin and add its /mcp URL as a custom remote connection in a host that supports MCP Apps. Hosted ChatGPT and Claude connections need an externally reachable endpoint; your computer's localhost URL is insufficient.

Use this starter prompt after enabling the connection:

Use Virtual Care MCP to start an older-adult fictional practice visit and open its visit UI. Use made-up information only.

The assistant calls care_start, then care_render with the returned resume credential. The same visit can continue in another host by supplying its resume code and asking for care_resume and care_render. Text tools remain available when the host cannot render the UI.

The app was tested in owned ChatGPT and Claude developer connections, including saved-state continuity and a prerecorded LiveKit participant. Claude and the browser delivered the record downloads. ChatGPT did not start the tested native download or browser handoff; manual browser resume remains available. See the account verification record for exact builds and limits.

After deploying an updated build, refresh the connection's tool metadata and open a new chat: Manage → Refresh in ChatGPT, or Refresh tools list in Claude's connector menu. Each HTML/CSP version has an immutable resource URI; existing embeds can retain their previously loaded UI.

Tool

Purpose

care_start

Create a new fictional visit. Each call creates a new draft.

care_resume

Read the latest saved visit using its scoped resume code.

care_advance

Apply a typed command with an expected revision and stable command ID.

care_simulate_payment

Rehearse the native MCP x402 challenge, proof, and settlement exchange.

care_render

Render the shared MCP Apps visit UI.

care_export

Export the synthetic visit and financial record as FHIR R4 JSON.

care_media

Request temporary LiveKit access from the app during consultation.

Anyone with a resume code can read the fictional visit until expiry and change it while it remains open. Codes are available to the connected assistant for text continuity; they are not patient authentication. Browser handoff uses a URL fragment, which the UI removes after reading it. The database retains a hash of the code. Media tokens stay separate from the saved record and model-visible tool content.

Media and billing

The optional media adapter uses the official LiveKit client and the documented LiveKit JWT contract. Configure a separate self-hosted LiveKit server to exchange real audio and video between demo participants. The default deployment supports the scripted visit without a media server. See setup, transport evidence, and lifecycle limits.

Self-pay implements x402 v2's MCP binding and a separate HTTP 402 binding. Its private mock-exact scheme validates a fixed mock authorization and records simulated settlement; it cannot sign a wallet transaction or move funds. Insurance fixtures keep eligibility and claim adjudication separate. The FHIR export includes linked coverage, eligibility, claim, response, and explanation-of-benefit resources where applicable. See the standards research and published FHIR JSON-schema validation.

Configuration

Variable

Default / use

PORT

3000 locally; the platform supplies the production port.

PUBLIC_BASE_URL

http://localhost:<PORT>; set the exact public HTTPS origin when deploying.

VISIT_STORE

sqlite; also accepts memory or firestore.

VISIT_DATABASE_PATH

.local/visits.sqlite for SQLite.

FIRESTORE_PROJECT_ID

Required for Firestore; credentials come from the service identity.

FIRESTORE_DATABASE_ID

(default).

FIRESTORE_COLLECTION

visits.

LIVEKIT_URL

Optional signalling endpoint; remote servers require wss:.

LIVEKIT_API_KEY, LIVEKIT_API_SECRET

Set together with LIVEKIT_URL through private server configuration.

Use fictional data even in a public deployment. The app checks expiry on every read and mutation. Firestore TTL handles eventual cleanup when configured; SQLite and memory prune expired visits when another visit is created. Expiry enforcement does not depend on cleanup. A completed or cancelled visit remains readable until its original expiry.

Development and deployment

bun run verify

Verification installs the exact lockfile, checks formatting, lint and types, exercises the domain and protocol, and builds the actual server and UI. Tests cover SQLite persistence, cross-client conflicts, retries, expiry, payment proof binding, FHIR fixtures, and media grant scope. Firestore transport fixtures are separate from live cloud verification.

The implementation uses @modelcontextprotocol/ext-apps 1.7.5 with stable MCP Apps protocol 2026-01-26. SDK 2.0 was released September 8, 2026 and uses the same wire protocol; it is deferred until it meets this platform's seven-day dependency age policy. See protocol and host research.

The repository adopts the shared platform for Cloud Run, Firestore, immutable workflow pins, image verification, and protected deployment. Its Dockerfile requires the platform's verified named OCI build contexts. Follow the platform adoption record for that deployment path; a plain docker build does not supply those contexts.

Architecture and verification records live in docs/decisions/architecture.md and docs/verification-plan.md. Actual host rendering and public deployment are recorded independently from local tests.

License

MIT. Contributions should preserve the direct MCP Apps interface, explicit simulation labels, portable visit state, and the separation between consultation state and media transport.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI clients to securely access, query, and mutate normalized user-controlled health data (e.g., from Apple Health or Supabase) through a bounded set of MCP tools, with optional OAuth and sandboxed deployment.
    MIT
  • -
    license
    Not graded
    quality
    B
    maintenance
    Enables clinical workflows including search and summarization of synthetic FHIR patient records, PubMed literature search, and HIPAA Safe Harbor de-identification of text, via any MCP client.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables scenario-based clinical communication practice through MCP tools for discovering scenarios, starting sessions, sending practitioner turns, and receiving evidence-linked evaluation feedback.
    MIT