@chrischall/myatriumhealth-mcp 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +20 -9
- package/dist/bundle.js +917 -449
- package/mint.yaml +1 -1
- package/package.json +3 -3
- package/server.json +2 -2
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
},
|
|
8
8
|
"metadata": {
|
|
9
9
|
"description": "MCP server for Angi — find home-service pros by trade and city, read ratings, reviews and pro profiles. Angi serves its pages only to a real browser, so requests route through the user's own angi.com tab via the fetchproxy browser extension, reusing their existing session. The trade/city taxonomy is read from Angi's public sitemaps directly.",
|
|
10
|
-
"version": "1.
|
|
10
|
+
"version": "1.3.0"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"displayName": "MyAtriumHealth",
|
|
16
16
|
"source": "./",
|
|
17
17
|
"description": "Read MyAtriumHealth (Epic MyChart) records — test results, medications, allergies, immunizations, health issues, visits — by relaying requests through the user's signed-in browser tab via the fetchproxy bridge.",
|
|
18
|
-
"version": "1.
|
|
18
|
+
"version": "1.3.0",
|
|
19
19
|
"author": {
|
|
20
20
|
"name": "Chris Hall"
|
|
21
21
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "myatriumhealth-mcp",
|
|
3
3
|
"displayName": "MyAtriumHealth",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.3.0",
|
|
5
5
|
"description": "MyAtriumHealth (Epic MyChart) access for Claude — test results, medications, allergies, immunizations, visits",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Chris Hall",
|
package/README.md
CHANGED
|
@@ -112,6 +112,9 @@ call prints a pair code — approve it once in the Transporter popup.
|
|
|
112
112
|
| `MAH_DEVICE_FILE` | `~/.myatriumhealth-mcp/device.json` | Session state (0600). Holds the **live cookie jar** as well as the device token — treat as a credential. |
|
|
113
113
|
| `MAH_WS_PORT` | `37149` | fetchproxy concentrator port (bridge mode only). The whole fleet shares this one port; override only when hosting. |
|
|
114
114
|
| `MAH_READ_ONLY` | `false` | `true` refuses `mah_reply_message` sends (previews still work). The tool stays listed either way. |
|
|
115
|
+
| `MCP_CONFIRM_MODE` | `ask-user` | What a reply does on a client that cannot show a confirmation prompt (claude.ai, Claude Desktop). `ask-user`: two steps — the first call sends nothing and returns a preview plus a token, and the model must get your approval in chat before calling again with it. `auto`: the same two steps, but the model may use the token after reviewing the preview itself. `refuse`: replies are refused on such clients. A client that can show prompts (Claude Code) always gets the real prompt. An unrecognised value is treated as `refuse`. |
|
|
116
|
+
| `MCP_CONFIRM_TTL_SECONDS` | `600` | How long a token stays valid. |
|
|
117
|
+
| `MCP_CONFIRM_SECRET` | random per process | Signing key; set it only if tokens must survive a server restart. |
|
|
115
118
|
|
|
116
119
|
## Tools
|
|
117
120
|
|
|
@@ -135,7 +138,7 @@ stated rather than inferred.
|
|
|
135
138
|
| `mah_get_health_summary` | Health-summary header and action plans |
|
|
136
139
|
| `mah_list_message_folders` | Message Center folders with unread counts |
|
|
137
140
|
| `mah_list_messages` | Message Center conversations for a folder, each with the `conversationId` to reply to |
|
|
138
|
-
| `mah_reply_message` | Reply to a conversation as the active patient —
|
|
141
|
+
| `mah_reply_message` | Reply to a conversation as the active patient — asks you to confirm first: a prompt where the client supports one, otherwise a preview and a `confirmToken` *(irreversible)* |
|
|
139
142
|
| `mah_list_insurance` | Insurance coverages on file |
|
|
140
143
|
| `mah_list_care_team` | Care team providers, internal and external |
|
|
141
144
|
| `mah_list_billing_accounts` | Billing accounts and balances (parsed from HTML) |
|
|
@@ -194,14 +197,22 @@ local organization returns HTTP 500. The client assembles this from
|
|
|
194
197
|
`mah_reply_message` takes a `conversationId` from `mah_list_messages`, a plain-text
|
|
195
198
|
`body`, and optionally `attachments`. It replies **as whichever patient is active**.
|
|
196
199
|
|
|
197
|
-
- **It
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
200
|
+
- **It asks before it sends.** A client that can show a confirmation prompt (Claude
|
|
201
|
+
Code) gets one with the thread, recipients, body and attachments. Elsewhere the first
|
|
202
|
+
call sends nothing and returns that preview plus a `confirmToken`; only a repeat call
|
|
203
|
+
with the same arguments and that token sends. `MCP_CONFIRM_MODE` (above) decides
|
|
204
|
+
whether the model must get your approval in chat before using it (`ask-user`, the
|
|
205
|
+
default), may use it itself (`auto`), or is refused (`refuse`). The send itself is
|
|
206
|
+
irreversible and provider-visible.
|
|
207
|
+
- **A send must follow its own preview.** The token is bound to the patient, thread,
|
|
208
|
+
recipients, body and attachments the preview showed (the fleet's shared mechanism from
|
|
209
|
+
`@chrischall/mcp-utils`). Anything else is refused: a different reply or thread
|
|
210
|
+
(`DRAFT_CHANGED`, with the new preview and a fresh token), after 10 minutes
|
|
211
|
+
(`TOKEN_EXPIRED`), a token already used (`TOKEN_REUSED`) or not issued for this reply
|
|
212
|
+
(`TOKEN_INVALID`). Each preview authorizes one send, and the token is spent once the send
|
|
213
|
+
is authorized, so any retry, even after a failure before anything went out, needs a
|
|
214
|
+
fresh preview. So message text the model has read cannot talk it into a one-call send
|
|
215
|
+
the user never saw.
|
|
205
216
|
- **`MAH_READ_ONLY=true` refuses every send.** The tool stays registered — a hosted
|
|
206
217
|
connector publishes the tool list of a child with no env of its own, so a tool that
|
|
207
218
|
registered only when writes were allowed would disappear for everyone.
|