NestDaddy

Therapyportal Mcp

io.github.chrischall/therapyportal-mcp ยท v0.5.0

TherapyNotes client portal: appointments, documents, billing, messages; confirm-gated sends, uploads

Connect Runs on your machine

Terminal
claude mcp add therapyportal-mcp -e THERAPYPORTAL_PRACTICE=<THERAPYPORTAL_PRACTICE> -e THERAPYPORTAL_EMAIL=<THERAPYPORTAL_EMAIL> -e THERAPYPORTAL_PASSWORD=<THERAPYPORTAL_PASSWORD> -e THERAPYPORTAL_DOB=<THERAPYPORTAL_DOB> -e THERAPYPORTAL_TRANSPORT=<THERAPYPORTAL_TRANSPORT> -e THERAPYPORTAL_WS_PORT=<THERAPYPORTAL_WS_PORT> -e THERAPYPORTAL_OUTPUT_DIR=<THERAPYPORTAL_OUTPUT_DIR> -e THERAPYPORTAL_INLINE_DOWNLOADS=<THERAPYPORTAL_INLINE_DOWNLOADS> -e THERAPYPORTAL_UPLOAD_DIR=<THERAPYPORTAL_UPLOAD_DIR> -e MCP_CONFIRM_MODE=<MCP_CONFIRM_MODE> -e MCP_CONFIRM_ELICITATION=<MCP_CONFIRM_ELICITATION> -e FETCHPROXY_WS_HOST=<FETCHPROXY_WS_HOST> -e FETCHPROXY_IDENTITY_DIR=<FETCHPROXY_IDENTITY_DIR> -- npx -y @chrischall/[email protected]
claude_desktop_config.json
{
  "mcpServers": {
    "therapyportal-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@chrischall/[email protected]"
      ],
      "env": {
        "THERAPYPORTAL_PRACTICE": "<THERAPYPORTAL_PRACTICE>",
        "THERAPYPORTAL_EMAIL": "<THERAPYPORTAL_EMAIL>",
        "THERAPYPORTAL_PASSWORD": "<THERAPYPORTAL_PASSWORD>",
        "THERAPYPORTAL_DOB": "<THERAPYPORTAL_DOB>",
        "THERAPYPORTAL_TRANSPORT": "<THERAPYPORTAL_TRANSPORT>",
        "THERAPYPORTAL_WS_PORT": "<THERAPYPORTAL_WS_PORT>",
        "THERAPYPORTAL_OUTPUT_DIR": "<THERAPYPORTAL_OUTPUT_DIR>",
        "THERAPYPORTAL_INLINE_DOWNLOADS": "<THERAPYPORTAL_INLINE_DOWNLOADS>",
        "THERAPYPORTAL_UPLOAD_DIR": "<THERAPYPORTAL_UPLOAD_DIR>",
        "MCP_CONFIRM_MODE": "<MCP_CONFIRM_MODE>",
        "MCP_CONFIRM_ELICITATION": "<MCP_CONFIRM_ELICITATION>",
        "FETCHPROXY_WS_HOST": "<FETCHPROXY_WS_HOST>",
        "FETCHPROXY_IDENTITY_DIR": "<FETCHPROXY_IDENTITY_DIR>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "therapyportal-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@chrischall/[email protected]"
      ],
      "env": {
        "THERAPYPORTAL_PRACTICE": "<THERAPYPORTAL_PRACTICE>",
        "THERAPYPORTAL_EMAIL": "<THERAPYPORTAL_EMAIL>",
        "THERAPYPORTAL_PASSWORD": "<THERAPYPORTAL_PASSWORD>",
        "THERAPYPORTAL_DOB": "<THERAPYPORTAL_DOB>",
        "THERAPYPORTAL_TRANSPORT": "<THERAPYPORTAL_TRANSPORT>",
        "THERAPYPORTAL_WS_PORT": "<THERAPYPORTAL_WS_PORT>",
        "THERAPYPORTAL_OUTPUT_DIR": "<THERAPYPORTAL_OUTPUT_DIR>",
        "THERAPYPORTAL_INLINE_DOWNLOADS": "<THERAPYPORTAL_INLINE_DOWNLOADS>",
        "THERAPYPORTAL_UPLOAD_DIR": "<THERAPYPORTAL_UPLOAD_DIR>",
        "MCP_CONFIRM_MODE": "<MCP_CONFIRM_MODE>",
        "MCP_CONFIRM_ELICITATION": "<MCP_CONFIRM_ELICITATION>",
        "FETCHPROXY_WS_HOST": "<FETCHPROXY_WS_HOST>",
        "FETCHPROXY_IDENTITY_DIR": "<FETCHPROXY_IDENTITY_DIR>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "therapyportal-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@chrischall/[email protected]"
      ],
      "env": {
        "THERAPYPORTAL_PRACTICE": "<THERAPYPORTAL_PRACTICE>",
        "THERAPYPORTAL_EMAIL": "<THERAPYPORTAL_EMAIL>",
        "THERAPYPORTAL_PASSWORD": "<THERAPYPORTAL_PASSWORD>",
        "THERAPYPORTAL_DOB": "<THERAPYPORTAL_DOB>",
        "THERAPYPORTAL_TRANSPORT": "<THERAPYPORTAL_TRANSPORT>",
        "THERAPYPORTAL_WS_PORT": "<THERAPYPORTAL_WS_PORT>",
        "THERAPYPORTAL_OUTPUT_DIR": "<THERAPYPORTAL_OUTPUT_DIR>",
        "THERAPYPORTAL_INLINE_DOWNLOADS": "<THERAPYPORTAL_INLINE_DOWNLOADS>",
        "THERAPYPORTAL_UPLOAD_DIR": "<THERAPYPORTAL_UPLOAD_DIR>",
        "MCP_CONFIRM_MODE": "<MCP_CONFIRM_MODE>",
        "MCP_CONFIRM_ELICITATION": "<MCP_CONFIRM_ELICITATION>",
        "FETCHPROXY_WS_HOST": "<FETCHPROXY_WS_HOST>",
        "FETCHPROXY_IDENTITY_DIR": "<FETCHPROXY_IDENTITY_DIR>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
THERAPYPORTAL_PRACTICE
Required
Your practice's portal code: the part after /p/ in its TherapyPortal URL (www.therapyportal.com/p/<code>/).
THERAPYPORTAL_EMAIL
Optional
The email you sign in to TherapyPortal with. Set with the password to sign in server-side; leave both empty to relay through your signed-in browser tab.
THERAPYPORTAL_PASSWORD
Optional, secret
Your TherapyPortal password. A rejected sign-in is never retried automatically.
THERAPYPORTAL_DOB
Optional, secret
Only if the portal asks for a date of birth at sign-in: that date, as MM/DD/YYYY. Tried once; never retried, because the portal limits attempts.
THERAPYPORTAL_TRANSPORT
Optional
server or fetchproxy. Default: server when email and password are both set, otherwise fetchproxy.
THERAPYPORTAL_WS_PORT
Optional
fetchproxy concentrator port (fetchproxy transport only, default 37149). The whole fleet shares this one port; override only when hosting.
THERAPYPORTAL_OUTPUT_DIR
Optional
Where downloaded files are written on the server transport (a path-delimiter list; ~ expands). Default ~/Downloads and ~/Documents. A per-call dest must resolve inside one of these.
THERAPYPORTAL_INLINE_DOWNLOADS
Optional
true returns downloaded bytes inline (base64) instead of writing to disk, for a hosted runner whose disk you cannot reach. Default false.
THERAPYPORTAL_UPLOAD_DIR
Optional
Folders an upload's file_path must be inside (a path-delimiter list; ~ expands). Default ~/Downloads, ~/Documents and ~/Desktop. Local installs only: a hosted server refuses file_path and takes uploads by upload slot or inline base64.
MCP_CONFIRM_MODE
Optional
Confirm-gate mode for every write (secure messages, document uploads). ask-user (default) returns a preview + confirmToken and needs a second call with that token; auto lets a capable host confirm in one step; an unrecognised value fails closed (refuse).
MCP_CONFIRM_ELICITATION
Optional
on (default) lets the host confirm a write interactively; off forces the confirmToken round-trip.
FETCHPROXY_WS_HOST
Optional
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
Optional
Absolute path where the fetchproxy long-term identity keypair is stored (default ~/.fetchproxy/identity/).

Details

Package@chrischall/[email protected] (NPM, stdio)
First published11 Nov 2026
Last updated11 Nov 2026
Registry nameio.github.chrischall/therapyportal-mcp

More communication servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.