Skip to content

v0.2.1

Latest

Choose a tag to compare

@github-actions github-actions released this 04 Sep 14:37
· 3 commits to main since this release
v0.2.1
d3f9e74

@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_growthb2_report_usage_growth,
    b2_egress_leadersb2_rank_egress_leaders,
    b2_largest_filesb2_list_largest_files,
    s3_presign_upload_parts3_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.