Skip to content

Releases: partymola/bosch-flow-mcp

v0.3.0

Choose a tag to compare

@partymola partymola released this 02 Aug 23:51

Changed

  • Ported to the mcp 2.x server API. 2.0.0 renamed mcp.server.fastmcp to mcp.server.mcpserver and the FastMCP class to MCPServer, with no compatibility alias. The tool contract is unchanged: every tool keeps its name, description, and input and output schemas.
  • Every dependency is pinned to an exact version instead of a lower bound: mcp 2.0.0, anyio 4.14.2, tzdata 2026.3, and for development pytest 9.1.1, pytest-asyncio 1.4.0 and ruff 0.16.1.

Fixed

  • A fresh install no longer breaks on import. The mcp spec was >=1.6.0 with no upper bound, so once 2.0.0 was published the resolver picked it and the server failed to start.

Packaging

  • The build toolchain is pinned alongside the dependencies: setuptools to an exact version, the python:3.13-slim base image by digest, and every GitHub Action to a full commit SHA rather than a moving major tag. A floating tag can change what a build produces with nobody deciding, which is the same failure the dependency pins address.

v0.2.2

Choose a tag to compare

@partymola partymola released this 11 Jul 22:45

Listed in the official MCP registry (io.github.partymola/bosch-flow-mcp). The release workflow now publishes to the MCP registry alongside PyPI. No functional changes.

v0.2.1

Choose a tag to compare

@partymola partymola released this 11 Jul 22:28

pip install bosch-flow-mcp / uvx bosch-flow-mcp.

Added

  • bosch-flow-mcp --version prints the installed package version.

Packaging

  • Published to PyPI via GitHub Actions Trusted Publishing.

v0.2.0

Choose a tag to compare

@partymola partymola released this 11 Jul 14:13

Added

  • Ride activity tools: bosch_get_activities (per-ride summaries - distance, elevation, avg/max speed, cadence, measured rider power, calories, rider-vs-motor energy share, assist-mode split, CO2, ABS/brake events) and bosch_get_activity_detail (per-point GPS/speed/elevation/cadence/power track). Live reads from the rider-activity API with the standard one-bike-app sign-in - no EU Data Act registration needed.
  • Unofficial / not-affiliated / read-only disclaimer in the README and auth flow.

Changed

  • Sync is routed by the active token's client (EUDA client -> Data Act API, standard sign-in -> mobile app API) instead of trying both.
  • Components and current firmware are read from the mobile bike profile under a standard sign-in, so non-EU accounts get component data without an EU Data Act registration.
  • Sync results report a per-type status (ok / empty / unavailable / error) with a machine code and human message instead of a silent 0 records.

Fixed

  • A euda token on a non-EU account no longer caches silently as zero; it reports empty / euda_empty with the remedy.
  • Data-Act-only types report unavailable under a standard sign-in and skip the doomed request.
  • Components with no serial number no longer accumulate duplicate rows each sync.
  • 403 Forbidden now raises BoschForbiddenError with a client-aware hint instead of being swallowed.

v0.1.0

Choose a tag to compare

@partymola partymola released this 26 Apr 20:41

Added

  • Initial release.
  • OAuth (PKCE) authentication against the Bosch one-bike-app public client.
  • Optional EUDA (EU Data Act) credentials for capacity and service-book endpoints.
  • Sync engine for bikes, batteries, components, service, software_updates, and capacity data types.
  • Local SQLite cache (bosch_flow.db) with auto-sync on stale data.
  • MCP tools: bosch_sync, bosch_get_bikes, bosch_get_bike, bosch_get_batteries, bosch_get_soc, bosch_get_capacity, bosch_get_components, bosch_get_service_records, bosch_get_software_updates, bosch_battery_trends.
  • Live state-of-charge via the ConnectModule mobile API.
  • Pre-commit hook (scripts/check-no-data.sh) blocking commit of databases, tokens, and other secrets.