mcpField
B
Backblaze B2 MCP server

Backblaze B2 MCP server

已认证精选本地服务
github.com云与基础设施461 天前更新

关于 Backblaze B2 MCP server

Backblaze B2 MCP 服务用于操作 Backblaze B2 云存储,提供 40 个工具,涵盖原生 B2 SDK、S3 兼容数据操作及分析功能。适合希望让 MCP 兼容 AI 客户端管理存储桶与对象的用户,目前在 Backblaze-Labs 中孵化。

主要功能

  1. 0140 个 B2 存储工具
  2. 02基于 S3 的对象上传、下载与列表
  3. 03存储桶、应用密钥与 Object Lock 管理
  4. 04破坏性操作受控,密钥不暴露给模型

适用场景

  1. 01列出密钥可访问的存储桶
  2. 02上传文件并生成临时下载链接
  3. 03分析存储增长与大文件

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 B2 工具与 b2://server-config、b2://capabilities、b2://bucket/{bucketName} 等只读资源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"backblaze-b2": {
"command": "npx",
"args": [
"-y",
"@backblaze-labs/b2-mcp"
],
"env": {
"B2_APPLICATION_KEY_ID": "<B2_APPLICATION_KEY_ID>",
"B2_APPLICATION_KEY": "<B2_APPLICATION_KEY>",
"B2_REGION": "<B2_REGION>",
"B2_MASTER_KEY_ID": "<B2_MASTER_KEY_ID>",
"B2_MASTER_KEY": "<B2_MASTER_KEY>"
}
}
}
}
启动命令npx -y @backblaze-labs/b2-mcp
需要配置的环境变量
B2_APPLICATION_KEY_ID密钥Backblaze B2 application key ID for native B2 and S3-compatible tools.
B2_APPLICATION_KEY密钥Backblaze B2 application key secret.
B2_REGIONOptional fallback S3-compatible region used before authorization.
B2_MASTER_KEY_ID密钥Optional master key ID for Partner/Groups API tools.
B2_MASTER_KEY密钥Optional master key secret for Partner/Groups API tools.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@backblaze-labs/b2-mcp0.2.2

工具

40

收录的工具列表 · 更新于 3 周前

此工具无需参数。

详细介绍

Backblaze B2 MCP 服务

Backblaze B2 MCP 服务 — 通过 Model Context Protocol 安全访问 Backblaze B2 存储桶、文件、密钥、Object Lock 和兼容 S3 的存储

CI CodeQL npm License: MIT TypeScript Node.js MCP API docs Coverage floors Runtime dependencies

MCP Registry Glama Verified by M8ven MCP Badge Listed on awesome-remote-mcp-servers

一个适用于 Backblaze B2 Cloud Storage 的 Model Context Protocol 服务。它让任何兼容 MCP 的 AI 客户端(Claude 等)都能通过一组精简、安全的工具操作 B2,目前正由 Backblaze-Labs 孵化。

这是 Backblaze 官方的 B2 MCP 服务 — backblaze-labs/b2-mcp,在 npm 上以 @backblaze-labs/b2-mcp 发布,并以 io.github.backblaze-labs/b2-mcp 列入官方 MCP Registry。Backblaze 不维护社区分支和第三方封装。

40 个工具,按底层类别分配:

  • 原生 B2 SDK(@backblaze-labs/b2-sdk)(17 个) — S3 API 中没有对应功能的 B2 控制平面操作:存储桶、应用程序密钥、Object Lock、事件通知以及 Partner/Groups 操作。
  • AWS S3 SDK(@aws-sdk/client-s3)(19 个) — 兼容 S3 的数据平面:对象上传/下载/复制/列举/删除、分段上传、存储桶可达性、生命周期以及预签名 URL 路径。
  • 均不使用 SDK(自定义 MCP 代码)(4 个) — 基于 B2 报告的仓库自有分析和有界实时列表:存储增长、流量流出量领先者、最大文件和未完成的上传。 破坏性操作受到门控;在默认、文件和关闭模式下,持久化的 B2 密钥不会进入模型的上下文;注册会感知能力,因此密钥只会看到自己能够使用的工具。该服务还会公开只读 MCP 资源:b2://server-config(非机密信息,即使在无凭据发现期间也会注册),以及受能力限制的 b2://capabilities 和 b2://bucket/{bucketName}。

目录


快速开始

**前提条件:**受支持的 Node.js 运行时和 Backblaze B2 应用程序密钥。只需一个非主密钥即可。软件包引擎版本范围为 ^22.22.2 || ^24 || ^26;CI 在 Node.js 22.23.1、24 和 26 上运行。一个非主应用程序密钥即可满足常规存储操作(B2 原生、S3 和密钥管理)的需求;Partner/Groups 工具还需要 B2_MASTER_KEY_ID / B2_MASTER_KEY。

选项 A — npx(Claude Desktop 配置)

编辑 claude_desktop_config.json(macOS:~/Library/Application Support/Claude/,Windows:%APPDATA%\Claude\,Linux:~/.config/Claude/)并添加:

{
  "mcpServers": {
    "backblaze-b2": {
      "command": "npx",
      "args": ["-y", "@backblaze-labs/b2-mcp"],
      "env": {
        "B2_APPLICATION_KEY_ID": "your-application-key-id",
        "B2_APPLICATION_KEY": "your-application-key-secret"
      }
    }
  }
}

重启 Claude Desktop,即可看到 B2 工具。如果授权前需要显式指定备用区域,请将 B2_REGION 添加到同一 env 块中(否则,S3/报告工具会从已授权的 B2 账户响应中推导区域):

{
  "B2_APPLICATION_KEY_ID": "your-application-key-id",
  "B2_APPLICATION_KEY": "your-application-key-secret",
  "B2_REGION": "us-east-005"
}

规范的软件包名称为 @backblaze-labs/b2-mcp,规范的二进制文件为 b2-mcp(b2-mcp-server 是过渡别名);npx -y @backblaze-labs/b2-mcp 可直接运行该服务。完整变量列表请参阅配置,有关源代码检出后的设置以及适用于 Cursor、VS Code、Cline、Windsurf、Zed、Continue、Goose、Claude.ai 和托管式(Streamable HTTP)环境的可直接复制粘贴的配置,请参阅 docs/product-specs/clients.md。

选项 B — Claude Desktop 扩展(MCPB)

等到某个版本发布 b2-mcp.mcpb 资源后即可使用(从 0.2.1 起);更早的版本不包含扩展包,因此请在发布页面出现该资源之前使用选项 A。

不想编辑 JSON?请从最新版本下载 b2-mcp.mcpb,然后在 Claude Desktop 中打开 Settings → Extensions → Advanced settings → Extension Developer → Install Extension… 并选择下载的文件。Claude Desktop 会提示你输入应用程序密钥 ID 和应用程序密钥(区域和主密钥为可选项),无需手动编辑配置文件。该扩展包会启动固定版本的 npx -y @backblaze-labs/b2-mcp@<version>(npm 会在首次运行时解析该服务),因此始终运行确切的已发布版本。单击即可使用的 Claude Connectors Directory 列表正在筹备中。

然后只需询问:

“列出此密钥可以访问的存储桶。” · “将 ./data.csv 上传到 reports/may-2026.csv。” · “给我一个有效期为 1 小时的下载链接,用于下载 backups/latest.tar.gz。” · “列出 logs/2026/ 下的文件。”

**为什么你的客户端显示的工具少于 40 个:**注册会感知能力。使用非主密钥且未配置主密钥时,需要主密钥的三个 Partner/Groups 工具不会公开,因此 tools/list 会报告 37 个工具;对于具备 Partner 权限的账户,添加 B2_MASTER_KEY_ID / B2_MASTER_KEY 即可获得全部 40 个工具。只读密钥会进一步缩减可用工具范围。无凭据扫描器会看到完整的已公布工具集,但在提供有效 B2 凭据之前,每次 tools/call 都会返回 missing_credentials。

Docker

已发布的镜像默认使用 HTTP 传输,并且仅从环境变量读取配置(没有可变的 latest 标签——请固定发布版本):

B2_MCP_VERSION=VERSION # replace with the release version you want
B2_MCP_IMAGE="ghcr.io/backblaze-labs/b2-mcp:${B2_MCP_VERSION}"
docker run --rm --name b2-mcp \
  --stop-timeout 20 \
  -p 127.0.0.1:3000:3000 \
  -e B2_HTTP_CREDENTIAL_MODE=server \
  -e B2_APPLICATION_KEY_ID=your-application-key-id \
  -e B2_APPLICATION_KEY=your-application-key-secret \
  -e B2_ALLOWED_HOSTS=localhost,127.0.0.1 \
  -e B2_DESTRUCTIVE_POLICY=block \
  -e B2_REGISTER_ALL_TOOLS=false \
  -e B2_SECRET_SINK=off \
  -e B2_ALLOW_INLINE_SECRETS=false \
  -e B2_ALLOW_LOCAL_FILES=false \
  "$B2_MCP_IMAGE"

对于容器内使用 stdio 的客户端,请显式传递传输方式并保持 stdin 打开:

B2_MCP_VERSION=VERSION # replace with the release version you want
B2_MCP_IMAGE="ghcr.io/backblaze-labs/b2-mcp:${B2_MCP_VERSION}"
docker run --rm -i \
  --no-healthcheck \
  -e B2_APPLICATION_KEY_ID=your-application-key-id \
  -e B2_APPLICATION_KEY=your-application-key-secret \
  "$B2_MCP_IMAGE" stdio

要部署到托管式 HTTP 环境? 请参阅部署矩阵和安全与自托管中链接的提供商指南(Docker、Vercel、Cloudflare、AWS、GCP、Azure、Render、Railway、Fly.io),以及 docs/references/deployment/docker.md 中经过安全加固的 HTTP 示例。

B2 Skills pack

此仓库在 skills/ 下打包了一个客户端侧的 Backblaze B2 skills pack(清单:skills/pack.json)——其中包含适用于常见工作流(备份/恢复、最小权限密钥、Object Lock、生命周期和成本管理、迁移、事件响应)的 Markdown 操作指南。MCP 服务是操作层;这些指南则是专业知识层。它们不会添加端点或权限——只会对现有工具进行编排,并强化服务端执行的相同字节路径和破坏性操作防护措施。

对于支持 Markdown 技能的客户端,此功能为可选,但建议使用。将每个 skills/b2-*/ 目录放在 ~/.claude/skills/ 下(Claude Code),或通过 Settings → Capabilities → Skills 上传每项技能对应的 ZIP 文件(Claude.ai / Claude Desktop)。在本地验证该技能包:

pnpm run validate:skills

配置

变量必需默认值描述
B2_APPLICATION_KEY_IDstdio / HTTP server—应用密钥 ID(非主密钥)——原生 B2 和 S3 兼容工具的主要凭据
B2_APPLICATION_KEYstdio / HTTP server—应用密钥密文
B2_MASTER_KEY_ID / B2_MASTER_KEY—回退为应用密钥由 SDK 支持的 Partner/Groups 工具所用的主凭据;执行这些操作时,必须具备 Partner API 权限
B2_REGION—us-west-004S3 兼容端点区域的回退值/默认值;已授权的 B2 响应会为 S3/报告工具覆盖此值
B2_MCP_UA_SUFFIX——可选的运维方令牌,会追加在出站 User-Agent 内置的 b2-mcp/<version> 产品令牌之后(用于标记部署)
B2_MCP_OUTPUT_FORMAT—json面向大模型的结构化成功结果 TextContent.text 格式:紧凑型 json 或选择启用的 toon
B2_ENABLE_MCP_PROMPTS—false默认关闭 MCP 工作流提示词(prompts/list、prompts/get);待所有副本都运行支持提示词的代码后,设为 true。该选项会同时控制注册和通告,因此请在整个集群中原子地切换(或使用粘性路由)
B2_MCP_TRANSPORT—stdio未传入 stdio / http 参数或 --transport 标志时的 CLI 默认传输方式;Docker 镜像会将其设为 http
B2_HTTP_HOST仅限 HTTPNode 监听默认值独立 Node HTTP 监听主机;在同主机反向代理后绑定时,设为 127.0.0.1
B2_LOG_FILE—stderr用于写入已脱敏结构化 JSON 日志的可选绝对路径(仅限 POSIX)。设置后,该文件会取代 stderr;stdout 从不用于日志。关于重命名/创建和 SIGHUP 轮换,请参阅 docs/product-specs/clients.md
B2_SECRET_SINK—stdio:file;HTTP:off持久化密钥输出模式:file、inline 或 off。文件模式支持 b2_create_key 和 b2_create_group_member;b2_reserve_trial_create_account 没有文件模式恢复路径,因此必须显式启用 inline 模式
B2_SECRET_SINK_FILEfile 覆盖值stdio 下为 ~/.b2-mcp/secrets.jsonl文件接收模式下仅追加的明文 JSONL 凭据台账。HTTP/无服务器文件模式需要此显式绝对路径,并要求 B2_ALLOW_LOCAL_FILES=true
B2_ALLOW_INLINE_SECRETS仅限 HTTP inlinefalse在 B2_SECRET_SINK=inline 能够通过 MCP 响应返回持久化密钥之前,必须显式启用此 HTTP/无服务器专用选项
B2_HTTP_CREDENTIAL_MODE仅限 HTTPheadersheaders、server 或 principal;未设置时保留现有的基于请求头的客户端行为。托管部署时请显式设置
B2_PRINCIPAL_CREDENTIAL_MAPHTTP principal—将经过验证的 MCP principal 映射到客户管理凭据引用的 JSON 映射
B2_CREDENTIAL_<REF>_APPLICATION_KEY_ID / _APPLICATION_KEYHTTP principal—为映射引用提供的基于环境变量的密钥代理材料
安全/策略(安全默认值;可按需覆盖):
变量默认值说明
B2_DESTRUCTIVE_POLICYstdio:confirm;HTTP:block对破坏性工具进行限制:confirm 要求在兼容的 2026 客户端上通过 MCP 表单征求批准;如果无法使用或已禁用表单征求,则要求 confirm: true;elicit 要求人为批准,并在无法提示任何人时拒绝;block 在征求批准前拒绝;allow 跳过这两项限制
B2_DESTRUCTIVE_ELICITATIONon设置为 off、false 或 0,即可禁用 MCP 表单征求,仅依赖 B2_DESTRUCTIVE_POLICY
B2_MAX_KEY_DURATION_SECONDS—b2_create_key 的可选最长期限;设置后,将在任何 B2 创建调用前拒绝无过期时间的密钥和超出期限的密钥
B2_ALLOW_KEY_MGMT_GRANTS / B2_ALLOW_UNSCOPED_KEYSfalse明确允许 b2_create_key 创建具有密钥管理能力的密钥,或不受范围限制的写入/删除密钥
B2_ALLOWED_HOSTS / B2_ALLOWED_ORIGINS无HTTP 传输:Host/Origin 允许列表(防止 DNS 重绑定)——任何面向互联网的 HTTP 部署都必须设置这些值
B2_HTTP_REQUEST_TIMEOUT_MS / B2_HTTP_HEADERS_TIMEOUT_MS30000 / 10000独立 Node HTTP 传输的请求超时和标头超时
B2_TRUST_PROXY_HEADERSfalseHTTP 传输:仅在可信代理后面,对未经身份验证的准入密钥信任 X-Forwarded-For / X-Real-IP
B2_MCP_RATE_LIMIT_RPS / B2_MCP_RATE_LIMIT_BURST60 / 120HTTP 传输:按凭据限制请求速率
B2_MAX_SESSIONS / B2_MAX_SESSIONS_PER_KEY1000 / 20HTTP 传输:全局及每个凭据的并发进行中请求上限
B2_STDIO_CAPABILITY_TIMEOUT_MS10000Stdio 启动时的能力发现期限;本地超时后将启用默认拒绝的工具界面
B2_CAPABILITY_CACHE_TTL_MS / B2_CAPABILITY_CACHE_MAX_ENTRIES300000 / 10000有界能力发现缓存的 TTL 和大小;缓存身份与密钥绑定,日志标签使用非密钥指纹
B2_S3_SAVE_TO_PATH_IDLE_TIMEOUT_MS60000将 s3_get_object 结果流式传输到 saveToPath 时的空闲超时

可直接复制的 .env.example 列出了本地变量,而 deploy/customer-hosted/b2-mcp.env.example 列出了托管容器基线。仅适用于 HTTP 的文件访问变量(B2_ALLOW_LOCAL_FILES、B2_FILE_ROOT)见 docs/DEPLOY.md;上述能力/缓存调优项在此处内联说明。


工具

此服务公开 40 个工具(注册过程会识别能力,因此每个密钥只能看到其可用的子集)。**总计 40 个——17 个原生 B2 SDK 工具 + 19 个 AWS S3 SDK 工具 + 4 个非 SDK/自定义 MCP 工具。**前缀数量仍为 21 个原生 b2_* 名称 + 19 个数据面 s3_* 名称。在 stdio 默认的 confirm 策略下,十五个具有破坏性、会生成持久密钥或会削弱保护的工具,执行前必须确认;HTTP 的默认策略为 block。按配置文件区分并标注可用性的工具列表(按能力集划分)见生成的 docs/generated/tool-profiles.md;破坏性操作门控策略和持久密钥处理(密钥接收端、幂等键、POSIX 与 Windows 行为)见 docs/AUTHENTICATION.md。

原生 B2 SDK(17 个):

  • b2_authorize_account — 验证凭据并返回账户信息
  • b2_list_buckets — 列出存储桶(可选筛选条件)
  • b2_create_bucket — 创建存储桶并设置初始策略
  • b2_delete_bucket — 删除空存储桶
  • b2_update_bucket — 更新持久存储桶设置;风险更高的更改受门控
  • b2_get_bucket_notification_rules — 读取 webhook 通知规则,并对密钥进行脱敏
  • b2_set_bucket_notification_rules — 替换 webhook 通知规则;仅允许公开的 HTTPS 目标
  • b2_list_keys — 列出应用密钥
  • b2_delete_key — 永久撤销应用密钥
  • b2_create_key — 通过已配置的密钥接收端创建受限应用密钥
  • b2_update_file_legal_hold — 设置/清除对象的法律保留
  • b2_update_file_retention — 设置/清除对象的保留期限
  • b2_list_groups — 列出合作伙伴组(需要 Partner API 凭据)
  • b2_eject_group_member — 从合作伙伴组中移除成员(需要 Partner API 凭据)
  • b2_list_group_members — 列出组成员(需要 Partner API 凭据)
  • b2_create_group_member — 创建 Partner 组成员(需要 Partner API 凭据)
  • b2_reserve_trial_create_account — 预留试用账户(需要 Partner API 凭据)

AWS S3 SDK — 数据面(19 个):

  • s3_put_object — 内联上传小型(≤1 MiB)控制面对象
  • s3_get_object — 内联下载小型(≤1 MiB)控制面对象
  • s3_delete_object — 删除当前对象或指定版本;适用破坏性操作门控
  • s3_delete_objects — 批量删除对象
  • s3_head_object — 获取对象元数据
  • s3_copy_object — 服务端复制
  • s3_list_objects_v2 — 列出对象
  • s3_list_object_versions — 列出对象版本和删除标记(分页)
  • s3_create_multipart_upload — 开始分段上传
  • s3_get_presigned_upload_part_url — 为一个分段生成预签名 PUT URL
  • s3_complete_multipart_upload — 根据有序分段 ETag 完成分段上传
  • s3_abort_multipart_upload — 中止分段上传
  • s3_list_parts — 列出已上传的分段
  • s3_list_multipart_uploads — 列出进行中的分段上传(分页)
  • s3_upload_part_copy — 服务端复制一个分段
  • s3_get_presigned_url — 短时有效的预签名 PUT/GET 持有者 URL
  • s3_head_bucket — 检查存储桶能否通过 S3 端点访问
  • s3_get_bucket_location — 获取存储桶区域/位置约束
  • s3_put_bucket_lifecycle — 设置 S3 生命周期规则

自定义 MCP 分析工具(4 个):

  • b2_report_usage_growth — 按两个日期之间的存储数据增长量为账户排名
  • b2_rank_egress_leaders — 按账户或存储桶统计一段时间内的出口流量排名
  • b2_list_largest_files — 通过有界实时列表获取存储桶中最大的对象
  • b2_unfinished_uploads — 查找占用存储空间的废弃分段上传 **MCP 工作流提示词(选择启用):**默认关闭;设置 B2_ENABLE_MCP_PROMPTS=true,即可通过 prompts/list / prompts/get 提供五个引导式工作流。这些提示词是参数化消息模板,不会执行工具或批准破坏性操作,并且会根据与工具相同的工具面和能力映射进行筛选。请在整个服务集群中原子性地切换此标志(它会同时控制注册和公告)。

Package API 表面

npm 包有意仅支持根 CommonJS 入口 (require("@backblaze-labs/b2-mcp")),该入口公开 startStdio(): Promise<void>,以及用于获取元数据的 ./package.json。TypeScript 使用者可以针对同一根 CommonJS 表面进行编译:

import b2Mcp = require("@backblaze-labs/b2-mcp");

const start: () => Promise<void> = b2Mcp.startStdio;

超出该根入口的编程式 TypeScript 导入不属于受支持的公共 API。ESM 命名导入不在契约范围内。诸如 @backblaze-labs/b2-mcp/dist/server.js 这样的深层导入属于私有实现细节,已由包的 exports 映射表封闭。 请改用 CLI/bin 入口或根目录的 startStdio 导出。


CLI 参考

源入口点和已安装的软件包二进制文件使用相同的 CLI:

Usage: b2-mcp [stdio|http] [options]

Options:
  --transport <stdio|http>  Transport to serve (default: B2_MCP_TRANSPORT or stdio)
  --port <port>             HTTP listen port (default: PORT or 3000)
  --host <host>             HTTP listen host (default: Node listen default)
  --version                 Print the package version
  --help                    Show this help

工具结果会在 structuredContent 中携带无损值;面向大模型的 文本块由 B2_MCP_OUTPUT_FORMAT 选择(默认为 json,也可选择启用 toon)。有关输出格式契约,请参阅 docs/design-docs/tool-contract.md#structured-result-text-contract。


资源

只读 MCP 资源无需调用工具即可公开稳定的控制平面状态:

  • b2://server-config — 非机密服务器配置(传输方式、凭据模式、破坏性策略、密钥接收端模式、公共 URL、版本)。
  • b2://capabilities — 当前凭据的 B2 能力集合和活动工具配置文件。
  • b2://bucket/{bucketName} — 调用者有权读取时公开存储桶类型/可见性、生命周期、Object Lock、保留策略、加密、CORS、复制和通知规则(Webhook 密钥已隐藏)。

resources/list 最多列出 100 个具体存储桶资源;对于已知且获得授权的存储桶,请直接使用模板 URI。存储桶读取不会提供客户端缓存提示,因为写入后,可见性和通知目标与安全相关。


安全与自托管

内置防护措施(默认启用):破坏性操作门控(B2_DESTRUCTIVE_POLICY)、面向支持 2026 功能的客户端为破坏性工具提供 MCP 表单征询、为本地 stdio 创建由接收端支持的持久密钥,并在托管 HTTP 中默认失败关闭、集中递归清理响应、明确的凭据提供方模式、具备能力感知且失败关闭的注册机制、速率限制,以及值已脱敏的审计日志(仅记录非机密凭据指纹)。服务绝不会主动联系外部。

  • 本地使用 → stdio。 凭据保存在客户端配置/环境中;默认的 confirm 策略会在执行破坏性操作前询问。
  • 面向互联网的 HTTP → B2_DESTRUCTIVE_POLICY=block 是必需的防护措施(HTTP 默认值)。征询由客户端转发,因此它只是人在回路中的一道阻碍,并非独立的授权边界。
  • 选择凭据模式。 headers(默认,兼容模式)、server(在进程或密钥管理器中持有一个 B2 凭据),或 principal(将经过验证的 MCP authInfo 映射到客户持有的凭据)。无需凭据的发现操作(initialize、tools/list、resources/list、prompts/list、server/discover、ping)无需密钥即可运行,方便扫描器枚举;实际的 tools/call 仍需凭据。
  • 使用遵循最小权限原则的密钥。 普通存储应使用非主密钥。b2_create_key 会拒绝密钥管理授权、未限定范围的写入/删除授权,以及过长或永不过期的密钥,除非设置了对应的覆盖选项。
  • 预签名 URL 不是持久密钥。 s3_get_presigned_url / s3_get_presigned_upload_part_url 返回短期有效的承载令牌权限(expiresIn / expiresAt)——它们在过期前属于敏感信息,但并非长期有效的 B2 密钥。
  • 切勿提交凭据——请使用环境变量/密钥管理器。.env* 已加入 gitignore。

支持的部署方式:deploy/customer-hosted(可移植容器、compose、nginx/OAuth 边缘层)和 deploy/vercel(OAuth 保护的适配器)。服务提供商指南:Docker/OCI、Vercel、Cloudflare Workers、Cloudflare Containers、Google Cloud Run、AWS ECS Fargate、Azure Container Apps、Render、Railway 和 Fly.io——均遵循安全与凭据规范。

完整的托管部署手册(nginx、Let's Encrypt、加固后的 systemd、fail2ban、监控和安全基线检查清单):deploy/customer-hosted/README.md(已列入 docs/DEPLOY.md 矩阵)。身份验证、凭据保管和 OAuth 详情见 docs/AUTHENTICATION.md。


隐私

b2-mcp 通过 stdio 在本地运行,或部署在由用户或运营方控制的自托管 HTTP 环境中。正常使用时,发布方不会收到运行时 B2 凭据、对象数据、提示词、日志或遥测数据。处理对象字节的工作流应使用预签名 URL,使字节在客户端或工作进程与 Backblaze B2 之间直接传输;日志则采用带密钥脱敏的结构化格式。

请阅读规范的 PRIVACY.md 源文件,或查看由 GitHub Pages 发布的托管隐私政策。


开发

从全新检出的源码开始,请先启用固定版本的包管理器并安装 依赖,然后运行以下任一脚本:

corepack enable pnpm
corepack prepare '[email protected]+sha256.34e198cb1e43237517ecedfd31f9ae26a6c0a3e5366ce58a2d05f4b21fb5f19a' --activate
pnpm install --frozen-lockfile
pnpm run build              # clean + compile to dist/
pnpm run typecheck          # type-check src + tests (no emit)
pnpm test                   # typecheck, then fast unit tests
pnpm run test:contract      # deterministic MCP/package/schema contracts
pnpm run test:protocol      # modern + legacy MCP protocol behavior
pnpm run test:coverage      # deterministic source-covering suites + coverage summary
pnpm run test:package       # packed-package installation test
pnpm run verify             # fast no-credential quality gate
pnpm run test:live:b2       # both protected live B2 suites; requires B2 credentials
pnpm run evals              # deterministic LLM eval harness; live provider cases skip by default
pnpm run docs               # TypeDoc API docs plus hosted privacy page
pnpm start                  # stdio transport
pnpm run start:http --port 3000   # MCP 2026-07-28 HTTP transport
pnpm run smoke:local        # deterministic local MCP smoke; no endpoint or B2 credentials

完整脚本列表(诊断、耗时较长的测试、提供方对比评估、Inspector 冒烟测试)见 docs/TESTING.md。兼容的 MCP Inspector:@modelcontextprotocol/[email protected](Node.js 22.19.0+),通过 pnpm run smoke:inspector 运行。

文档

Backblaze Labs 生态系统

属于 Backblaze Labs:

  • Genblaze — Python SDK,用于 协调跨视频、音频和图像提供方的生成式 AI 媒体工作流,并为每项输出 内置来源追溯功能。
  • b2-sdk-typescript — Backblaze 维护的 B2 Cloud Storage TypeScript / JavaScript SDK (以 @backblaze-labs/b2-sdk 发布,本服务基于此 SDK 构建)。
  • b2-action — Backblaze 维护的 B2 Cloud Storage GitHub Action。

许可证

MIT — © 2026 Backblaze, Inc.

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。