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

Insync MCP

作者:chrischallバージョン 0.3.0i★ –iパソコンで動く
レジストリ名io.github.chrischall/insync-mcp

インストール

概要

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

Use an InSync (Qualifacts) patient portal: reads, file transfer, messages and care requests

PopNx MCPの3つの柱

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

できること

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

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

インストール

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

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: INSYNC_PORTAL, INSYNC_USERNAME, INSYNC_PASSWORD, INSYNC_TRANSPORT, INSYNC_WS_PORT, INSYNC_OUTPUT_DIR, INSYNC_INLINE_DOWNLOADS, FETCHPROXY_WS_HOST, FETCHPROXY_IDENTITY_DIR

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

必要なもの

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

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

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

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

{
  "mcpServers": {
    "insync": {
      "command": "npx",
      "args": [
        "-y",
        "@chrischall/insync-mcp"
      ],
      "env": {
        "INSYNC_PORTAL": "your-value",
        "INSYNC_USERNAME": "your-value",
        "INSYNC_PASSWORD": "your-value",
        "INSYNC_TRANSPORT": "your-value",
        "INSYNC_WS_PORT": "your-value",
        "INSYNC_OUTPUT_DIR": "your-value",
        "INSYNC_INLINE_DOWNLOADS": "your-value",
        "FETCHPROXY_WS_HOST": "your-value",
        "FETCHPROXY_IDENTITY_DIR": "your-value"
      }
    }
  }
}

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

claude mcp add insync --env INSYNC_PORTAL=your-value --env INSYNC_USERNAME=your-value --env INSYNC_PASSWORD=your-value --env INSYNC_TRANSPORT=your-value --env INSYNC_WS_PORT=your-value --env INSYNC_OUTPUT_DIR=your-value --env INSYNC_INLINE_DOWNLOADS=your-value --env FETCHPROXY_WS_HOST=your-value --env FETCHPROXY_IDENTITY_DIR=your-value -- npx -y @chrischall/insync-mcp

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

Cursorで開く

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

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

{
  "mcpServers": {
    "insync": {
      "command": "npx",
      "args": [
        "-y",
        "@chrischall/insync-mcp"
      ],
      "env": {
        "INSYNC_PORTAL": "your-value",
        "INSYNC_USERNAME": "your-value",
        "INSYNC_PASSWORD": "your-value",
        "INSYNC_TRANSPORT": "your-value",
        "INSYNC_WS_PORT": "your-value",
        "INSYNC_OUTPUT_DIR": "your-value",
        "INSYNC_INLINE_DOWNLOADS": "your-value",
        "FETCHPROXY_WS_HOST": "your-value",
        "FETCHPROXY_IDENTITY_DIR": "your-value"
      }
    }
  }
}

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

VS Codeで開く

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

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

{
  "servers": {
    "insync": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@chrischall/insync-mcp"
      ],
      "env": {
        "INSYNC_PORTAL": "your-value",
        "INSYNC_USERNAME": "your-value",
        "INSYNC_PASSWORD": "your-value",
        "INSYNC_TRANSPORT": "your-value",
        "INSYNC_WS_PORT": "your-value",
        "INSYNC_OUTPUT_DIR": "your-value",
        "INSYNC_INLINE_DOWNLOADS": "your-value",
        "FETCHPROXY_WS_HOST": "your-value",
        "FETCHPROXY_IDENTITY_DIR": "your-value"
      }
    }
  }
}

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

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

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

自分で入力する値

  • INSYNC_PORTAL 必須 env
    Your practice's portal, scheme and host only, e.g. https:// intouch.insynchcs.com.
  • INSYNC_USERNAME env
    Portal username. Set with INSYNC_PASSWORD to sign in server-side. Leave both empty to relay through your signed-in browser tab.
  • INSYNC_PASSWORD 秘密 env
    Portal password. A rejected sign-in is never retried automatically, because the portal counts failures toward a lockout.
  • INSYNC_TRANSPORT env
    server or fetchproxy. Default: server when both credentials are set, otherwise fetchproxy.
  • INSYNC_WS_PORT env
    Override the fetchproxy WebSocket port (default 37149).
  • INSYNC_OUTPUT_DIR env
    Where downloaded files are written locally (a path-delimiter list; ~ expands). Default ~/Downloads and ~/Documents. A per-call dest must resolve inside one of these.
  • INSYNC_INLINE_DOWNLOADS env
    true returns downloaded bytes inline (base64) instead of writing to disk — for a hosted runner whose disk the user cannot reach. Default false (disk).
  • FETCHPROXY_WS_HOST env
    Bind interface for the fetchproxy concentrator, a literal IP only (default 127.0.0.1). Keep on loopback; it exists for hosted deployments that run each MCP in its own network namespace.
  • FETCHPROXY_IDENTITY_DIR env
    Absolute path where the fetchproxy long-term identity keypair is stored (default ~/.fetchproxy/identity/).

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

できること

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

基本チェックi

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

  • ✓ 合格

    作者とリポジトリが一致

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

  • … 未チェック

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

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

  • … 未チェック

    ライセンスがある

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

  • – 対象外

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

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

  • – 対象外

    OAuthでサインイン

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

  • … 未チェック

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

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

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

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

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

よくある質問

Insync MCPは安全ですか?

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

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

入力が必要なもの:INSYNC_PORTAL, INSYNC_PASSWORD

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

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

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

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

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

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、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

insync-mcp

MCP server for an InSync Healthcare (Qualifacts) patient portal — the behavioral-health portals at https:// intouch.insynchcs.com (the owner's is pfbhintouch). It reads appointments, medications, allergies, secure messages, forms, surveys, documents, profile and account balance; downloads portal files; uploads an insurance-card image; and sends secure messages, refill requests, appointment requests and cancellation requests.

This project was developed and is maintained by AI. Use at your own discretion.

It reads personal health information, and only ever from the signed-in user's own account.

Not read-only

This server is not read-only. Alongside the reads it:

  • downloads message attachments and account documents (a download changes no portal state and has an inverse — not persisting — so the download tools are still annotated readOnly);
  • uploads an insurance-card image to your own profile — a real write the practice sees, with no delete/undo through this server, so it is annotated destructive and confirm-gated (see below);
  • insync_get_message opening an unread message can mark it read, which the practice can see and which has no inverse. That tool is annotated destructive and gated behind allow_mark_read (default false): until you pass it, the tool returns the list-row metadata and a note, and never fetches the detail;
  • sends things to the practice, each one confirm-gated and annotated destructive, because none can be unsent or withdrawn through this server:
ToolWhat it sendsLook up first with
insync_send_messagea new secure message to a practice groupinsync_list_message_recipients
insync_reply_messagea reply to a message (refuses an unread one unless allow_mark_read)insync_list_messages
insync_request_refilla refill request for current medicationsinsync_get_refill_options
insync_request_appointmentan appointment request in an open slot (the practice confirms it)insync_find_appointment_slots
insync_cancel_appointmenta cancellation request with a reason (the practice reviews it)insync_list_appointments

Not built: message attachments and patient signatures on messages, the "flexible window" appointment request, withdrawing a request, payments, and form submission.

Two ways to authenticate

ModeWhenCredentials held
Bridge-less (default)INSYNC_USERNAME + INSYNC_PASSWORD setyour portal password, in memory for the process
Browser bridgeno credentials configurednone

Bridge-less signs in server-side with its own cookie jar — no browser, no extension — which is what makes hosting possible. The password login was live-verified on 2026-10-28 against the owner's practice: a single POST to Login/userLogin, no MFA, no device challenge. A rejected sign-in is never retried automatically, because the portal counts failed attempts toward an account lockout. The cookie jar lives in memory for the life of the process; nothing is written to disk.

Browser bridge relays requests through your own signed-in portal tab via the fetchproxy bridge and the ContextMint Bridge extension, reusing that session. It holds no credentials at all — its one virtue — so prefer it unless you specifically want the hosted, bridge-less path.

Selection is automatic: server when both credentials are set, otherwise fetchproxy. INSYNC_TRANSPORT=server|fetchproxy forces one.

Storage configuration is held, never used directly

The login response carries some object-storage configuration. This server never uses it to talk to object storage directly — all file transfer goes through the portal's own session-authorized endpoints, so every read and write stays under the portal's per-patient authorization. Any such configuration is captured onto the session only, and is scrubbed by value from every tool result, error and log. A download URL is refused unless it stays on *.insynchcs.com.

Writes are unverified on the wire

Every lookup the write tools make — recipients, the reply form, the refill pick lists, facilities, providers, visit types, slots, the cancellation window — was verified live, read-only. The sends are derived from the portal's own JavaScript and partial views. A new message (insync_send_message) and a reply (insync_reply_message) were verified live on 2026-10-28 in owner-supervised tests; the refill, appointment and cancellation sends have not been exercised yet, because each one creates a request the practice acts on. A send that the portal answers with a 5xx, or whose connection drops, is reported as status: "unknown" rather than as an error, so a model checks the matching list before trying again instead of sending twice. See docs/INSYNC-API.md.

Insurance-card upload

The insurance-card upload shape is derived from the portal's own JavaScript and is UNVERIFIED on a live POST: no automated run performs a real upload, because it mutates practice-visible state. An owner-supervised live test confirms it later. The confirm gate, the file vetting and the re-read-after-write guidance are all in place; only the on-the-wire success signal is pending confirmation. See docs/INSYNC-API.md.

Each side of the card arrives by exactly one route: front_path/back_path (a file on this machine — local installs only, refused on a hosted server), front_inline/back_inline ({filename, contentBase64}, for a small image), or front_blob_key/back_blob_key — on a hosted server, call insync_upload_slots for a signed upload URL, PUT the image to it, and pass the returned blobKey. The uploaded copy is deleted only after the portal accepts the card; a rejection or an unconfirmed outcome keeps it.

Downloads

On a local install a download is written to a private (0600) file and the path returned. On a hosted server it comes back inline when it fits (10 MiB), and otherwise as a short-lived signed download link from the host's blob store — never a path on the runner's disk.

Confirm gate

Every write is gated by @chrischall/mcp-utils' confirmWrite, through its defineWrite / registerWrite. The first call sends nothing and returns a preview + a `confirmToken`; only a second call carrying that token — after you approve the preview — sends. The send/request tools may read the portal while previewing (to resolve names and check the slot or recipient); the upload preview reads nothing from the portal. The exact request body (for the upload, the image bytes) and the shown preview (including each image's SHA-256) are bound into the token, so an argument, file or portal state that changed since the preview is refused as DRAFT_CHANGED. MCP_CONFIRM_MODE / MCP_CONFIRM_ELICITATION tune this (see the env table).

Install

{

"mcpServers": { "insync": { "command": "npx", "args": ["-y", "@chrischall/insync-mcp"], "env": { "INSYNC_PORTAL": "https:// intouch.insynchcs.com", "INSYNC_USERNAME": "your-portal-username", "INSYNC_PASSWORD": "your-portal-password" } } } }

Leave INSYNC_USERNAME / INSYNC_PASSWORD out to use the browser bridge instead; that path needs ContextMint Bridge, the fetchproxy browser extension, installed from its releases page, and your portal open and signed in. Then call insync_healthcheck; the first call prints a pair code to approve once in the extension popup.

Configuration

VariableRequiredDefaultPurpose
INSYNC_PORTALyes—Your practice portal, scheme + host only (https:// intouch.insynchcs.com), no path. The portal is per-practice, so a wrong host reads a different practice.
INSYNC_USERNAMEbridge-less only—Portal username. Set with the password to sign in server-side.
INSYNC_PASSWORDbridge-less only—Portal password. Never retried on rejection (lockout risk).
INSYNC_TRANSPORTnoautoserver or fetchproxy. Default: server when both credentials are set, else fetchproxy.
INSYNC_WS_PORTno37149fetchproxy concentrator port. The whole fleet shares it; override only when hosting.
INSYNC_OUTPUT_DIRno~/Downloads, ~/DocumentsWhere downloaded files are written (a path-delimiter list; ~ expands). A per-call dest must resolve inside one of these.
INSYNC_INLINE_DOWNLOADSnofalseLocal installs: true returns a downloaded file inline (an MCP content block, up to 10 MiB) instead of writing it to disk; a larger file is still saved to disk. A hosted server (detected from MCP_DATA_DIR / the blob store) always delivers inline or by link and ignores this.
MCP_CONFIRM_MODEnoask-userConfirm-gate mode for every write. ask-user = preview + confirmToken round-trip; auto lets a capable host confirm in one step; an unrecognised value fails closed (refuse).
MCP_CONFIRM_ELICITATIONnoonon lets the host confirm a write interactively; off forces the confirmToken round-trip.

A .env is read for local development; real environment values always win. See .env.example.

The fpx skill

Bundled under skills/insync-fpx/ is a lightweight alternative to running this server: the insync-fpx skill reads the same portal from a shell through your signed-in browser tab with the fpx CLI (capture the session once, then curl the endpoints). Use it when you want portal data in a script or without the MCP installed. The MCP is the richer surface; the skill is the quick path.

Context groups

Every tool except insync_healthcheck publishes a _meta.mint hint (group health) for mcp-host's context groups: inert data to any other client. The three canonical reads — insync_list_appointments (what's on), insync_list_messages (what's new) and insync_list_forms (what's due) — also take view: "brief", one line per item, title — — , inside the untrusted-data envelope. The other view values are unchanged.

How it works

The portal is ASP.NET MVC. A signed-out session is never a 401: it is the login page served 200 ( Portal :: Login), an {"isTimeout":true} body, or a 302 to /Login. This server detects that by content and surfaces an actionable "not signed in" error naming the live transport. Every endpoint shape — reads, file transfer and the upload — is documented, keys only (no values, which are PHI), in docs/INSYNC-API.md.

License

MIT

PopNxに聞く