Releases: lozit/mcp-freestyle
Release list
v0.1.4
Added
- Rate-limited and transient upstream failures are now retried with exponential backoff, honouring
Retry-Afterin both its forms and clamping it either way. Previously a single429failed the tool call outright and the question had to be asked again.
Only 429, the vendor-specific 430 and transient 5xx are retried — a 401 will not fix itself, and asking again just burns the budget that caused the problem. A thrown error is deliberately not retried: when fetch rejects we cannot know whether the request landed, and login mints a token valid ~180 days with no revocation path.
Changed
- ADR 0004 supersedes half of ADR 0003. Long-term history via Nightscout, if built, becomes a separate project rather than a second source here — the tool surface cannot state one honest horizon for two sources with different limits.
Not a medical device. Known gaps unchanged: TrendArrow untranslated, history caps at ~12 h.
v0.1.3
Listed on the MCP Registry as io.github.lozit/mcp-freestyle, so the server can be found from MCP clients rather than only from npm.
Fixed
package.jsonnow carriesmcpName. The registry proves you own an npm package by finding its own name inside it; without the field it refuses the entry — which is what happened to 0.1.2, published to npm and never listed.
Added (0.1.2, never listed)
server.jsonand a release step that publishes to the MCP Registry.npm run check:versions— the version lives in three places plus the git tag. It now also asserts theserver.json/package.jsonpairing, because that failure lands afternpm publish, at the one point nothing can be walked back.
Not a medical device. Known gaps unchanged: TrendArrow untranslated, history caps at ~12 h.
v0.1.2
v0.1.1
Fixes a startup failure that an MCP client could only report as "Server disconnected", and refreshes the package page — 0.1.0 shipped a README describing the project as unpublished.
Fixed
- The server no longer exits at startup when credentials are missing. It died before the transport connected, so the actionable message went to a stderr nobody reads. Configuration now resolves on first tool use: ask a question with an empty keychain and the answer is
Run mcp-freestyle-login. npm testquoted its glob with single quotes, which are not shell syntax on Windows.- The npm package page now shows the real README.
Added
- CI on push and pull request: typecheck and tests across Linux, macOS and Windows, plus a job that boots the built server on every Node version
enginesclaims to support rather than trusting the claim. - Tag-triggered publishing via npm Trusted Publishing — no token, and this release carries provenance.
npm run check:starts, which is also the regression test for the fix above.
Known gaps are unchanged: TrendArrow is passed through untranslated, and history caps at ~12 h. Not a medical device.
v0.1.0 — first published release
Reads a FreeStyle sensor from an MCP client. Validated end to end against a real account and through Claude Desktop; a clean npx mcp-freestyle install from the registry starts and serves both tools.
npm install -g mcp-freestyle
mcp-freestyle-login # password goes to the OS keychain
mcp-freestyle-install # writes the Claude Desktop configTwo tools, both read-only: get_current_glucose and get_glucose_history. The history tool reports the range it actually covered and flags truncation rather than echoing the range requested.
Credentials never enter the MCP client config — only the e-mail does. The upstream token is not persisted either: it lives ~180 days with no revocation path, so the server re-authenticates instead.
Known gaps
TrendArrowis passed through untranslated. Its mapping is undocumented and has been observed at a single value; a confidently wrong arrow is worse than none.- History caps at ~12 h — upstream ignores any longer request. See ADR 0003.
Not a medical device
Informational only. No treatment decision should depend on it.
Full notes in CHANGELOG.md.