About monacloud-mcp
monacloud-mcp is an MCP server for managing MONA Cloud services from AI agents and other MCP clients. It combines app and VPS deployment, databases, domains, VND billing, MONA Pay, and MONA Mail under a MONA Pass account.
Key features
- 01Deploy apps and manage VPS services
- 02Create MongoDB, PostgreSQL, and MySQL databases
- 03Search, buy, and manage domains
- 04Manage wallet, budgets, and billing
- 05Use MONA Pay and MONA Mail tools
- 06Browse MONA Agent templates
Use cases
- 01Deploy a project and attach a domain
- 02Create a database for an application
- 03Accept payments and track incoming transfers
- 04Send email and manage agent inboxes
MCP support
Exposes MONA Cloud deployment, database, domain, billing, payment, mail, and template operations as tools for MCP clients. It supports local stdio use and a hosted Streamable HTTP endpoint.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y monacloud-mcpMONACLOUD_TOKENSecretOptional MONA Pass token (vc_live_* or JWT). Not needed for domain search/reserve; run `monacloud-mcp login` to buy, deploy and pay.MONACLOUD_SANDBOXSet 1 to simulate paid actions (no charge).Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
186Saved tool list · updated 2w ago
This tool takes no parameters.
Details
From the project READMEmonacloud-mcp
MCP server for MONA Cloud: one MONA Pass login and one VND wallet to deploy apps, run VPS, databases and Base projects, manage domains, accept payments with MONA Pay, send email with MONA Mail and browse MONA Agent templates from Claude Code, Codex, Cursor or any MCP client.
Install
Requires Node.js 20 or later.
Sign in once with the OAuth device flow:
npx -y monacloud-mcp login
The command prints a URL on pass.monacloud.vn and a device code. After you confirm, the refresh token is stored in ~/.config/monacloud/token.json (directory mode 0700, file mode 0600). The server refreshes access tokens automatically and never logs them.
npx -y monacloud-mcp whoami # show the signed-in MONA Pass profile
npx -y monacloud-mcp logout # remove stored tokens and linked credentials
Domain search and reservation work without signing in.
Claude Code
claude mcp add monacloud -- npx -y monacloud-mcp
Codex (~/.codex/config.toml)
[mcp_servers.monacloud]
command = "npx"
args = ["-y", "monacloud-mcp"]
Cursor (.cursor/mcp.json)
{
"mcpServers": {
"monacloud": {
"command": "npx",
"args": ["-y", "monacloud-mcp"]
}
}
}
Remote endpoint
A hosted Streamable HTTP endpoint is available at https://mcp.monacloud.vn/mcp. Clients that support remote MCP servers (Claude.ai custom connectors, Cursor, Codex, ChatGPT developer mode) open MONA Pass to sign in on first use. See docs/remote.md.
Quick start
Ask your agent, for example: "Deploy this project to MONA Cloud from the current directory."
A typical run:
cloud_app_detect({ local_dir: "/absolute/path/to/project" }) // offline: stack, port, start command, env names
cloud_app_create({ local_dir: "/absolute/path/to/project", name: "shop", sandbox: true }) // estimate only
// after the user approves the cost
cloud_app_create({ local_dir: "/absolute/path/to/project", name: "shop" })
cloud_app_domain_add({ app_id: "<app_id>", host: "shop.example.vn" }) // returns CNAME instructions
The upload is a ZIP of up to 80 MiB. It respects .gitignore/.dockerignore and excludes .env*, *.pem, .git, node_modules and symlinks. Git repositories can be deployed with repo_url instead of local_dir. Details: docs/local-deploy.md.
If the wallet balance is too low, the agent calls cloud_topup(amount). The response includes qr_ascii (a VietQR code drawn in the terminal), qr_file (PNG), qr_url, bank, account number, amount and transfer note. The user scans it with a banking app and the agent polls cloud_topup_status(topup_id) until it is paid.
Usage
Tool names use snake_case. Most cloud_* tools also have a vibecloud_* alias with the same schema for older prompts. The groups below show representative tools; your MCP client lists the full set.
Apps and deploy
cloud_app_detect,cloud_app_create,cloud_app_deploy,cloud_app_list,cloud_app_get,cloud_app_logs,cloud_app_env_set,cloud_app_domain_add,cloud_app_delete,cloud_app_host_list- VPS and services:
cloud_vps_create(hourly or monthly byplan_code),cloud_services_list,cloud_service_start,cloud_service_stop,cloud_service_rebuild,cloud_job_status - Long jobs wait up to 600 seconds; pass
wait: falseand pollcloud_job_statusif your client has a short timeout.
Databases and Base (beta)
cloud_db_create: MongoDB, PostgreSQL or MySQL.cloud_base_create,cloud_base_list,cloud_base_get,cloud_base_credentials,cloud_base_delete: Base projects (Postgres with API keys and a studio URL) on the same account and wallet as your apps.cloud_base_credentialsreturnsanon_key,service_keyanddb_url; treat them as secrets.
Domains
- Search and price lookup (no login needed):
cloud_domain_search,cloud_domain_suggest,cloud_domain_tlds,cloud_domain_tld_groups - Purchase:
cloud_domain_buy(signed in), orcloud_domain_reserve→cloud_domain_reserve_status→cloud_domain_claimfor users without an account yet;cloud_domain_reserve_releasefrees a hold - Registrant and
.vnverification:cloud_domain_registrant_get,cloud_domain_registrant_set,cloud_domain_verify_start,cloud_domain_verify_status,cloud_domain_wait - Management:
cloud_domain_list,cloud_domain_renew,cloud_domain_dns_list/_add/_update/_delete,cloud_domain_ns_set,cloud_domain_attach(point a domain at an app with SSL),cloud_domain_health,cloud_domain_webhook_set
Wallet and billing
cloud_whoami,cloud_balance,cloud_ledger,cloud_usage,cloud_servicescloud_topup,cloud_topup_status,cloud_credit_redeemcloud_prices,cloud_packages,cloud_plan_list,cloud_subscription_list,cloud_subscription_update,cloud_invoice_list,cloud_invoice_pdf- Spend controls:
cloud_budget_set,cloud_budget_get,cloud_token_limit - Referral:
cloud_affiliate_link,cloud_affiliate_stats,cloud_affiliate_claim
Before a paid compute action the server checks the wallet balance (cloud_service_stop is never blocked). HTTP 402 insufficient_funds and 402 budget_exceeded are returned as JSON with code, message, next_step and request_id so the agent can top up or raise the budget and retry.
MONA Pay
All tools from monapay-mcp are re-exported (dependency ^0.5.5), for example monapay_create_qr, monapay_create_checkout, monapay_link_bank_start, monapay_list_transactions, monapay_create_webhook, monapay_test_webhook and monapay_verify_signature. monapay_link exchanges the MONA Pass session for MONA Pay credentials and caches them in ~/.config/monacloud/links.json.
MONA Mail
mail_* tools use the same MONA Pass session; the Mail account is created on first request.
- Sending:
mail_send(supportssandbox: true),mail_status,mail_list,mail_stats,mail_template_create - Domains:
mail_domain_add,mail_domain_verify,mail_domain_cloudflare,mail_domains_list - API keys for your app:
mail_api_key_create,mail_api_keys_list,mail_api_key_revoke - Webhooks and suppressions:
mail_webhook_create,mail_webhooks_list,mail_webhook_test,mail_suppressions_list,mail_suppression_remove - Agent inboxes:
mail_inbox_create,mail_inbox_list,mail_inbox_messages,mail_inbox_message,mail_inbox_reply,mail_inbox_wait - Account and plans:
mail_account,mail_plans,mail_plan_set
Every POST sends an Idempotency-Key (from idempotency_key or generated). API keys are returned once; write them to the app's .env as MONAMAIL_API_KEY.
MONA Agent templates
agent_templates_list: readsMONACLOUD_TEMPLATES_DIRfirst, then the public mona-agent-templates catalog, then a built-in fallback.agent_templates_get(template): returns the template files (README.md,AGENTS.md,tools.json,deploy.md,CHECKLIST.md, skills).agent_deploy/cloud_agent_deploy: placeholder that currently returnsagent_runtime_pending.
Resources and prompts
monacloud://llms: machine-readable description of the MONA Cloud stack.monacloud://status: aggregated health of MONA Pass, Billing, compute, MONA Pay and MONA Mail.- Prompts:
dung-app-ban-hang-monacloud(VPS, database, payments, webhook, deploy),gui-mail-otp-monamail(OTP email setup),mua-ten-mien-monacloud(domain purchase).
Sandbox
Pass sandbox: true to cloud_vps_create, cloud_db_create, cloud_service_start, cloud_service_rebuild, cloud_app_create, cloud_base_create or cloud_agent_deploy, or set MONACLOUD_SANDBOX=1, to simulate a call. Sandbox skips the balance check, creates no real infrastructure, does not charge the wallet and returns sandbox: true with a cost estimate.
Configuration
| Variable | Default | Purpose |
|---|---|---|
MONACLOUD_TOKEN | MONA Pass access token or PAT; takes precedence over the token store (useful in CI) | |
MONACLOUD_SANDBOX | 1 to run supported compute calls in sandbox mode | |
MONACLOUD_ISSUER | https://pass.monacloud.vn/realms/mona | OIDC issuer |
MONACLOUD_BILLING_URL | https://billing.monacloud.vn | Billing and wallet API |
MONACLOUD_API | https://api.monacloud.vn | Compute API |
MONAPAY_API | https://api.monapay.vn | MONA Pay API |
MONAMAIL_API | https://api.monamail.vn | MONA Mail API |
MONACLOUD_CONSOLE_URL | https://monacloud.vn/console | Console URL returned for human steps |
MONACLOUD_CONFIG_DIR | ~/.config/monacloud | Token and link cache directory |
MONACLOUD_TEMPLATES_DIR | ~/monacloud/templates | Local agent template catalog |
MONACLOUD_TEMPLATES_URL | mona-agent-templates on GitHub | Remote catalog; set to an empty string to disable |
Legacy variables (VIBECLOUD_API, VIBECLOUD_API_URL, VIBECLOUD_API_TOKEN, MONAPAY_CLIENT_ID, MONAPAY_CLIENT_SECRET, MONAPAY_LINK_PATH, VIBECLOUD_LINK_PATH) are still read for compatibility.
Development
npm install
npm run build
npm test
Tests use the Node.js built-in runner, a real stdio MCP transport and local HTTP mocks; they make no Internet calls.
To self-host the remote server, see deploy/remote/README.md.
Website: monacloud.vn.
License
MIT
MONA Cloud MCP is part of MONA Cloud by The MONA Group.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.