Privacy Policy
Effective date: September 2, 2026
This policy covers the @backblaze-labs/b2-mcp server software published from the backblaze-labs/b2-mcp repository. The software runs either locally for a user over stdio or in a self-hosted Streamable HTTP deployment operated by the user or their organization. Backblaze Labs publishes the software, source code, npm package, and container image; it does not operate a shared hosted b2-mcp service that collects end-user data by default.
Data Controller And Operator
For a local stdio run, the user running the MCP client controls the server process and the data it handles. For a self-hosted HTTP deployment, the deployment operator controls the server process, its logs, credential storage, network boundary, and retention settings.
The publisher does not receive runtime credentials, object data, logs, prompts, tool inputs, tool outputs, account metadata, or telemetry from normal b2-mcp use. If you choose to contact the project through GitHub issues, pull requests, GitHub Security Advisories, or email, the information you provide is used to respond to that request and is handled by the service you used to send it. Do not include B2 credentials, bearer tokens, presigned URLs, or other secrets in public issues or discussions.
B2 Credentials
b2-mcp uses Backblaze B2 application keys and, for Partner API tools only, optional master keys to authenticate to Backblaze B2 on your behalf.
- In local stdio mode, credentials are supplied by your MCP client configuration or process environment. Credential custody stays on your machine except when the server sends them to Backblaze B2 to authorize or perform requested B2 operations.
- In HTTP
headersmode, credentials arrive in request headers, are consumed by the credential resolver, and are stripped before the request crosses into the MCP SDK handler boundary. The running process may keep them in a cached credential and authorization manager until cache eviction, TTL expiry, or process exit. - In HTTP
servermode, credentials come from the operator-managed server environment or secret store and stay inside the operator's deployment except for outbound calls to Backblaze B2. - In HTTP
principalmode, verified caller identity is mapped to operator-managed B2 credentials, which stay inside the operator's deployment except for outbound calls to Backblaze B2.
Credentials supplied to authenticate b2-mcp HTTP requests are not written to disk by the HTTP transport. The HTTP transport keeps bounded, TTL-limited in-memory credential managers, B2 authorization state, and capability state for the running process. Raw credential values can therefore remain in process memory after a request until cache eviction, TTL expiry, or process exit, but cache keys and logs use non-secret fingerprints rather than raw credential values. B2 credentials are sent only to Backblaze B2 API endpoints needed to authorize or perform the requested operation. They are never collected, sold, or transmitted to the publisher.
Generated application-key secrets from b2_create_key are handled separately by the durable secret sink. In local stdio mode on supported POSIX systems, the default sink is file, which writes newly created application-key secrets to ~/.b2-mcp/secrets.jsonl unless configured differently — but only when that owner-only ledger can be opened safely. If the default ledger cannot be validated (for example, it is a symlink or its parent directory has unsafe permissions), b2-mcp falls back to off and the credential-producing tools return a compatibility stub instead of writing the secret. In HTTP and serverless deployments, the default sink is off and the tool returns a compatibility stub unless the operator explicitly enables a sink mode. If an operator enables B2_SECRET_SINK=file for HTTP or serverless, b2-mcp writes newly created application-key secrets to the configured operator-controlled JSONL file.
An operator may instead set B2_SECRET_SINK=inline, which is the least private option: it returns the newly generated secret directly in the tool's MCP response, so the secret enters the model's context and may be retained by your MCP client. Because of that exposure it is never a default and is refused on HTTP or serverless deployments unless the operator also sets B2_ALLOW_INLINE_SECRETS=true. The same file, off, and inline sink behavior governs b2_create_key and the Partner API tool b2_create_group_member. The Partner API tool b2_reserve_trial_create_account is a deliberate exception: because Reserve Trial account creation has no provider-side recovery path if a sink write fails after the account is created, it is available only in explicit inline mode and is unavailable in both file and off modes.
Object Data
b2-mcp is designed as a control-plane-first server. For ordinary object upload, download, and multipart transfer workflows, the server returns short-lived presigned URLs and the object bytes move directly between your client or worker and Backblaze B2. In those presigned workflows, object bytes do not pass through the b2-mcp server or the model context.
The inline s3_put_object tool and response-inline s3_get_object reads are exceptions: they pass object bytes through the b2-mcp process and are bounded to small control-plane objects of 1 MiB or less for manifests, sidecars, and tiny configuration files. When local filesystem access is enabled, s3_get_object can also stream a requested object through the b2-mcp process to the configured saveToPath without buffering the full object in memory or returning it to the model context. HTTP transport disables local-file access by default and requires an operator-configured filesystem sandbox to enable it. Use presigned URL or multipart workflows for ordinary object data and bulk transfers.
Logs
b2-mcp emits structured logs for the local user or deployment operator. Logs are written to stderr by default or to the operator-selected B2_LOG_FILE path. They are not sent to the publisher.
Log records are passed through the repository's secret-redaction layer. B2 application keys, master keys, authorization tokens, bearer tokens, presigned URLs, notification signing secrets, custom secret headers, and request bodies are not intentionally logged. Operators who export or ship logs to another system are responsible for that system's privacy, access, and retention policy.
Analytics, Telemetry, And Tracking
b2-mcp does not include analytics, telemetry, advertising pixels, tracking cookies, crash reporting, or phone-home behavior. Ordinary B2 and S3-compatible API calls necessarily disclose to Backblaze the operation being performed, the bucket, object, and account identifiers it targets, request timing and source network, and any payload the operation requires — this is the B2 processing described under B2 Credentials, Object Data, and Third Parties, not extra tracking. The only identification metadata b2-mcp itself adds on top of that is the User-Agent header. That User-Agent is produced by the underlying SDKs (the official Backblaze B2 SDK and the AWS S3 SDK) and carries their standard SDK, runtime, and platform identifiers; it is not an exhaustive list controlled by b2-mcp. The fields b2-mcp adds are the product token, such as b2-mcp/<version> for published releases or b2-mcp/dev for source and development builds; the active transport label, such as stdio or http; optional S3 tool-surface labels; and, if an operator sets B2_MCP_UA_SUFFIX, that operator-supplied deployment tag. b2-mcp adds no request body, credential, or object data to this User-Agent metadata.
Third Parties
Runtime B2 API requests go to Backblaze B2. Backblaze's handling of B2 account information and stored files is governed by the Backblaze Privacy Policy and the terms for the Backblaze services you use.
For self-hosted HTTP deployments, your chosen hosting provider, proxy, identity provider, log sink, or monitoring system may process deployment data according to your configuration and their own policies. The publisher does not control those systems.
Data Retention
The publisher does not retain runtime data from b2-mcp because it does not receive it. Local users and HTTP deployment operators control retention for their client configuration, process environment, logs, secret stores, generated presigned URLs until expiry, and any local secret-sink files they enable. Backblaze B2 retains account data and stored objects according to your Backblaze account configuration and Backblaze's policies.
Process-local authorization and capability caches expire automatically and are lost when the server process exits.
Children
b2-mcp is developer and infrastructure software. It is not directed to children, and the publisher does not knowingly collect personal information from children through b2-mcp.
Security And Contact
For private security reports, use the process in SECURITY.md. For non-sensitive privacy questions about this project, open a GitHub issue at backblaze-labs/b2-mcp.
Changes To This Policy
Material changes to this policy will be made in this repository and published with the project documentation. The effective date above will be updated when the policy changes.