Skip to content
Grok

Last EHR — Medplum for Grok

io.github.cbetz/last-ehr

FHIR chart tools for MCP: read-only by default, with elicitation-gated, human-approved writes.

client:Grok transport:stdio runtime:npm

Install Last EHR — Medplum in Grok

.mcp.json (in your project root)

Held in this page only — never stored, logged, or sent anywhere but back to your screen.

{
  "mcpServers": {
    "last-ehr": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@lastehr/mcp"
      ],
      "env": {
        "MEDPLUM_ACCESS_TOKEN": "<MEDPLUM_ACCESS_TOKEN>",
        "MEDPLUM_CLIENT_ID": "<MEDPLUM_CLIENT_ID>",
        "MEDPLUM_CLIENT_SECRET": "<MEDPLUM_CLIENT_SECRET>",
        "MEDPLUM_BASE_URL": "<MEDPLUM_BASE_URL>",
        "LASTEHR_BACKEND": "<LASTEHR_BACKEND>",
        "LASTEHR_EXPERIMENTAL_FHIR_ADAPTERS": "<LASTEHR_EXPERIMENTAL_FHIR_ADAPTERS>",
        "LASTEHR_CLIENT_ID": "<LASTEHR_CLIENT_ID>",
        "LASTEHR_PRIVATE_KEY": "<LASTEHR_PRIVATE_KEY>",
        "LASTEHR_PRIVATE_KEY_PATH": "<LASTEHR_PRIVATE_KEY_PATH>",
        "LASTEHR_KEY_ID": "<LASTEHR_KEY_ID>",
        "LASTEHR_JWKS_URL": "<LASTEHR_JWKS_URL>",
        "LASTEHR_SCOPES": "<LASTEHR_SCOPES>",
        "LASTEHR_FHIR_BASE_URL": "<LASTEHR_FHIR_BASE_URL>",
        "LASTEHR_TOKEN_URL": "<LASTEHR_TOKEN_URL>",
        "LASTEHR_ENCOUNTER": "<LASTEHR_ENCOUNTER>",
        "LASTEHR_PERFORMER": "<LASTEHR_PERFORMER>"
      }
    }
  }
}

Grok Build reads Claude Code's .mcp.json and Claude Desktop's config unchanged, so a server you have already set up there needs nothing new. The Grok web app and X integration do not take custom servers. Grok docs

Last EHR — Medplum in other clients