Skip to content

Releases: lozit/mcp-freestyle

v0.1.4

Choose a tag to compare

@lozit lozit released this 19 Aug 14:47

Added

  • Rate-limited and transient upstream failures are now retried with exponential backoff, honouring Retry-After in both its forms and clamping it either way. Previously a single 429 failed 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

Choose a tag to compare

@lozit lozit released this 09 Aug 18:33

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.json now carries mcpName. 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.json and 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 the server.json/package.json pairing, because that failure lands after npm 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

Choose a tag to compare

@lozit lozit released this 09 Aug 18:33

Superseded by v0.1.3 within the hour. Published to npm but never listed on the MCP Registry: package.json lacked the mcpName field the registry requires.

v0.1.1

Choose a tag to compare

@lozit lozit released this 09 Aug 17:29

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 test quoted 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 engines claims 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

Choose a tag to compare

@lozit lozit released this 06 Aug 18:39

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 config

Two 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

  • TrendArrow is 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.