プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

Last EHR — Medplum

作者:cbetzバージョン 0.5.1i★ –iパソコンで動く
レジストリ名io.github.cbetz/last-ehr

インストール

概要

作者による説明(英語の原文)

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

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: クリニック・健康
  • 入力が必要なもの:MEDPLUM_ACCESS_TOKEN, MEDPLUM_CLIENT_SECRET, LASTEHR_PRIVATE_KEY

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: MEDPLUM_ACCESS_TOKEN, MEDPLUM_CLIENT_ID, MEDPLUM_CLIENT_SECRET, MEDPLUM_BASE_URL, LASTEHR_BACKEND, LASTEHR_EXPERIMENTAL_FHIR_ADAPTERS, LASTEHR_CLIENT_ID, LASTEHR_PRIVATE_KEY, LASTEHR_PRIVATE_KEY_PATH, LASTEHR_KEY_ID, LASTEHR_JWKS_URL, LASTEHR_SCOPES, LASTEHR_FHIR_BASE_URL, LASTEHR_TOKEN_URL, LASTEHR_ENCOUNTER, LASTEHR_PERFORMER

「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。

必要なもの

  • npmNode.jsのインストール(npxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

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

ターミナルでこれを実行します

claude mcp add last-ehr --env MEDPLUM_ACCESS_TOKEN=your-value --env MEDPLUM_CLIENT_ID=your-value --env MEDPLUM_CLIENT_SECRET=your-value --env MEDPLUM_BASE_URL=your-value --env LASTEHR_BACKEND=your-value --env LASTEHR_EXPERIMENTAL_FHIR_ADAPTERS=your-value --env LASTEHR_CLIENT_ID=your-value --env LASTEHR_PRIVATE_KEY=your-value --env LASTEHR_PRIVATE_KEY_PATH=your-value --env LASTEHR_KEY_ID=your-value --env LASTEHR_JWKS_URL=your-value --env LASTEHR_SCOPES=your-value --env LASTEHR_FHIR_BASE_URL=your-value --env LASTEHR_TOKEN_URL=your-value --env LASTEHR_ENCOUNTER=your-value --env LASTEHR_PERFORMER=your-value -- npx -y @lastehr/mcp

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

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

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

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

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • MEDPLUM_ACCESS_TOKEN 秘密 env
    FHIR chart tools over Medplum or a local HAPI stack: read-only by default, with an opt-in elicitation-gated write profile (human-approved per action).
  • MEDPLUM_CLIENT_ID env
    FHIR chart tools over Medplum or a local HAPI stack: read-only by default, with an opt-in elicitation-gated write profile (human-approved per action).
  • MEDPLUM_CLIENT_SECRET 秘密 env
    FHIR chart tools over Medplum or a local HAPI stack: read-only by default, with an opt-in elicitation-gated write profile (human-approved per action).
  • MEDPLUM_BASE_URL env
    FHIR chart tools over Medplum or a local HAPI stack: read-only by default, with an opt-in elicitation-gated write profile (human-approved per action).
  • LASTEHR_BACKEND env
    epic, oracle, or smart. Requires LASTEHR_EXPERIMENTAL_FHIR_ADAPTERS=1. Sandbox writes are approval-gated and persist because those sandboxes do not support delete.
  • LASTEHR_EXPERIMENTAL_FHIR_ADAPTERS env
    Set to 1 to enable LASTEHR_BACKEND epic, oracle, or smart.
  • LASTEHR_CLIENT_ID env
    SMART Backend Services client id. Not a secret.
  • LASTEHR_PRIVATE_KEY 秘密 env
    PKCS#8 PEM for SMART private_key_jwt. Never log it.
  • LASTEHR_PRIVATE_KEY_PATH env
    Path to the PKCS#8 PEM. Alternative to LASTEHR_PRIVATE_KEY.
  • LASTEHR_KEY_ID env
    JWT kid. Must match the public JWKS.
  • LASTEHR_JWKS_URL env
    https URL of the public JWKS. doctor checks that LASTEHR_KEY_ID is present. Optional.
  • LASTEHR_SCOPES env
    Space-delimited SMART scopes. Required for Oracle. Omit for Epic unless overriding the app registration.
  • LASTEHR_FHIR_BASE_URL env
    FHIR base URL. Epic and Oracle default to their public sandboxes when unset.
  • LASTEHR_TOKEN_URL env
    SMART token URL. Epic and Oracle default to their public sandboxes when unset.
  • LASTEHR_ENCOUNTER env
    Encounter/{id} added to Epic observations when the tool call omits encounter.
  • LASTEHR_PERFORMER env
    Practitioner/{id} filed as legal authenticator on Oracle observations.

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント cbetz で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

クリニック・健康のほかのサーバーとの比較i

  • このカテゴリのほかの870件のうち0%よりスターが多い
  • このカテゴリのほかの870件のうち93%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの870件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

Last EHR — Medplumは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:MEDPLUM_ACCESS_TOKEN, MEDPLUM_CLIENT_SECRET, LASTEHR_PRIVATE_KEY

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.5.1)がレジストリに届いたのは昨日です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。

代わりに使えるものは?

同じカテゴリには:Mirobody, FHIR MCP Server, Google Health MCP

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Mirobody

作者:thetahealth

Lab results to LOINC codes and UCUM units, symptoms and diagnoses to ICPC-3. Offline, no API key.

パソコンで動く★ 1,408Apache-2.06 日前更新
インストール

FHIR MCP Server

作者:wso2

MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications

パソコンで動く★ 137Apache-2.09 日前更新
インストール

Google Health MCP

作者:davidmosiah

Privacy-first unofficial Google Health API v4 MCP server for health, sleep, activity, HR agents

パソコンで動く★ 79MIT4 か月前更新
インストール

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

@lastehr/mcp

FHIR chart tools for MCP clients, over a Medplum project, the Last EHR repository's local HAPI evaluation stack (FHIR_BACKEND=hapi, synthetic data only), or — with LASTEHR_EXPERIMENTAL_FHIR_ADAPTERS=1 — the Epic and Oracle Health sandboxes (LASTEHR_BACKEND=epic|oracle) and a generic SMART Backend Services server (LASTEHR_BACKEND=smart). The sandboxes do not support delete, so an approved write persists. This is not a clinical or compliance claim.

Read-only by default, and the reads are the same ones the Last EHR web agent uses: search patients, show a whole chart, read any of 23 patient-scoped chart sections with filters, and read a document's text. One opt-in, LASTEHR_MCP_WRITES=proposal, adds elicitation-gated write proposals a human approves per action. Nothing is ever saved without that explicit approval, and the write tools are hidden from clients that cannot render approvals.

The registry metadata lives in server.json and is published alongside each verified npm release.

Install

npx -y @lastehr/mcp init

The command prints a portable MCP configuration. For Claude Code, print the registration command instead:

npx -y @lastehr/mcp init --client claude-code

Start the stdio server with:

npx -y @lastehr/mcp

Check the installed package version without configuring a backend:

npx -y @lastehr/mcp --version

Configuration

Set one authentication method before starting the server:

MEDPLUM_ACCESS_TOKEN=...

or:

MEDPLUM_CLIENT_ID=...

MEDPLUM_CLIENT_SECRET=...

Set MEDPLUM_BASE_URL for a self-hosted Medplum deployment. For the repository's local no-auth HAPI stack, set FHIR_BACKEND=hapi and FHIR_BASE_URL (or HAPI_BASE_URL) instead — local, synthetic data only. Run npx -y @lastehr/mcp doctor to validate configuration without starting MCP.

In 0.4.0, doctor --connect also checks FHIR R4 metadata and a count-only Patient search for the stdio backend. It makes no chart write and prints no patient data or counts. This does not verify individual chart access, other resource permissions, write permissions, or the MCP client's approval support. HTTP mode remains configuration-only; its --connect check fails explicitly rather than treating a configured URL as a verified OAuth session.

The source checkout can be ahead of npm. Check the installed version with --version. The repository's release process tests the packed artifact in a clean directory before publication.

Safety boundary

By default the package exposes search_patients, show_patient_info, read_chart_section, and read_document, all with the MCP readOnlyHint.

Those reads share one implementation with the web agent, which is deliberate: each of their honesty properties came from a real false negative found against a live FHIR server, and a second implementation would have re-earned them. A reply tells you what it could not see, and an empty result is never proof of absence:

FieldMeaning
truncatedThe server's window came back full, so older records may exist beyond what was read. Measured at the window, not at the row count.
codeFilterUnmatchedThe section does hold records; none of them carry the code you filtered by. Text-only CodeableConcepts cannot match a coded search.
includeUnsupportedThe backend refused the reference lookup. Not the same as there being no references.
unreadable (documents)The document exists and its contents were not read: a scan, or a body stored as a pointer rather than inline.

Chart free text arrives wrapped in tags. That content is data, never instructions. read_document decodes an inline text attachment and never dereferences Attachment.url, so it makes no request to an address the FHIR server chose.

With LASTEHR_MCP_WRITES=proposal it additionally offers add_note, record_observation, record_superseding_observation, and create_task as proposals: the exact fields are shown to the human through MCP elicitation and nothing is saved unless they approve; every approved write is tagged https://lastehr.com/mcp|approved-proposal and carries the standard AIAST security label ("Artificial Intelligence asserted") in meta.security, and LASTEHR_WRITE_PROVENANCE=true also emits a Provenance resource naming the agent as author and the reviewer as verifier. Read access can still return PHI. Use a least-privilege identity, review the MCP client's data handling and model-provider agreements, and never treat this package as an authorization layer.

See https://www.lastehr.com/docs/mcp for the complete setup and support boundary.

PopNxに聞く