Releases: partymola/bosch-flow-mcp
Releases · partymola/bosch-flow-mcp
Release list
v0.3.0
Changed
- Ported to the
mcp2.x server API. 2.0.0 renamedmcp.server.fastmcptomcp.server.mcpserverand theFastMCPclass toMCPServer, 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:
mcp2.0.0,anyio4.14.2,tzdata2026.3, and for developmentpytest9.1.1,pytest-asyncio1.4.0 andruff0.16.1.
Fixed
- A fresh install no longer breaks on import. The
mcpspec was>=1.6.0with 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:
setuptoolsto an exact version, thepython:3.13-slimbase 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
v0.2.1
v0.2.0
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) andbosch_get_activity_detail(per-point GPS/speed/elevation/cadence/power track). Live reads from the rider-activity API with the standardone-bike-appsign-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 silent0 records.
Fixed
- A
eudatoken on a non-EU account no longer caches silently as zero; it reportsempty/euda_emptywith the remedy. - Data-Act-only types report
unavailableunder a standard sign-in and skip the doomed request. - Components with no serial number no longer accumulate duplicate rows each sync.
403 Forbiddennow raisesBoschForbiddenErrorwith a client-aware hint instead of being swallowed.
v0.1.0
Added
- Initial release.
- OAuth (PKCE) authentication against the Bosch
one-bike-apppublic client. - Optional EUDA (EU Data Act) credentials for capacity and service-book endpoints.
- Sync engine for
bikes,batteries,components,service,software_updates, andcapacitydata 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.