Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
EPIC_MCP_HOMENoData folder. The default is ~/.epic-mcp. All local data (tokens.json, access_log.jsonl and certs/) lives there.
EPIC_CLIENT_IDNoThe production client ID.
EPIC_FHIR_BASENoYour health system's FHIR R4 base URL, from Epic's endpoint directory. By default, Epic MCP connects to Epic's sandbox, which has test patients only.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Reads the signed-in patient's own medication list from MyChart (Epic) via FHIR. Read-only. If a tool says the user is not signed in, call login, show the user the sign-in link, and after they finish call login_status. Medication info is not medical advice; suggest confirming changes with their care team or pharmacist.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
loginA

Start MyChart sign-in. Returns a link the user must open to sign in and approve access.

complete_loginA

Finish sign-in by passing the full URL the browser ended on (https://localhost:.../callback?code=...).

login_statusA

Report whether the user is signed in to MyChart and when the session expires.

logoutA

Delete the locally stored MyChart tokens.

get_medicationsA

Get the signed-in patient's medication list (prescriptions and outside records).

status: "active" (default) for current meds, "all" for full history, or a specific FHIR status.
get_patientA

Get the signed-in patient's basic demographics (name, birth date) to confirm whose record this is.

get_access_logB

Show the local record of every time Epic MCP fetched health data (most recent last).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation4/5

The auth lifecycle steps (login, complete_login, login_status, logout) are related but distinguishable via their descriptions, and the data tools (get_medications, get_patient) plus audit tool (get_access_log) are clearly separate. The main risk is an agent confusing login with complete_login when skimming names, though the descriptions resolve it.

Naming Consistency4/5

All names use snake_case and are readable, with data tools following a get_noun pattern. Auth tools deviate (login, complete_login, login_status, logout) but the deviation is semantically sensible; login_status is the only name that doesn't fit a pure verb_noun shape.

Tool Count5/5

Seven tools is well-scoped: four cover the necessary OAuth/MyChart sign-in lifecycle, two fetch patient data, and one provides an audit trail. Each tool has a clear reason to exist and nothing feels redundant.

Completeness2/5

The auth lifecycle and audit logging are complete, but for an Epic/MyChart patient-access server the data surface is very thin: only medications and basic demographics. Common FHIR resources such as lab results, conditions, allergies, immunizations, appointments, and messages are absent, so many plausible patient queries will dead-end.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues