WACM连接MCP服务器
A. 模型上下文协议(MCP) 服务器 Wasabi WACM Connect API。提供18个开箱即用的只读工具,在分层访问控制后面有12个选择加入写入工具。专为需要通过Claude管理Wasabi帐户层次结构、存储使用和计费数据的托管服务提供商(MSP)而设计。
\[!警告\] 此MCP服务器具有对Wasabi帐户管理基础架构的写访问权限。 此工具可以在实时WACM环境中创建、修改和删除子帐户、成员、频道帐户和其他资源。 通过此MCP采取的行动是真实的,可能是不可逆转的。
免责声明
这是一个由社区维护的独立项目。它是 与Wasabi Technologies无关、不受其认可或支持“Wasabi”和“WACM”是Wasabi Technologies,股份有限公司的商标。Wasabi Technologies不对通过此集成所做的意外更改负责。
AI特定风险
该服务器设计为由AI助手(LLM)操作。人工智能模型可以而且确实会犯错误——它们可能会误解指令、产生参数值幻觉,或者采取你不想采取的行动。在账户管理的背景下,这意味着人工智能可能会意外地:
- 创建不需要的帐户 配置或存储配额不正确
- 修改现有帐户 通过更改您没有要求更改的设置、角色或权限
- 删除帐户、成员或频道帐户 那些本不应该被删除的
- 执行批量操作 当您打算进行一次更改时,可以跨多个资源
- 对错误的资源采取行动 混淆同名帐户或ID
这些都是针对真实Wasabi基础设施的真实API调用,除非您使用专用测试帐户。AI和您的环境之间没有沙盒、暂存层或撤消按钮。
使用前
- 了解您的API证书 -API密钥的权限范围决定了AI可以达到的范围
- 在非生产环境中进行测试 如果可能,在启用生产帐户的写访问权限之前
- 以只读方式启动 --默认情况下禁用写入工具;仅启用所需的最小层
- 使用干运行模式 --每个写入工具都支持
dryRun: true在执行之前预览确切的HTTP请求 - 审查所有AI建议的行动 确认之前,尤其是批量操作或删除
- 更喜欢全列表操作 过度宽泛的访问权限,仅限于您实际需要的工具
责任
使用风险自负。 作者对因使用本软件而导致的数据丢失、服务中断、意外帐户修改或其他损害不承担任何责任,无论是由人工智能错误、配置错误还是任何其他原因造成的。看 Apache 2.0许可证 完整条款。
先决条件
- Node.js 24+ (使用本地
fetch) - WACM Connect API证书 -根据生成WACM中的API密钥 我的个人资料>WACM Connect (Wasabi文件)
安装
git clone https://github.com/myst3k/wasabi-wacm-connect-mcp.git
cd wasabi-wacm-connect-mcp
pnpm install
pnpm build配置
克劳德代码(.mcp.json)
只读(默认):
{
"mcpServers": {
"wasabi-wacm-connect-mcp": {
"command": "node",
"args": ["/path/to/wasabi-wacm-connect-mcp/dist/index.js"],
"env": {
"WACM_USERNAME": "your-username",
"WACM_API_KEY": "your-api-key"
}
}
}
}具有写访问权限(创建+更新):
{
"mcpServers": {
"wasabi-wacm-connect-mcp": {
"command": "node",
"args": ["/path/to/wasabi-wacm-connect-mcp/dist/index.js"],
"env": {
"WACM_USERNAME": "your-username",
"WACM_API_KEY": "your-api-key",
"WACM_WRITE_ACCESS": "true",
"WACM_WRITE_LEVEL": "manage"
}
}
}
}仅适用于特定的写入操作:
{
"mcpServers": {
"wasabi-wacm-connect-mcp": {
"command": "node",
"args": ["/path/to/wasabi-wacm-connect-mcp/dist/index.js"],
"env": {
"WACM_USERNAME": "your-username",
"WACM_API_KEY": "your-api-key",
"WACM_WRITE_ACCESS": "true",
"WACM_WRITE_ALLOWED_OPERATIONS": "create_sub_account,delete_member"
}
}
}
}克劳德桌面(claude_desktop_config.json)
{
"mcpServers": {
"wasabi-wacm-connect-mcp": {
"command": "node",
"args": ["/path/to/wasabi-wacm-connect-mcp/dist/index.js"],
"env": {
"WACM_USERNAME": "your-username",
"WACM_API_KEY": "your-api-key",
"WACM_WRITE_ACCESS": "true",
"WACM_WRITE_LEVEL": "full"
}
}
}
}环境变量
| 变量 | 描述 | 必填 |
|---|---|---|
WACM_USERNAME | WACM连接用户名 | 是 |
WACM_API_KEY | WACM Connect API密钥 | 是 |
WACM_WRITE_ACCESS | 设置为 true 启用写操作(终止开关) | 否 |
WACM_WRITE_LEVEL | 写入访问层: create, manage,或 full (见下文) | 否 |
WACM_WRITE_ALLOWED_OPERATIONS | 要启用的写入操作名称的逗号分隔列表 | 否 |
命令行标志 --username 和 --api-key 覆盖环境变量。
写入访问层
默认情况下,写入操作被禁用。要启用它们,您必须设置 WACM_WRITE_ACCESS=true 和 至少一个 WACM_WRITE_LEVEL 或 WACM_WRITE_ALLOWED_OPERATIONS.关闭开关(WACM_WRITE_ACCESS)必须明确设置——没有它,无论其他设置如何,都不会注册任何写入工具。
| 层级 | 工具已启用 | 计数 |
|---|---|---|
create | 所有5个POST(创建)工具 | 5 |
manage | create +3个PUT(更新)工具 | 8 |
full | manage +4个删除工具 | 12 |
当两个env变量都设置时,解析的操作是 联合 两者:
WACM_WRITE_LEVEL=manage+WACM_WRITE_ALLOWED_OPERATIONS=delete_member→ 9 书写工具WACM_WRITE_ALLOWED_OPERATIONS=create_sub_account,delete_member(无级别)→ 只有这两个
未知的级别值或操作名称会记录为警告并被忽略。
有效操作名称
create_sub_account, update_sub_account, delete_sub_account, create_member, update_member, delete_member, create_channel_account, update_channel_account, delete_channel_account, create_channel_account_user, delete_channel_account_user, create_standalone_account
可用工具(最多30个)
控制帐户(只读)
| 工具 | 说明 |
|---|---|
list_control_accounts | 列出所有控制帐户,包括存储分配和子帐户计数 |
get_control_account | 按ID获取特定的控制帐户 |
list_control_account_usages | 列出聚合使用数据(存储、出口、入口、API调用) |
get_control_account_usage | 按利用率ID获取特定使用记录 |
list_control_account_buckets | 列出控制帐户的存储桶级别利用率 |
子账户
| 工具 | 描述 | 访问 |
|---|---|---|
list_sub_accounts | 列出所有子帐户(Wasabi控制台帐户) | 阅读 |
get_sub_account | 按ID获取特定子帐户 | 阅读 |
list_sub_account_buckets | 列出子帐户的存储桶级别利用率 | 读取 |
create_sub_account | 在控制帐户下创建新的子帐户 | 写入(create) |
update_sub_account | 更新现有子帐户 | 写入(manage) |
delete_sub_account | 删除子帐户 | 写入(full) |
渠道账户
| 工具 | 描述 | 访问 |
|---|---|---|
list_channel_accounts | 列出所有渠道帐户(第三方访问层) | 读取 |
get_channel_account | 按ID获取特定频道帐户 | 阅读 |
create_channel_account | 创建新的渠道帐户 | 写入(create) |
update_channel_account | 更新现有渠道帐户 | 写入(manage) |
delete_channel_account | 删除频道帐户 | 写入(full) |
渠道帐户用户
| 工具 | 描述 | 访问 |
|---|---|---|
create_channel_account_user | 为频道帐户创建用户 | 写入(create) |
delete_channel_account_user | 删除频道帐户用户 | 写入(full) |
成员
| 工具 | 描述 | 访问 |
|---|---|---|
list_members | 列出具有角色和MFA状态的子帐户成员 | 阅读 |
get_member | 按ID获取特定成员 | 阅读 |
create_member | 在子帐户中创建新成员 | 写入(create) |
update_member | 更新现有成员 | 写入(manage) |
delete_member | 删除成员 | 写入(full) |
发票(只读)
| 工具 | 说明 |
|---|---|
list_invoices | 按子账户列出成本明细发票 |
get_invoice | 按ID获取特定发票 |
用法(只读)
| 工具 | 说明 |
|---|---|
list_usages | 列出子账户级别的每日使用指标 |
get_usage | 按利用率ID获取特定使用记录 |
独立账户
| 工具 | 描述 | 访问 |
|---|---|---|
list_standalone_accounts | 列出独立帐户(不在WACM层次结构中) | 读取 |
get_storage_amounts | 获取可用存储量选项 | 阅读 |
create_standalone_account | 创建新的独立帐户 | 写入(create) |
护栏
写操作受到多个安全层的保护:
- 紧急停止开关 —
WACM_WRITE_ACCESS=true必须明确设置以启用任何写入操作。否则,所有其他写入设置都将被忽略,服务器将严格只读。
- 分层访问控制 —
WACM_WRITE_LEVEL控制注册哪些类别的写入工具。LLM完全看不到未注册的工具。
- 异体手术 —
WACM_WRITE_ALLOWED_OPERATIONS独立于层级别或与层级别组合,提供对可用写入工具的精确细粒度控制。
- MCP工具注释 --每个写入工具都带有LLM的元数据提示:
- 创建(POST): readOnlyHint: false - 更新(PUT): readOnlyHint: false, idempotentHint: true - 删除(Delete): readOnlyHint: false, destructiveHint: true
- 干运行模式 --每个写入工具都接受
dryRun布尔参数(默认值:false).当true,该工具返回HTTP请求的预览(方法、URL、标头、正文),而不执行它。身份验证凭据在预览中被编辑。
可用资源(4)
| 资源 | URI | 描述 |
|---|---|---|
| 帐户层次结构 | wacm://hierarchy | 四层账户结构的Markdown文档 |
统制账户 wacm://control-accounts/{id} | 控制帐户详细信息的动态资源 | |
| 子账户 | wacm://sub-accounts/{id} | 子账户详细信息的动态资源 |
| 国家 | wacm://reference/countries | 用于创建帐户的可用国家代码 |
可用提示(5)
| 提示 | 说明 | 参数 |
|---|---|---|
storage-summary | 总结存储使用情况,突出显示接近配额的帐户 | controlAccountId (可选) |
billing-report | 按子账户分列的月度账单明细 | from, to, controlAccountId (可选) |
account-audit | 停用/不安全帐户的审计层次结构 | controlAccountId (可选) |
usage-trend | 分析子帐户随时间的使用趋势 | subAccountId, from, to |
bucket-analysis | 分析存储桶利用率,找到最大/最活跃的存储桶 | accountId, accountType |
对话示例
检查所有帐户的存储
“显示我所有控制帐户的存储使用情况摘要”
克劳德将使用 storage-summary 呼叫提示 list_control_accounts 和 list_sub_accounts,然后显示一个将活动存储与配额进行比较的表。
调查每月成本
“上个月我的最高成本是什么?按子账户细分。”
克劳德会打电话的 list_invoices 根据上个月的日期范围,按子账户分组,并确定成本最高的账户和类别。
安全审计
“审核我的帐户层次结构是否存在任何安全问题”
克劳德将使用 account-audit 提示枚举所有帐户和成员,检查丢失的MFA、停用的帐户和配置错误的配额。
使用模拟操作创建子账户
“在控制帐户5下创建一个名为‘Acme Corp’的新子帐户,但请先向我显示请求”
克劳德会打电话的 create_sub_account 和 dryRun: true 并显示完整的HTTP请求预览。确认后,它将执行实际请求。
故障排除
身份验证错误
- 验证您的凭据:
curl -u "$WACM_USERNAME:$WACM_API_KEY" https://api.wacm.wasabisys.com/api/v1/control-accounts - API密钥在生成时仅显示一次-如果丢失则重新生成
- 检查您是否使用了正确的密钥类型(帐户API密钥与个人API密钥)
速率限制
- API允许每个API键每秒5个GET请求
- 客户端在HTTP 429响应上自动重试一次
- 对于批量操作,预计内置速率限制器会自动节流
缺失数据
- 检查您的用户权限——可见性取决于您在帐户层次结构中的级别
- 治理用户可以查看所有帐户;控制帐户用户只能看到自己的
- 使用
includeDeleted: true查看已删除的子帐户
写入工具未出现
- 验证
WACM_WRITE_LEVEL或WACM_WRITE_ALLOWED_OPERATIONS在MCP配置中设置 - 检查stderr是否有关于未知级别值或操作名称的警告消息
- 更改环境变量后重新启动MCP服务器
安全
- 凭据仅存储在内存中 --从未写入磁盘或日志
- 默认情况下隐藏敏感字段 —
includeKeys和includeApiKey默认false - 写入工具是可选的 --除非通过env-vars显式启用,否则没有写操作可用
- 模拟运行预览编辑凭据 —
buildRequestPreview将auth标头替换为Basic [REDACTED] - CLI参数可见性 —
--api-key通过CLI在中可见ps产出;更喜欢生产环境变量 - 云LLM注意事项 --通过该服务器检索的数据可以由云AI服务处理;查看组织的数据处理策略
- 密钥轮换 -在WACM中的“我的配置文件”>“WACM连接”下定期重新生成API密钥
发展
pnpm install
pnpm dev # Run with tsx (auto-reload)
pnpm build # Compile TypeScript
pnpm test # Run tests
pnpm lint # Lint code
pnpm format # Format code
pnpm check # Type-check without emitting许可证
阿帕奇-2.0
