You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
@backblaze-labs/b2-mcp v0.2.1
Added
glama.json repo-root maintainer manifest for the Glama org server claim,
plus a README Glama score badge. (#300)
lhm.plugin.json LobeHub marketplace manifest and a README LobeHub badge;
the release version lifecycle now stamps its version alongside server.json.
(#300)
mcpb/manifest.json (MCPB 0.3) plus a pnpm run build:mcpb pack script for
the Claude Desktop extension bundle; the release version-sync now stamps the
MCPB manifest alongside server.json and lhm.plugin.json. (#300)
Reproducible b2-mcp.mcpb desktop-extension bundle built and attached to every
GitHub Release: publish.yml runs build:mcpb, records the bundle SHA-256 in SHA256SUMS, and the release job verifies it; a contract test gates manifest
version parity, the pinned npx launcher, privacy_policies, and archive
reproducibility across OSes. This is the artifact the Claude Connectors
Directory submission (#385) consumes. (#387)
Flat, visible ## Tools list of all 40 tools in the README so directory
auto-extractors (mcp.so, Glama, ...) can populate the tool section. (#300)
docs/references/discoverability.md runbook documenting the registry/directory listings
and per-release steps (Glama, LobeHub, mcp.so). (#300)
Privacy policy surface: root PRIVACY.md, hosted GitHub Pages privacy.html / privacy/, README and discoverability links, and MCPB privacy_policies metadata for Claude and OpenAI directory submissions.
(#379)
README "official server" note and an Official … MCP Registry manifest
description to distinguish backblaze-labs/b2-mcp from community forks. (#301)
Read-only MCP resources for non-secret server config, credential
capability/tool profile, and a capability-gated b2://bucket/{bucketName}
template with notification webhook secrets redacted. The server now advertises
the MCP resources capability. (#165)
Opt-in MCP workflow prompts (prompts/list / prompts/get), gated behind B2_ENABLE_MCP_PROMPTS=true. Prompts return structured message templates only
and never execute B2 tools, so the destructive gate and elicitation remain
authoritative; availability is derived from the committed tool registry and
resolved capability set. (#362)
Changed
Deferred Smithery from the discoverability roadmap: removed the README Smithery
badge and reframed docs/references/discoverability.md so the MCPB bundle now
targets the Claude Connectors Directory / GitHub Release. smithery.yaml is
retained (and kept in sync by the release-scripts contract) for a possible
future submission if a hosted Backblaze MCP endpoint ever exists. (#300)
BREAKING: Renamed four tools to the standard <prefix>_<verb>_<noun>
naming convention for server coherence; the old names are removed with no
aliases, so existing integrations must switch to the new names. Old → new: b2_usage_growth → b2_report_usage_growth, b2_egress_leaders → b2_rank_egress_leaders, b2_largest_files → b2_list_largest_files, s3_presign_upload_part → s3_get_presigned_upload_part_url. The naming
convention is now documented in docs/design-docs/tool-contract.md and
referenced from AGENTS.md. (#365)
The stdio and HTTP transports now support credential-free discovery for
directory scanners and MCP inspectors: initialize / server/discover / tools/list can run without B2 credentials, placeholder header credentials
that B2 rejects still enumerate tools for scanner compatibility, and every tools/call in discovery mode returns missing_credentials. Discovery
responses use a zero cache TTL, and rejected server-owned/principal credentials
still surface as credential errors instead of a silent no-op fleet. (#356, #363)
Fixed
Point the README MCP Registry badge at $.servers[0].server.version to match
the registry API's 2025-12-11 response shape, so it renders the published
version again. (#297)
Removed
Breaking: dropped the deprecated credential env-var and HTTP header
aliases; only the canonical names are read anywhere now. (#386)
B2_APP_KEY_ID / B2_APP_KEY (and the X-B2-App-Key-Id / X-B2-App-Key
plus namespaced X-B2-MCP-App-Key-Id / X-B2-MCP-App-Key headers) are gone
→ use a non-master B2_APPLICATION_KEY_ID / B2_APPLICATION_KEY. This
retires the legacy "sign S3 with a separate non-master key" override; the
application key now signs S3 directly, so callers on the old path must switch
to a non-master application key.
The principal-mode B2_CREDENTIAL_<REF>_APP_KEY / B2_CREDENTIAL_<REF>_APP_KEY_ID
override is gone → use B2_CREDENTIAL_<REF>_APPLICATION_KEY / B2_CREDENTIAL_<REF>_APPLICATION_KEY_ID.
The customer-hosted _FILE secret-file variants of all the above
(B2_APP_KEY_FILE, B2_APP_KEY_ID_FILE, and B2_CREDENTIAL_<REF>_APP_KEY(_ID)_FILE) are no longer loaded by the
container entrypoint → use the matching B2_APPLICATION_KEY(_ID)_FILE / B2_CREDENTIAL_<REF>_APPLICATION_KEY(_ID)_FILE names.
B2_OAUTH_INTROSPECTION_CACHE_MAX_ENTRIES / _TTL_SECONDS / _SKEW_SECONDS
are gone → use B2_OAUTH_TOKEN_CACHE_MAX_ENTRIES / _TTL_SECONDS / _SKEW_SECONDS.
The short X-B2-* credential headers (X-B2-Key-Id, X-B2-Key, X-B2-Master-Key-Id, X-B2-Master-Key) are gone → use the canonical X-B2-MCP-* form (X-B2-MCP-Key-Id, X-B2-MCP-Key, X-B2-MCP-Master-Key-Id, X-B2-MCP-Master-Key).
Rollout: migrate clients to X-B2-MCP-* before deploying. During a
rolling deploy, old replicas still accept the short headers while new
replicas reject them, so legacy-header requests can intermittently fail for
the duration of the rollout. On startup the server now logs a warn-level config.removed_alias message when a removed alias env var
(B2_APP_KEY_ID / B2_APP_KEY, the principal-mode B2_CREDENTIAL_<REF>_APP_KEY(_ID), their _FILE secret-file variants, and B2_OAUTH_INTROSPECTION_CACHE_*) is still set, naming the canonical
replacement. Log-redaction sets still scrub the
retired header/env names for the migration window so a still-in-flight
legacy secret is never written to logs in cleartext.