Release v0.3.0
Security
- Pin the SSRF-validated IP address for the actual connection so a hostname can
no longer be re-resolved to an internal or rebinding address between the
validation check and the connect (Gopher and Gemini). - Add a denylist of dangerous service ports (SSH, SMTP, Redis, etc.) as
defense-in-depth. - Close the socket on every TLS connection/handshake failure (previously leaked
file descriptors under repeated failures). - Normalize TOFU trust-store host keys so a casing/trailing-dot variant cannot
establish a second pin, and reject a non-valid TOFU result (fail closed). - Fail closed on a corrupt client-certificate registry, and write the trust
store, certificate registry, and private keys owner-only. - Scan dependencies with
pip-auditin CI (replacing the deprecated
safety check) and pin the PyPI publish action to a commit SHA.
Added
- Range constraints on model port/size fields and scheme-based classification of
gemtext links (relative links are internal, not external).
Changed
- Fetch tools now return structured error results instead of raising, so invalid
input, batch limits, and client-setup failures no longer surface as raw tool
errors. - Server settings are read under the
GOPHER_MCP_environment prefix (e.g.
GOPHER_MCP_LOG_LEVEL) so common ambient variables no longer leak into
configuration. Update anyLOG_LEVEL/DEVELOPMENT_MODE/LOG_FILE_PATH
env vars to the prefixed names. --mount-pathis now rejected for transports that ignore it (was silently
dropped for stdio/streamable-http).- Per-request URL/query logging moved to DEBUG.
- Client connections are released on shutdown.
Fixed
- Reject explicit invalid or zero ports in Gopher/Gemini URLs instead of
silently coercing them to the default. - Percent-decode Gopher selectors to their on-wire form.
- Parse gemtext on CRLF/LF only and preserve preformatted lines verbatim.
- Stop double-wrapping the Gemini response parser's own validation errors.
- Enforce the project's full ruff ruleset (it was silently shadowed by a stray
Release Information:
- Version: 0.3.0
- Release Date: 2026-06-08
- Commit: 24b438b
- Workflow: 27109827580
Installation:
pip install gopher-mcp==0.3.0Verification:
All packages are signed and can be verified using Sigstore.