[0.3.2] - 2026-08-02
Fixed
-
The User-Agent named no version. Outbound requests carried
i14y-mcp (+https://github.com/malkreide/i14y-mcp)Nothing about it was wrong — it claimed no false number — but the operator of
the data source could not tell which release was calling, which is half the
reason to send a custom User-Agent at all. It now reads
i14y-mcp/<version> (+…), interpolated from the package metadata.This was the last such case in the portfolio. A fleet-wide probe reported it
asunverified: a User-Agent was present but no value could be compared
against the installed version. That is explicitly not a pass — "I could not
resolve it" and "there is nothing wrong" are different claims. -
__version__was a literal beside the one inpyproject.toml. Two copies
of a number the build decides. The same arrangement inhn-tech-signal-mcp
led to__version__reporting0.2.1while the package shipped as0.2.4,
and inswiss-procurement-mcpto a User-Agent announcing0.4.0from a
package that was0.18.3.The version now comes from
importlib.metadatain a module of its own,
_version.py. A separate module rather than__init__, so thatclientcan
read the version without importing the package root: the root imports
server, which importsclient, and taking the version from a
partially-initialised root would hold only until somebody reorders two lines.
bag-health-mcpcarries a latent circular import from exactly that shape.The fallback for an uninstalled source tree is
0.0.0+source— a PEP 440
local segment that cannot be read as a release. -
Nothing asserted anything about the User-Agent before.
tests/test_user_agent.py
now checks that it carries the installed version, that__version__equals it,
that a version is named at all, and that no version literal returns under
src/. Verified in the other direction too: with the bare token restored, two
of the five tests fail.