wasabi-wacm-connect-mcp
Provides tools for managing Wasabi account hierarchy, storage usage, and billing data through the WACM Connect API, including control accounts, sub-accounts, channel accounts, members, invoices, and usage metrics.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wasabi-wacm-connect-mcp Show me storage usage for all sub-accounts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WACM Connect MCP Server
A Model Context Protocol (MCP) server for the Wasabi WACM Connect API. Provides 18 read-only tools out of the box, with 12 opt-in write tools behind tiered access controls. Designed for Managed Service Providers (MSPs) who need to manage their Wasabi account hierarchy, storage usage, and billing data through Claude.
This MCP server has write access to your Wasabi account management infrastructure.
This tool can create, modify, and delete sub-accounts, members, channel accounts, and other resources in your live WACM environment. Actions taken through this MCP are real and may be irreversible.
Disclaimer
This is an independent, community-maintained project. It is not affiliated with, endorsed by, or supported by Wasabi Technologies. "Wasabi" and "WACM" are trademarks of Wasabi Technologies, Inc. Wasabi Technologies is not responsible for unintended changes made through this integration.
AI-Specific Risks
This server is designed to be operated by an AI assistant (LLM). AI models can and do make mistakes — they may misinterpret instructions, hallucinate parameter values, or take actions you did not intend. In the context of account management, this means an AI could accidentally:
Create unwanted accounts with incorrect configurations or storage quotas
Modify existing accounts by changing settings, roles, or permissions you didn't ask to change
Delete accounts, members, or channel accounts that were not meant to be removed
Perform bulk operations across multiple resources when you intended a single change
Act on the wrong resource by confusing similarly named accounts or IDs
These are real API calls against your real Wasabi infrastructure unless you are using a dedicated test account. There is no sandbox, staging layer, or undo button between the AI and your environment.
Before Use
Understand your API credentials — the API key's permission scope determines what the AI can reach
Test in a non-production environment if possible before enabling write access on production accounts
Start read-only — write tools are disabled by default; only enable the minimum tier you need
Use dry-run mode — every write tool supports
dryRun: trueto preview the exact HTTP request before executionReview all AI-suggested actions before confirming, especially bulk operations or deletions
Prefer the operation allowlist over broad tier access to limit exposure to only the tools you actually need
Liability
Use at your own risk. The authors assume no liability for data loss, service disruption, unintended account modifications, or other damages resulting from use of this software — whether caused by AI error, misconfiguration, or any other reason. See the Apache 2.0 license for full terms.
Related MCP server: boondmanager-mcp-server
Prerequisites
Node.js 24+ (uses native
fetch)WACM Connect API credentials — generate an API key in WACM under My Profile > WACM Connect (Wasabi docs)
Installation
git clone https://github.com/myst3k/wasabi-wacm-connect-mcp.git
cd wasabi-wacm-connect-mcp
pnpm install
pnpm buildConfiguration
Claude Code (.mcp.json)
Read-only (default):
{
"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"
}
}
}
}With write access (create + update):
{
"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"
}
}
}
}With specific write operations only:
{
"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 (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"
}
}
}
}Environment Variables
Variable | Description | Required |
| WACM Connect username | Yes |
| WACM Connect API key | Yes |
| Set to | No |
| Write access tier: | No |
| Comma-separated list of write operation names to enable | No |
CLI flags --username and --api-key override environment variables.
Write Access Tiers
Write operations are disabled by default. To enable them, you must set WACM_WRITE_ACCESS=true and at least one of WACM_WRITE_LEVEL or WACM_WRITE_ALLOWED_OPERATIONS. The kill switch (WACM_WRITE_ACCESS) must be explicitly set — without it, no write tools are registered regardless of other settings.
Tier | Tools Enabled | Count |
| All 5 POST (create) tools | 5 |
|
| 8 |
|
| 12 |
When both env vars are set, the resolved operations are the union of both:
WACM_WRITE_LEVEL=manage+WACM_WRITE_ALLOWED_OPERATIONS=delete_member→ 9 write toolsWACM_WRITE_ALLOWED_OPERATIONS=create_sub_account,delete_member(no level) → just those 2
Unknown level values or operation names are logged as warnings and ignored.
Valid Operation Names
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
Available Tools (up to 30)
Control Accounts (read-only)
Tool | Description |
| List all Control Accounts with storage allocation and sub-account counts |
| Get a specific Control Account by ID |
| List aggregate usage data (storage, egress, ingress, API calls) |
| Get a specific usage record by utilization ID |
| List bucket-level utilization for a Control Account |
Sub-Accounts
Tool | Description | Access |
| List all Sub-Accounts (Wasabi Console accounts) | Read |
| Get a specific Sub-Account by ID | Read |
| List bucket-level utilization for a Sub-Account | Read |
| Create a new Sub-Account under a Control Account | Write ( |
| Update an existing Sub-Account | Write ( |
| Delete a Sub-Account | Write ( |
Channel Accounts
Tool | Description | Access |
| List all Channel Accounts (third-party access tier) | Read |
| Get a specific Channel Account by ID | Read |
| Create a new Channel Account | Write ( |
| Update an existing Channel Account | Write ( |
| Delete a Channel Account | Write ( |
Channel Account Users
Tool | Description | Access |
| Create a user for a Channel Account | Write ( |
| Delete a Channel Account user | Write ( |
Members
Tool | Description | Access |
| List Sub-Account members with roles and MFA status | Read |
| Get a specific member by ID | Read |
| Create a new member in a Sub-Account | Write ( |
| Update an existing member | Write ( |
| Delete a member | Write ( |
Invoices (read-only)
Tool | Description |
| List invoices with cost breakdowns by sub-account |
| Get a specific invoice by ID |
Usages (read-only)
Tool | Description |
| List Sub-Account level daily usage metrics |
| Get a specific usage record by utilization ID |
Standalone Accounts
Tool | Description | Access |
| List Standalone Accounts (not in WACM hierarchy) | Read |
| Get available storage amount options | Read |
| Create a new Standalone Account | Write ( |
Guardrails
Write operations are protected by multiple safety layers:
Kill switch —
WACM_WRITE_ACCESS=truemust be explicitly set to enable any write operations. Without this, all other write settings are ignored and the server is strictly read-only.Tiered access control —
WACM_WRITE_LEVELcontrols which categories of write tools are registered. Unregistered tools are completely invisible to the LLM.Operation allowlist —
WACM_WRITE_ALLOWED_OPERATIONSprovides fine-grained control over exactly which write tools are available, independent of or combined with tier levels.MCP tool annotations — Each write tool carries metadata hints for the LLM:
Create (POST):
readOnlyHint: falseUpdate (PUT):
readOnlyHint: false, idempotentHint: trueDelete (DELETE):
readOnlyHint: false, destructiveHint: true
Dry-run mode — Every write tool accepts a
dryRunboolean parameter (default:false). Whentrue, the tool returns a preview of the HTTP request (method, URL, headers, body) without executing it. Auth credentials are redacted in the preview.
Available Resources (4)
Resource | URI | Description |
Account Hierarchy |
| Markdown documentation of the 4-tier account structure |
Control Account |
| Dynamic resource for Control Account details |
Sub-Account |
| Dynamic resource for Sub-Account details |
Countries |
| Available country codes for account creation |
Available Prompts (5)
Prompt | Description | Parameters |
| Summarize storage usage, highlight accounts near quota |
|
| Monthly billing breakdown by sub-account |
|
| Audit hierarchy for deactivated/insecure accounts |
|
| Analyze usage trends over time for a sub-account |
|
| Analyze bucket utilization, find largest/most active |
|
Example Conversations
Check Storage Across All Accounts
"Show me a summary of storage usage across all my control accounts"
Claude will use the storage-summary prompt to call list_control_accounts and list_sub_accounts, then present a table comparing active storage against quotas.
Investigate Monthly Costs
"What were my top costs last month? Break it down by sub-account."
Claude will call list_invoices with the previous month's date range, group by sub-account, and identify the highest-cost accounts and categories.
Security Audit
"Audit my account hierarchy for any security concerns"
Claude will use the account-audit prompt to enumerate all accounts and members, checking for missing MFA, deactivated accounts, and misconfigured quotas.
Create a Sub-Account with Dry Run
"Create a new sub-account called 'Acme Corp' under control account 5 — but show me the request first"
Claude will call create_sub_account with dryRun: true and show the full HTTP request preview. After you confirm, it will execute the actual request.
Troubleshooting
Authentication Errors
Verify your credentials:
curl -u "$WACM_USERNAME:$WACM_API_KEY" https://api.wacm.wasabisys.com/api/v1/control-accountsAPI keys are shown only once at generation time — regenerate if lost
Check that you're using the correct key type (Account API Key vs Personal API Key)
Rate Limiting
The API allows 5 GET requests per second per API key
The client automatically retries once on HTTP 429 responses
For bulk operations, expect automatic throttling by the built-in rate limiter
Missing Data
Check your user permissions — visibility depends on your tier in the account hierarchy
Governance users see all accounts; Control Account users see only their own
Use
includeDeleted: trueto see deleted sub-accounts
Write Tools Not Appearing
Verify
WACM_WRITE_LEVELorWACM_WRITE_ALLOWED_OPERATIONSis set in your MCP configCheck stderr for warning messages about unknown level values or operation names
Restart the MCP server after changing environment variables
Security
Credentials are stored in memory only — never written to disk or logs
Sensitive fields hidden by default —
includeKeysandincludeApiKeydefault tofalseWrite tools are opt-in — no write operations are available unless explicitly enabled via env vars
Dry-run previews redact credentials —
buildRequestPreviewreplaces the auth header withBasic [REDACTED]CLI arg visibility —
--api-keyvia CLI is visible inpsoutput; prefer environment variables for productionCloud LLM considerations — data retrieved through this server may be processed by cloud AI services; review your organization's data handling policies
Key rotation — regenerate API keys periodically in WACM under My Profile > WACM Connect
Development
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 emittingLicense
Apache-2.0
Available Tools
18 toolsget_channel_accountARead-only
Get a specific Channel Account by ID with detailed information including storage allocation, sub-account counts, and address details.
Inputs: channelAccountId (required), includeDeletedSubAccounts.
get_control_accountARead-only
Get a specific Control Account by ID with detailed information including storage, billing, and sub-account counts.
Inputs: controlAccountId (required), includeDeletedSubAccounts.
get_control_account_usageARead-only
Get a specific Control Account usage record by utilization ID.
Inputs: utilizationId (required).
get_invoiceARead-only
Get a specific invoice by ID with full billing breakdown including storage, API calls, egress, and ingress costs.
Inputs: invoiceId (required).
get_memberARead-only
Get a specific Sub-Account member by ID with detailed profile, role, and security information.
Inputs: memberId (required).
get_storage_amountsARead-only
Get the list of available storage amount options for Standalone Account sign-up.
Inputs: no named parameters.
get_sub_accountARead-only
Get a specific Sub-Account by ID with detailed information including storage, keys (if requested), and parent account hierarchy.
Inputs: subAccountId (required), includeKeys, includeDeleted.
get_usageARead-only
Get a specific Sub-Account usage record by utilization ID with full daily metrics.
Inputs: utilizationId (required).
list_channel_accountsBRead-only
List all Channel Accounts within your permissions. Channel Accounts provide third-party access to manage Sub-Accounts.
Inputs: id, name, page, size, +4 more.
list_control_account_bucketsARead-only
List bucket-level utilization data for a Control Account. Returns per-bucket storage, egress, ingress, and API call metrics.
Inputs: controlAccountId (required), to, from, name, +5 more.
list_control_accountsARead-only
List all Control Accounts within your permissions. Returns account details including storage allocation, sub-account counts, and billing information.
Inputs: id, name, page, size, +5 more.
list_control_account_usagesARead-only
List aggregate usage data across Control Accounts. Returns daily metrics including storage, egress, ingress, and API calls.
Inputs: to, from, page, size, +5 more.
list_invoicesBRead-only
List invoices for Sub-Accounts within your permissions. Includes storage costs, API call costs, and data transfer costs.
Inputs: id, to, from, page, +8 more.
list_membersARead-only
List all Sub-Account members (Wasabi Console users) within your permissions. Returns user details, roles, and MFA status.
Inputs: id, page, size, status, +2 more.
list_standalone_accountsARead-only
List Standalone Accounts created through the WACM Standalone Account Sign-Up Form. These accounts are not attached to your WACM hierarchy.
Inputs: id, name, page, size, +6 more.
list_sub_account_bucketsARead-only
List bucket-level utilization data for a Sub-Account. Returns per-bucket storage, egress, ingress, and API call metrics.
Inputs: subAccountId (required), to, from, name, +5 more.
list_sub_accountsARead-only
List all Sub-Accounts (Wasabi Console accounts) within your permissions. Returns account details, storage allocation, and parent account information.
Inputs: id, name, page, size, +7 more.
list_usagesBRead-only
List Sub-Account level usage data. Returns daily metrics including storage, egress, ingress, and API calls per Sub-Account.
Inputs: to, from, page, size, +5 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 18 tools
Most tools are clearly separated by resource type (channel/control/sub accounts, members, invoices, usage), and descriptions identify their scope. The main confusion risk is between the two usage families (Sub-Account vs Control Account) and between members and sub-accounts, but naming and descriptions are sufficient to avoid habitual mis-selection.
The set follows a consistent list_<plural>/get_<singular> pattern for most resources. Minor deviations exist: get_storage_amounts is a list-style getter, and the bucket/standalone account areas have list tools without corresponding get tools.
18 tools is slightly above the typical 3-15 range, but the count is justified by distinct WACM entities (accounts, members, usage, invoices, buckets, storage options). There is little redundancy, so the extra breadth is reasonable rather than bloated.
For a read-only WACM data-access surface, the set covers account hierarchy, members, usage, invoices, and bucket utilization well. Notable gaps are the absence of get_standalone_account, no individual bucket retrieval, and no write operations, but agents can work around these with the provided list tools.
Maintenance
Related MCP Connectors
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Hosted SQL Server MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceMCP server for the vTurb Analytics API that exposes 15 tools to query real-time and historical video analytics directly from Claude, with built-in rate limiting and smart player detection.1-
- AlicenseAqualityAmaintenanceMCP server for the BoondManager API, enabling Claude to search, create, and modify records across 36 domains with 158 tools.238176 npm21Apache 2.0

@krovacloud/mcpofficial
AlicenseAqualityBmaintenanceMCP server for interacting with the Krova Cloud API, enabling AI assistants like Claude to manage cloud resources.37MIT- AlicenseAqualityDmaintenanceA local MCP server giving Claude access to Trimble Connect, with 40 tools for projects, folder trees, files, versions, members, groups, and permissions via the Core API v2.40MIT