ArvanCloud MCP Server
The ArvanCloud MCP Server gives AI agents full control over the ArvanCloud platform and a DevOps toolbox through natural language, exposing 200+ tools across 20 service groups.
ArvanCloud Platform
Compute (Cloud Servers): Create, delete, resize, rebuild servers; power actions (on/off/reboot/rescue); manage images, plans, quotas, SSH keys, tags, and PTR records; attach/detach security groups; wait for server readiness.
Networking: Manage private networks/subnets, security groups and rules (ingress/egress, TCP/UDP/ICMP), floating IPs, port security, and server network attachments.
Block Storage: Create, update, delete, attach, and detach volumes; manage snapshots and storage quotas.
Object Storage (S3-compatible): Bucket operations (create, delete, ACLs, policies, static website hosting); object operations (put, get, copy, delete, list, presigned URLs, sync local directories).
CDN & WAF: Manage domains, caching, cache purge, page rules, firewall/WAF rules, rate-limiting, HTTPS/SSL settings, log forwarders, and Prometheus metric exporters.
DNS: Manage A/CNAME records, toggle cloud/proxy mode, import zones.
VOD & Live Streaming: Full CRUD for channels, videos, audios, subtitles, watermarks, profiles, files, user domains, and live streaming channels/inputs.
Meta Tools:
arvan_request(call any API directly),arvan_capabilities(discover products/endpoints),arvan_doctor(diagnose config/connectivity),arvan_find_tool(search tools by keyword).
Cloud-DevOps Toolbox
SSH: Run commands/scripts, upload/download files, check connection status on remote servers.
Provisioning:
arvan_provision_server— create, wait for, and configure a server (via SSH or cloud-init) in a single call.Kubernetes: Interact with clusters via
kubectl(apply, delete, get) and Helm (install, uninstall).Infrastructure as Code: Terraform validate/format/plan/apply/destroy; linting and security scanning with tflint, checkov, kubeconform, kube-linter, hadolint, yamllint, and trivy.
Security: Secret, vulnerability, SBOM, and SAST scans (gitleaks, trivy, syft, semgrep); audit security groups; grade HTTP headers; generate passwords.
Additional tooling: Git, background tasks, notifications, networking utilities, and observability.
Allows cloning and inspecting Git repositories for IaC validation and deployment.
Allows installing and uninstalling Helm charts on Kubernetes clusters.
Allows managing Kubernetes resources and deploying Helm charts to any cluster.
Allows exporting metrics in Prometheus format for monitoring.
Allows sending notifications to Slack channels.
Allows sending messages via Telegram.
Allows running Terraform commands for infrastructure provisioning and management.
Allows running Trivy scans for vulnerability and security issue detection.
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., "@ArvanCloud MCP Server provision a web server with Ubuntu 22.04"
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.
A Model Context Protocol (MCP) server that gives MCP-compatible clients — Claude Desktop, Claude Code, Cursor, VS Code, Gemini CLI, and any other MCP host — full control of the ArvanCloud platform through natural language, plus a cloud-DevOps toolbox (provisioning, Kubernetes, IaC, security, networking, tasks).
It talks to ArvanCloud's unified API (napi, https://napi.arvancloud.ir)
and exposes both ergonomic, typed tools for the common operations of every
product and a generic escape-hatch tool that can reach any endpoint —
so the whole platform is usable, today and as the API grows.
Independent, community-built integration. Not an official ArvanCloud product.
Covered products
220+ tools across 20 service groups — the whole ArvanCloud platform plus a cloud-DevOps toolbox: provision a server, SSH in, validate IaC, deploy to Kubernetes, scan for security issues, run networking diagnostics, schedule background jobs, and send notifications — with guardrails, metrics, and reusable workflow prompts on top.
ArvanCloud platform:
Service group | Tools cover | API base |
compute | Cloud Servers (Abrak): create/delete, power & maintenance actions, rename/rebuild/resize, |
|
network | Private networks & subnets (CRUD), security groups & rules, floating IPs (incl. delete), port security |
|
storage | Block volumes & snapshots, attach/detach, limits |
|
objectstorage | S3-compatible: buckets, objects (text/binary), copy, presigned URLs, policies/ACLs |
|
cdn | Domains, caching, purge, page rules, firewall/WAF, rate-limit, log forwarders, metric exporters, SSL, apps (CRUD + webhook) |
|
dns | DNS records (A/CNAME helpers), cloud/proxy toggle, zone import, DNSSEC |
|
vod | Channels, videos, audios, subtitles, watermarks, profiles, files, user domain (full CRUD) |
|
live | Live Streaming channels & inputs |
|
DevOps & automation toolbox:
Service group | Tools cover |
ssh | Run commands/scripts, upload/download files, connection checks (asyncssh) |
provision |
|
k8s |
|
iac | Terraform validate/fmt/plan/apply/destroy, tflint, checkov, kubeconform, kube-linter, hadolint, yamllint, trivy |
security | Secret/vuln/SBOM/SAST scans (gitleaks, trivy, syft, semgrep), security-group auditing, HTTP-header grading, password & SSH-keypair generation |
net | DNS, reverse DNS, TCP/port checks, HTTP checks, TLS-cert inspection, ping/traceroute/whois, HTTP load test |
git | Clone & inspect repos (validate/deploy IaC from a repo) |
tasks | Run any tool in the background, on a delay or recurring schedule; poll status; announce completion via webhook |
notify | Send messages to Slack, Telegram, a generic webhook, or email (SMTP) |
observability |
|
common |
|
Guardrails: every tool is annotated readOnlyHint/destructiveHint so clients
can tell safe from dangerous calls. Set ARVAN_READ_ONLY=true to expose only
read tools (and restrict arvan_request to GET), or scope the surface with
ARVAN_TOOLS_ALLOW / ARVAN_TOOLS_DENY (glob lists).
Prompts & resources: reusable prompts (provision_web_server,
audit_security, setup_cdn, deploy_static_site) and live MCP resources
(arvan://regions, arvan://servers/{region}, arvan://domains,
arvan://capabilities).
iam and container (Kubernetes PaaS) are documentation pointers — manage them
via the panel / kubectl / arvan_request.
100% napi coverage: the generic arvan_request tool can call any ArvanCloud
endpoint and arvan_capabilities lists them, so nothing is out of reach even
without a dedicated typed tool. Run arvan_doctor to see what's configured and
which optional CLI tools are installed.
Related MCP server: Liara MCP Server
Architecture
AI agents talk to the server over MCP (stdio locally, or streamable-HTTP when
deployed). The server wraps ArvanCloud's napi for the platform products and
shells out to standard tools (terraform, kubectl, ansible, trivy, …) for the
DevOps toolbox. For many concurrent users it runs stateless behind a load
balancer and scales horizontally:
Every tool call flows through the same guardrails + observability path:
Diagrams are generated with the
diagramslibrary — regenerate withmake diagrams(needs Graphviz).
Requirements
Python 3.10+
An ArvanCloud machine-user access key (create one in the panel under Settings → Machine User / API keys). See the API usage docs.
Install
git clone https://github.com/dwin-gharibi/arvancloud-mcp.git
cd arvan-temp
pip install . # or: pip install -e ".[dev]" for developmentConfigure
All configuration is via environment variables (see .env.example):
Variable | Default | Description |
| — | Required. Machine-user access key. The |
|
| API host (use the |
| — | Default IaaS region, e.g. |
|
| Comma list of tool groups to expose ( |
|
| Per-request timeout (seconds). |
|
| Retries for network errors / |
|
| Exponential backoff base (seconds). |
|
| TLS verification. |
|
|
|
|
| Bind address for HTTP transports. |
| — | Object Storage credentials (separate from the API key). |
|
| S3 region (selects the endpoint) or an explicit endpoint URL. |
|
| Default SSH user for the remote-exec tools. |
| — | Default SSH auth (inline key, key file, or password). |
|
| SSH port, host-key file (off = no verification), connect timeout. |
Run
Local (stdio) — for Claude Desktop / Claude Code
export ARVAN_API_KEY="your-machine-user-key"
export ARVAN_DEFAULT_REGION="ir-thr-c2"
arvancloud-mcp # or: python -m arvancloud_mcpSee Add it to your AI agent below for per-client setup.
Networked (HTTP) — for remote/shared deployments
ARVAN_API_KEY=your-key ARVAN_TRANSPORT=streamable-http ARVAN_HOST=0.0.0.0 \
arvancloud-mcp
# Streamable-HTTP endpoint: http://localhost:8000/mcpDocker
docker build -t arvancloud-mcp .
docker run --rm -p 8000:8000 -e ARVAN_API_KEY=your-key arvancloud-mcpOr with Compose (reads ARVAN_API_KEY from your environment or .env):
ARVAN_API_KEY=your-key docker compose up --buildTo bundle the IaC/security validators (terraform, checkov, hadolint, trivy, …):
docker build --build-arg INSTALL_IAC_TOOLS=true -t arvancloud-mcp:iac .Add it to your AI agent
All of these run the server over stdio. Install it first (pip install arvancloud-mcp)
so the arvancloud-mcp command is on PATH.
Claude Desktop — claude_desktop_config.json:
{
"mcpServers": {
"arvancloud": {
"command": "arvancloud-mcp",
"env": { "ARVAN_API_KEY": "Apikey ...", "ARVAN_DEFAULT_REGION": "ir-thr-c2" }
}
}
}Claude Code (CLI):
claude mcp add arvancloud --env ARVAN_API_KEY="Apikey ..." -- arvancloud-mcpCursor — ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"arvancloud": { "command": "arvancloud-mcp", "env": { "ARVAN_API_KEY": "Apikey ..." } }
}
}VS Code — .vscode/mcp.json:
{
"servers": {
"arvancloud": { "type": "stdio", "command": "arvancloud-mcp", "env": { "ARVAN_API_KEY": "Apikey ..." } }
}
}Gemini CLI — ~/.gemini/settings.json:
{
"mcpServers": {
"arvancloud": {
"command": "arvancloud-mcp",
"env": { "ARVAN_API_KEY": "Apikey ..." },
"timeout": 60000
}
}
}Tip: for a safe, sharable setup, add
"ARVAN_READ_ONLY": "true"toenvso only read tools are exposed, or scope withARVAN_TOOLS_ALLOW/ARVAN_TOOLS_DENY. Remote (HTTP) clients point athttp://<host>:8000/mcpinstead of a command.
Deploy & scale
Production manifests live in deploy/: Kubernetes with an
HPA (deploy/kubernetes, kubectl apply -k), a Helm chart
(deploy/helm/arvancloud-mcp), and Terraform that provisions an ArvanCloud
server running the MCP (deploy/terraform). For many concurrent loads, run the
HTTP transport with ARVAN_STATELESS_HTTP=true ARVAN_JSON_RESPONSE=true and
scale replicas (the HPA does 2→10 on CPU/memory).
CI/CD
GitHub Actions in .github/workflows:
ci.yml— ruff + mypy + pytest (with coverage) + the MCP smoke test, on Python 3.10–3.12.docker.yml— build & push the image to GHCR.security.yml— Trivy filesystem scan.release.yml— on av*tag: build & publish to PyPI, create a GitHub release, and publish to the MCP registry (see Publishing).
Usage examples (what you can ask)
Platform:
"List my cloud servers in ir-thr-c2 and power off the one named staging."
"Create an A record for
wwwonexample.com→1.2.3.4, proxied; enable free SSL.""Add a 50 GB volume and attach it to server
abcd.""Upload
./siteto bucketassetsand host it as a static website.""Purge the CDN cache for
example.comand show the caching settings."
DevOps:
"Provision a 2-CPU Ubuntu server, install Docker, and Slack me when it's ready."
"Validate this Terraform and show the plan; if it's clean, apply it." →
arvan_iac_*:
"Apply
deploy/kubernetesto my cluster with this kubeconfig." →arvan_k8s_apply."Audit my security groups and grade
https://example.comheaders." →arvan_security_*."Load-test
https://example.comwith 200 requests at concurrency 20." →arvan_net_http_load_test."Search the ArvanCloud docs for DNSSEC and summarise the page." →
arvan_docs_*.
Meta:
"What ArvanCloud features can you control?" →
arvan_capabilities."Find the tool for floating IPs." →
arvan_find_tool."Is everything configured?" →
arvan_doctor. "Show tool metrics." →arvan_metrics.
Background jobs & scheduling
Long-running work (provisioning, IaC apply, scans, load tests) can run in the background so the conversation isn't blocked:
arvan_task_submit(tool="arvan_provision_server", arguments={...},
announce_webhook="https://hooks.example.com/done")
# -> returns a task id immediately; poll with arvan_task_status, or get a
# webhook POST when it finishes. Recurring schedules: interval_seconds=3600.Concurrency and history are bounded (ARVAN_TASK_MAX_CONCURRENCY,
ARVAN_TASK_MAX_TASKS); the webhook announcement is replica-independent, so it
works behind a load balancer at scale.
End-to-end: provision a server and configure it
"Spin up a small Ubuntu server in ir-thr-c2, then install nginx on it."
arvan_provision_server does this in one call, or the model can chain:
arvan_list_plans+arvan_list_images→ pick a flavor and Ubuntu image.arvan_create_ssh_key(or reuse) →arvan_create_server(..., ssh_key_name=...).arvan_wait_for_server→ waits until it's active and returns the public IP.arvan_ssh_run_script(host=ip, script="apt-get update && apt-get install -y nginx").
That's the full lifecycle — buy → boot → SSH in → run commands — in one place.
The generic tool
For anything not wrapped explicitly (e.g. Live Streaming, or new endpoints):
arvan_request(method="GET", path="/live/2.0/channels")
arvan_request(method="POST", path="/cdn/4.0/domains/example.com/page-rules",
body={"url": "example.com/*", "actions": {"cache_level": "bypass"}})Discover paths first with arvan_capabilities("cdn"), arvan_capabilities("vod"), etc.
Notes on Object Storage, SSH, IAM & Containers
Object Storage is S3-compatible (
https://s3.<region>.arvanstorage.ir) and uses its own access/secret key. Thearvan_s3_*tools wrap it via boto3 — setARVAN_S3_ACCESS_KEY/ARVAN_S3_SECRET_KEY(+ region/endpoint).SSH tools run real commands on your servers. Host-key verification is off by default (freshly provisioned servers aren't in any known_hosts); set
ARVAN_SSH_KNOWN_HOSTSto enforce it. Treat command execution as privileged — confirm intent before running destructive commands.IAM (machine users, roles) and Cloud Container (Kubernetes PaaS, driven by
kubectl/oc) aren't wrapped as typed tools; manage IAM via the panel orarvan_request, and Containers via the Kubernetes API.
Development & tests
pip install -e ".[dev]"
pytestThe test suite runs fully offline: HTTP is mocked with respx, and the boto3
(Object Storage) and asyncssh (SSH) clients are stubbed. It verifies auth header
normalization, retry/backoff, error handling, region defaulting, request-body
construction (incl. multipart zone import), Object Storage put/get/list,
SSH run/script/upload/download, config parsing, tool registration, and the
generic request path.
Project layout
src/arvancloud_mcp/
config.py # env-driven settings (API, S3, SSH, transport)
client.py # async httpx client: auth, retries, JSON+multipart, errors
catalog.py # machine-readable API catalogue (powers arvan_capabilities)
server.py # FastMCP assembly + transport selection
tools/
common.py # generic request + capabilities
compute.py # servers, actions, images, plans, ssh-keys, tags, wait
network.py # networks, security groups, floating IPs, ports
storage.py # block volumes & snapshots
objectstorage.py # S3 buckets & objects (boto3)
cdn.py # domains, caching, rules, rate-limit, observability
dns.py # records, cloud toggle, zone import, DNSSEC
vod.py / live.py # video on demand / live streaming
ssh.py # run commands & transfer files over SSH (asyncssh)
tests/ # offline tests (respx + mocked boto3/asyncssh)Publishing & marketplaces
The repo is set up to publish itself:
PyPI —
release.ymlbuilds and publishesarvancloud-mcpon av*tag (PyPI Trusted Publishing; no token in the repo). Most MCP marketplaces (Glama, PulseMCP, mcp.so, Smithery) index from PyPI/GitHub automatically.Official MCP Registry —
server.jsonis the registry manifest (io.github.dwin-gharibi/arvancloud-mcp). The release workflow runsmcp-publisher(GitHub OIDC) to publish it; themcp-namemarker is embedded at the top of this README for PyPI validation. See the registry publishing guide.
To cut a release: bump version in pyproject.toml, server.json, and the
badge, then git tag v0.1.0 && git push --tags.
License
MIT — see LICENSE.
Available Tools
232 toolsarvan_account_detailsA
Get the current account/project details for Cloud Server.
Inputs: no named parameters.
arvan_ansible_playbookB
Run an Ansible playbook against a host (requires ansible-playbook).
playbook is the YAML content. Auth/host default to the SSH settings.
Host-key checking is disabled (fresh servers).
Inputs: host (required), playbook (required), ssh_user, private_key, +5 more.
arvan_attach_floating_ipC
Attach a floating IP to a server/port.
Inputs: floating_ip_id (required), region, server_id, subnet_id, +1 more.
arvan_attach_networkB
Attach a network to a server (optionally with a fixed IP).
Inputs: network_id (required), server_id (required), region, ip, +1 more.
arvan_attach_security_group_to_serverC
Attach a security group to a server.
Inputs: server_id (required), security_group_id (required), region.
arvan_attach_tagB
Attach a tag to a resource (e.g. a server).
Inputs: tag_id (required), instance_id (required), instance_type, region.
arvan_attach_volumeB
Attach a volume to a server.
Inputs: volume_id (required), server_id (required), region.
arvan_audit_logARead-only
Return the most recent mutating tool calls (newest last).
Inputs: limit_entries.
arvan_capabilitiesARead-only
Discover ArvanCloud products and their API endpoints.
Call without arguments for a compact overview of every service. Pass a
service key (compute, network, storage, cdn, dns,
vod, live) to get its full endpoint list, including request-body
hints you can feed to arvan_request.
Inputs: service. Returns: object
arvan_create_a_recordC
Convenience: create an A record pointing name at one or more IPs.
Inputs: domain (required), name (required), ips (required), ttl, +1 more.
arvan_create_cdn_appB
Create a CDN app (edge application) for a domain.
Inputs: domain (required), app (required).
arvan_create_cname_recordC
Convenience: create a CNAME record from name to target.
Inputs: domain (required), name (required), target (required), ttl, +1 more.
arvan_create_dns_recordA
Create a DNS record. See module docs for value shapes per type.
Args:
domain: Zone the record belongs to.
type: Record type (a, aaaa, cname, mx, txt, ns, srv, …).
name: Record name/subdomain (@ for the root).
value: Type-specific value (see the shapes in this tool's docs).
ttl: Time-to-live in seconds.
cloud: Whether to proxy the record through ArvanCloud (orange-cloud).
upstream_https: Upstream HTTPS mode when cloud is enabled.
ip_filter_mode: Optional IP-filter/health-check configuration.
Inputs: domain (required), type (required), name (required), value (required), +4 more.
arvan_create_domainA
Add a domain to the CDN / Cloud DNS (the "dns-service" onboarding call).
Args:
domain: The domain name, e.g. example.com.
extra: Additional fields to merge into the request body (e.g. plan).
Inputs: domain (required), extra.
arvan_create_firewall_ruleB
Create a firewall (WAF) rule.
Args:
domain: The CDN domain.
name: Rule name.
action: Action to take, e.g. block, allow, challenge.
filters: Match conditions for the rule.
extra: Additional fields to merge into the request body.
Inputs: domain (required), name (required), action (required), filters (required), +1 more.
arvan_create_floating_ipC
Allocate a new floating (public) IP address.
Inputs: description, region.
arvan_create_log_forwarderCRead-only
Create a log forwarder (ship access logs to an external sink).
Inputs: domain (required), config (required).
arvan_create_metric_exporterC
Create a metric exporter for a domain.
Inputs: domain (required), config (required).
arvan_create_page_ruleC
Create a page rule.
Args:
domain: The CDN domain.
url: URL pattern the rule applies to (e.g. example.com/blog/*).
actions: Map of rule actions, e.g. {"cache_level": "bypass"}.
Inputs: domain (required), url (required), actions (required).
arvan_create_private_networkA
Create a private network (subnet).
Args:
name: Network name.
region: Region code; defaults to ARVAN_DEFAULT_REGION.
subnet_ip: CIDR for the subnet, e.g. 192.168.0.0/24.
subnet_gateway: Gateway IP within the subnet.
enable_gateway: Whether to enable the gateway.
enable_dhcp: Whether DHCP assigns addresses automatically.
dns_servers: Comma-separated DNS servers.
dhcp_start / dhcp_end: Optional DHCP allocation range.
Inputs: name (required), region, subnet_ip, subnet_gateway, +5 more.
arvan_create_ptr_recordA
Create a reverse-DNS (PTR) record mapping an IP to a domain.
Inputs: ip (required), domain (required), region.
arvan_create_rate_limit_ruleC
Create a rate-limit rule.
rule carries the documented fields (e.g. url, method,
count, duration, action).
Inputs: domain (required), rule (required).
arvan_create_security_groupC
Create a security group.
Inputs: name (required), description, region.
arvan_create_security_ruleB
Add a rule to a security group.
Args:
group_id: Target security-group id.
direction: ingress (inbound) or egress (outbound).
protocol: tcp, udp, icmp … (omit for any).
port_from / port_to: Port range (as strings).
ips: Source/destination CIDRs, e.g. ["0.0.0.0/0"].
description: Optional description.
Inputs: group_id (required), direction (required), region, protocol, +4 more.
arvan_create_serverA
Create one or more cloud servers.
Args:
name: Server name (a numeric suffix is added when count > 1).
flavor_id: Plan/flavor id — see arvan_list_plans.
image_id: OS/snapshot image id — see arvan_list_images.
region: Region code; defaults to ARVAN_DEFAULT_REGION.
disk_size: Root disk size in GB.
count: How many identical servers to create.
network_ids: Private network ids to attach.
security_group_names: Security groups to apply.
ssh_key_name: Name of an SSH key to inject (see arvan_list_ssh_keys).
init_script: Cloud-init / startup script.
ha_enabled: Enable high availability.
create_type: Optional create type (e.g. image, snapshot).
extra: Any additional fields to merge into the request body.
Inputs: name (required), flavor_id (required), image_id (required), region, +9 more.
arvan_create_ssh_keyC
Register an SSH public key so it can be injected into servers at create.
Inputs: name (required), public_key (required), region.
arvan_create_tagC
Create a resource tag.
Inputs: name (required), region, color.
arvan_create_volumeB
Create a block-storage volume.
Args: name: Volume name. size: Size in GB. region: Region code; defaults to ARVAN_DEFAULT_REGION. description: Optional description.
Inputs: name (required), size (required), region, description.
arvan_delete_cdn_appCDestructiveIdempotent
Delete a CDN app by id.
Inputs: domain (required), app_id (required).
arvan_delete_dns_recordBDestructiveIdempotent
Delete a DNS record by id.
Inputs: domain (required), record_id (required).
arvan_delete_domainADestructiveIdempotent
Remove a domain from the CDN.
The delete endpoint requires the domain's id. If domain_id is not
supplied it is looked up automatically via the domain details.
Inputs: domain (required), domain_id.
arvan_delete_firewall_ruleCDestructiveIdempotent
Delete a firewall (WAF) rule by id.
Inputs: domain (required), rule_id (required).
arvan_delete_floating_ipCDestructiveIdempotent
Release (delete) a floating IP address by id.
Inputs: floating_ip_id (required), region.
arvan_delete_log_forwarderCRead-only
Delete a log forwarder by id.
Inputs: domain (required), forwarder_id (required).
arvan_delete_page_ruleCDestructiveIdempotent
Delete a page rule by id.
Inputs: domain (required), rule_id (required).
arvan_delete_ptr_recordBDestructiveIdempotent
Delete a reverse-DNS (PTR) record by id.
Inputs: ptr_id (required), region.
arvan_delete_rate_limit_ruleCDestructiveIdempotent
Delete a rate-limit rule by id.
Inputs: domain (required), rule_id (required).
arvan_delete_security_groupCDestructiveIdempotent
Delete a security group by id.
Inputs: group_id (required), region.
arvan_delete_security_ruleADestructiveIdempotent
Delete a security-group rule by id.
Inputs: rule_id (required), region.
arvan_delete_serverBDestructiveIdempotent
Delete a cloud server. Set force_delete_floating_ips to also release IPs.
Inputs: server_id (required), region, force_delete_floating_ips.
arvan_delete_ssh_keyBDestructiveIdempotent
Delete a registered SSH key by name.
Inputs: name (required), region.
arvan_delete_subnetBDestructiveIdempotent
Delete a private-network subnet by id.
Inputs: subnet_id (required), region.
arvan_delete_tagCDestructiveIdempotent
Delete a resource tag by id.
Inputs: tag_id (required), region.
arvan_delete_volumeBDestructiveIdempotent
Delete a block-storage volume by id.
Inputs: volume_id (required), region.
arvan_detach_floating_ipADestructiveIdempotent
Detach a floating IP from the given port.
Inputs: port_id (required), region.
arvan_detach_networkBDestructiveIdempotent
Detach a network from a server.
Inputs: network_id (required), server_id (required), region.
arvan_detach_security_group_from_serverBDestructiveIdempotent
Detach a security group from a server.
Inputs: server_id (required), security_group_id (required), region.
arvan_detach_tagCDestructiveIdempotent
Detach a tag from a resource.
Inputs: tag_id (required), instance_id (required), instance_type, region.
arvan_detach_volumeCDestructiveIdempotent
Detach a volume from a server.
Inputs: volume_id (required), server_id (required), region.
arvan_docs_fetchB
Fetch an ArvanCloud documentation page and return it as plain text.
Only ArvanCloud domains (arvancloud.ir / arvancloud.com) are allowed.
Inputs: url (required), max_chars.
arvan_docs_searchC
Search the curated ArvanCloud documentation index for a query.
Inputs: query (required), limit.
arvan_docs_topicsA
List curated ArvanCloud documentation topics and their URLs.
Inputs: no named parameters.
arvan_doctorARead-only
Diagnose the server's configuration and connectivity.
Checks: whether the API key works (a live call), which optional CLI tools are installed (IaC/security/k8s/git/net), and whether Object Storage and SSH defaults are configured. Run this first to see what's ready to use.
Inputs: no named parameters. Returns: object
arvan_find_toolA
Search this server's own tools by keyword (handy with 200+ tools).
Returns matching tool names and one-line descriptions, ranked by relevance.
Inputs: query (required), limit. Returns: object
arvan_get_caching_settingsBRead-only
Get caching settings for a domain.
Inputs: domain (required).
arvan_get_cdn_appCRead-only
Get a CDN app by id.
Inputs: domain (required), app_id (required).
arvan_get_dns_recordBRead-only
Get a single DNS record by id.
Inputs: domain (required), record_id (required).
arvan_get_dnssecARead-only
Get DNSSEC status (and DS records) for a domain.
Inputs: domain (required).
arvan_get_domainCRead-only
Get details and settings for a CDN domain.
Inputs: domain (required).
arvan_get_quotasBRead-only
Get resource quotas and current usage for a region.
Inputs: region.
arvan_get_serverARead-only
Get details of a single cloud server by id.
Inputs: server_id (required), region.
arvan_get_ssl_settingsBRead-only
Get HTTPS/SSL settings for a domain.
Inputs: domain (required).
arvan_get_subnetBRead-only
Get a private-network subnet by id.
Inputs: subnet_id (required), region.
arvan_get_volumeARead-only
Get a single block-storage volume by id.
Inputs: volume_id (required), region.
arvan_get_volume_limitsBRead-only
Get block-storage volume limits/quota for a region.
Inputs: region.
arvan_git_availableARead-only
Report whether the git binary is installed.
Inputs: no named parameters.
arvan_git_checkoutBRead-only
Check out a branch, tag, or commit.
Inputs: directory (required), ref (required).
arvan_git_cloneA
Clone a repository to dest (defaults to a fresh temp directory).
Returns the checkout path so you can pass it as directory to the IaC
or Kubernetes tools. The path persists for the session.
Inputs: repo_url (required), dest, branch, depth.
arvan_git_diffARead-only
Show the diff of unstaged (or, with staged, staged) changes.
Inputs: directory (required), staged.
arvan_git_list_filesBRead-only
List tracked files in a checkout.
Inputs: directory (required).
arvan_git_logBRead-only
Show recent commits (one line each).
Inputs: directory (required), max_count.
arvan_git_pullB
Pull the latest changes for the current branch.
Inputs: directory (required).
arvan_git_statusARead-only
Show the working-tree status of a checkout (porcelain).
Inputs: directory (required).
arvan_helm_installA
Install/upgrade a Helm chart.
values are passed as --set key=value pairs (flat keys). chart
may be a local path (e.g. deploy/helm/arvancloud-mcp) or a repo chart.
Inputs: release (required), chart (required), namespace, values, +4 more.
arvan_helm_uninstallCDestructiveIdempotent
Uninstall a Helm release.
Inputs: release (required), namespace, kubeconfig, kubeconfig_path.
arvan_iac_available_toolsARead-only
Report which IaC validation tools are installed (and their paths).
Inputs: no named parameters.
arvan_iac_checkovARead-only
Scan IaC for misconfigurations & security issues with Checkov.
framework optionally narrows the scan (e.g. terraform,
kubernetes, dockerfile).
Inputs: files, directory, framework.
arvan_iac_kube_linterCRead-only
Lint Kubernetes manifests for security/correctness with kube-linter.
Inputs: manifest, files, directory.
arvan_iac_lint_dockerfileARead-only
Lint a Dockerfile with hadolint (reads the content from stdin).
Inputs: content (required).
arvan_iac_lint_yamlARead-only
Lint a YAML document with yamllint (reads the content from stdin).
Inputs: content (required).
arvan_iac_opentofu_validateCRead-only
Validate OpenTofu configuration (tofu validate).
Inputs: files, directory, init.
arvan_iac_packer_validateBRead-only
Validate a Packer template (packer validate).
Inputs: files, directory.
arvan_iac_terraform_applyA
Run terraform apply to create/update real ArvanCloud infrastructure.
This changes live infrastructure, so it refuses to run unless
auto_approve=True is passed explicitly.
Inputs: files, directory, auto_approve, init.
arvan_iac_terraform_costC
Estimate Terraform cost with Infracost (infracost breakdown).
Inputs: files, directory.
arvan_iac_terraform_destroyADestructiveIdempotent
Run terraform destroy (tears down infrastructure; needs auto_approve).
Inputs: files, directory, auto_approve.
arvan_iac_terraform_fmtA
Check (or apply, with write=True) Terraform formatting.
Inputs: files, directory, write.
arvan_iac_terraform_initC
Run terraform init (downloads the arvancloud/arvan provider).
Inputs: files, directory.
arvan_iac_terraform_planARead-only
Run terraform plan against the arvancloud/arvan provider.
Use this to preview infrastructure changes before applying. The
configured API key is injected as TF_VAR_api_key/ARVAN_API_KEY.
Inputs: files, directory, init.
arvan_iac_terraform_validateARead-only
Validate Terraform configuration (optionally terraform init first).
init runs terraform init -backend=false so providers resolve;
disable it for an offline syntax-only check.
Inputs: files, directory, init.
arvan_iac_tflintCRead-only
Lint Terraform with tflint (best-practice and provider checks).
Inputs: files, directory.
arvan_iac_tfsecC
Scan Terraform for security issues with tfsec.
Inputs: files, directory.
arvan_iac_trivy_configC
Scan IaC/config for security issues with Trivy (trivy config).
Inputs: files, directory.
arvan_iac_validate_kubernetesBRead-only
Validate Kubernetes manifests against the schema with kubeconform.
Pass a single manifest YAML string, or files/directory.
Inputs: manifest, files, directory.
arvan_import_dns_zoneB
Import DNS records from a BIND-style zone file.
zone is the text content of the zone file; it is uploaded as the
f_zone_file multipart field the API expects.
Inputs: domain (required), zone (required).
arvan_k8s_applyC
kubectl apply a manifest (inline YAML) or a directory of manifests.
Inputs: manifest, directory, kubeconfig, kubeconfig_path, +1 more.
arvan_k8s_available_toolsARead-only
Report whether kubectl and helm are installed.
Inputs: no named parameters.
arvan_k8s_deleteBDestructiveIdempotent
kubectl delete -f a manifest or directory.
Inputs: manifest, directory, kubeconfig, kubeconfig_path, +1 more.
arvan_k8s_getCRead-only
kubectl get resources (e.g. resource='pods'), default JSON output.
Inputs: resource (required), name, namespace, kubeconfig, +2 more.
arvan_kubectlB
Run an arbitrary kubectl command (e.g. ["get","pods","-o","wide"]).
Inputs: args (required), kubeconfig, kubeconfig_path, namespace.
arvan_list_cdn_appsCRead-only
List CDN apps configured for a domain.
Inputs: domain (required).
arvan_list_dns_recordsARead-only
List DNS records for a domain (optionally filter by search/type).
Inputs: domain (required), search, type, page, +1 more.
arvan_list_domainsARead-only
List CDN domains on the account (supports pagination & search).
Inputs: page, per_page, search.
arvan_list_firewall_rulesBRead-only
List firewall (WAF) rules for a domain.
Inputs: domain (required).
arvan_list_floating_ipsARead-only
List floating (public) IP addresses in a region.
Inputs: region.
arvan_list_imagesARead-only
List server images.
Args:
region: Region code; defaults to ARVAN_DEFAULT_REGION.
image_type: Filter by type, e.g. distributions (OS images),
snapshots (your snapshots), or private.
marketplace: Set True to list marketplace app images instead.
Inputs: region, image_type, marketplace.
arvan_list_log_forwardersARead-only
List log-forwarding destinations for a domain.
Inputs: domain (required).
arvan_list_metric_exportersARead-only
List Prometheus-style metric exporters for a domain.
Inputs: domain (required).
arvan_list_networksBRead-only
List networks (public and private) available in a region.
Inputs: region.
arvan_list_page_rulesCRead-only
List page rules for a domain.
Inputs: domain (required).
arvan_list_plansARead-only
List available server plans/flavors (sizes) and their pricing.
Inputs: region.
arvan_list_ptr_recordsARead-only
List reverse-DNS (PTR) records in a region.
Inputs: region.
arvan_list_rate_limit_rulesARead-only
List rate-limit rules for a domain.
Inputs: domain (required).
arvan_list_regionsARead-only
List all ArvanCloud IaaS regions (datacenters) and their codes.
Inputs: no named parameters.
arvan_list_security_groupsBRead-only
List security groups (firewall groups) in a region.
Inputs: region.
arvan_list_serversBRead-only
List cloud servers (VMs) in a region.
Inputs: region.
arvan_list_ssh_keysARead-only
List SSH keys registered in a region (for injecting into new servers).
Inputs: region.
arvan_list_subnetsBRead-only
List private-network subnets in a region.
Inputs: region.
arvan_list_tagsBRead-only
List resource tags in a region.
Inputs: region.
arvan_list_volumesBRead-only
List block-storage volumes in a region.
Inputs: region.
arvan_live_create_channelC
Create a live-streaming channel.
extra carries optional fields such as type (e.g. normal),
archive_enabled, mode and slug.
Inputs: title (required), description, extra.
arvan_live_delete_channelBDestructiveIdempotent
Delete a live channel by id.
Inputs: channel_id (required).
arvan_live_get_channelBRead-only
Get a live channel by id (includes push/pull URLs and stream keys).
Inputs: channel_id (required).
arvan_live_list_channelsCRead-only
List live-streaming channels.
Inputs: page, per_page.
arvan_live_list_inputsBRead-only
List the inputs/streams configured for a live channel.
Inputs: channel_id (required).
arvan_live_update_channelC
Update a live channel with the given fields.
Inputs: channel_id (required), fields (required).
arvan_metricsARead-only
Return server tool-call metrics (calls, errors, latency).
Set prometheus=True for Prometheus text-exposition format.
Inputs: prometheus.
arvan_net_dns_lookupBRead-only
Resolve a DNS record.
Args: name: Hostname to look up. record_type: A, AAAA, CNAME, MX, TXT, NS, SOA, SRV, CAA, PTR … nameserver: Optional resolver IP to query directly (test propagation). timeout: Query timeout in seconds.
Inputs: name (required), record_type, nameserver, timeout.
arvan_net_http_checkCRead-only
Make an HTTP(S) request and report status, timing, and key headers.
Inputs: url (required), method, timeout, follow_redirects.
arvan_net_http_load_testARead-only
Fire a quick concurrent load test and report latency percentiles.
Bounded to 2000 requests and 200 concurrency. Useful for sanity-checking a freshly deployed endpoint, not a substitute for a real load tool.
Inputs: url (required), requests, concurrency, method, +1 more.
arvan_net_my_public_ipARead-only
Return this server's public IP address (via an external echo service).
Inputs: no named parameters.
arvan_net_pingC
ICMP ping a host (requires the system ping binary).
Inputs: host (required), count.
arvan_net_port_scanBRead-only
Scan a list of TCP ports on a host (defaults to common service ports).
Inputs: host (required), ports, timeout.
arvan_net_reverse_dnsARead-only
Reverse-resolve an IP address to a hostname (PTR).
Inputs: ip (required).
arvan_net_tcp_checkARead-only
Check whether a TCP port is open and measure connect latency.
Inputs: host (required), port (required), timeout.
arvan_net_tls_certBRead-only
Inspect the TLS certificate served by a host (issuer, SANs, expiry).
Inputs: host (required), port, timeout.
arvan_net_tracerouteB
Trace the network path to a host (requires traceroute).
Inputs: host (required), max_hops.
arvan_net_whoisC
WHOIS lookup for a domain or IP (requires the whois binary).
Inputs: query (required).
arvan_notify_emailA
Send an email via SMTP.
SMTP settings fall back to ARVAN_SMTP_HOST/PORT/USER/PASSWORD/FROM env vars.
Inputs: to (required), subject (required), body (required), from_addr, +5 more.
arvan_notify_slackA
Post a message to a Slack incoming webhook.
webhook_url falls back to the SLACK_WEBHOOK_URL environment variable.
Inputs: text (required), webhook_url.
arvan_notify_telegramA
Send a Telegram message via a bot.
bot_token/chat_id fall back to TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID.
Inputs: text (required), chat_id, bot_token.
arvan_notify_webhookA
POST a JSON payload (or {"text": ...}) to an arbitrary webhook.
Inputs: url (required), payload, text.
arvan_provision_serverA
Provision a server and (optionally) configure it, in one call.
Supports several configuration methods (combine as needed):
init_script— cloud-init that runs at first boot (no SSH needed).packages/install_docker/setup_script— run over SSH after boot (builds and runs abashscript). For Terraform-based provisioning use thearvan_iac_terraform_*tools; for Kubernetes use thearvan_k8s_*/arvan_helm_*tools.
Steps: register/generate an SSH key, create the server (optionally with
cloud-init), wait for boot, detect its public IP, then SSH in and run the
install script built from packages / install_docker / setup_script.
Args:
name: Server name.
flavor_id: Plan id (see arvan_list_plans).
image_id: Image id (see arvan_list_images).
region: Region; defaults to ARVAN_DEFAULT_REGION.
disk_size: Root disk size (GB).
networks: Network ids to attach (include a public network for SSH).
security_group_names: Security groups to apply.
ssh_public_key: Existing public key to inject. If omitted and
generate_ssh_key is true, a new ed25519 keypair is generated
and the private key is returned (store it securely!).
ssh_key_name: Name to register the key under (default <name>-key).
generate_ssh_key: Generate a keypair when no public key is given.
ssh_user: SSH user for the install step (default ARVAN_SSH_USER/root).
ssh_password: Use password auth for the install step instead of a key.
packages: apt packages to install.
install_docker: Install Docker via get.docker.com.
setup_script: Extra shell commands to run after package install.
wait_timeout: Max seconds to wait for boot + SSH availability.
host_override: Use this IP/host for SSH instead of auto-detection.
Returns a summary with the server details, public IP, SSH info (incl. any generated private key), and install output.
Inputs: name (required), flavor_id (required), image_id (required), region, +14 more.
arvan_purge_cacheADestructiveIdempotent
Purge cached content for a domain.
Pass urls to purge specific paths, or omit to purge everything.
Inputs: domain (required), urls.
arvan_rebuild_serverADestructiveIdempotent
Rebuild a server from an image (destroys current root disk contents).
Inputs: server_id (required), image_id (required), region.
arvan_rename_serverCDestructiveIdempotent
Rename a cloud server.
Inputs: server_id (required), name (required), region.
arvan_requestA
Call any ArvanCloud API endpoint directly (generic escape hatch).
Use this for any operation that does not have a dedicated tool. Discover
available endpoints with arvan_capabilities.
Args:
method: HTTP method.
path: Endpoint path relative to the API base, e.g.
/ecc/v1/regions/ir-thr-c2/servers or /cdn/4.0/domains.
A leading slash is optional.
query: Optional query-string parameters.
body: Optional JSON request body (for POST/PUT/PATCH).
Returns: The decoded JSON response from ArvanCloud.
Inputs: method (required), path (required), query, body.
arvan_resize_serverCDestructiveIdempotent
Change a server's plan/flavor (resize CPU & RAM).
Inputs: server_id (required), flavor_id (required), region.
arvan_resize_server_diskBDestructiveIdempotent
Resize a server's root disk to the given size in GB.
Inputs: server_id (required), size (required), region.
arvan_s3_copy_objectC
Copy an object to another key/bucket.
Inputs: source_bucket (required), source_key (required), dest_bucket (required), dest_key (required).
arvan_s3_create_bucketC
Create a bucket. acl is one of private, public-read, public-read-write.
Inputs: bucket (required), acl.
arvan_s3_delete_bucketBDestructiveIdempotent
Delete an (empty) bucket.
Inputs: bucket (required).
arvan_s3_delete_objectCDestructiveIdempotent
Delete a single object.
Inputs: bucket (required), key (required).
arvan_s3_delete_objectsCDestructiveIdempotent
Delete multiple objects in one call.
Inputs: bucket (required), keys (required).
arvan_s3_enable_static_websiteB
Configure a bucket for static website hosting (optionally make it public).
Inputs: bucket (required), index_document, error_document, make_public.
arvan_s3_generate_presigned_urlA
Generate a presigned URL for temporary access to an object.
operation is get_object (download) or put_object (upload).
Inputs: bucket (required), key (required), operation, expires_in.
arvan_s3_get_bucket_policyBRead-only
Get a bucket's access policy (JSON).
Inputs: bucket (required).
arvan_s3_get_objectARead-only
Download an object. Returns text, or base64 when as_base64 or binary.
Bodies larger than 256 KiB are truncated; use a presigned URL for big files.
Inputs: bucket (required), key (required), as_base64.
arvan_s3_head_objectB
Get an object's metadata (size, type, etag) without downloading it.
Inputs: bucket (required), key (required).
arvan_s3_list_bucketsARead-only
List all Object Storage buckets.
Inputs: no named parameters.
arvan_s3_list_objectsBRead-only
List objects in a bucket (optionally under a prefix).
Inputs: bucket (required), prefix, max_keys, continuation_token.
arvan_s3_put_bucket_policyA
Set a bucket's access policy (an S3 policy document).
Inputs: bucket (required), policy (required).
arvan_s3_put_objectA
Upload an object.
Args:
bucket: Target bucket.
key: Object key (path) within the bucket.
content: The object body. Plain text, or base64 if content_base64.
content_base64: Set True when content is base64-encoded binary.
content_type: Optional MIME type, e.g. application/json.
acl: Optional ACL, e.g. public-read.
Inputs: bucket (required), key (required), content (required), content_base64, +2 more.
arvan_s3_set_bucket_aclA
Set a bucket ACL (private, public-read, public-read-write).
Inputs: bucket (required), acl (required).
arvan_s3_sync_local_dirC
Upload all files under a local directory to a bucket (recursive).
Inputs: bucket (required), local_dir (required), prefix, acl.
arvan_security_audit_security_groupsARead-only
Audit ArvanCloud security groups for risky, world-open ingress rules.
Flags inbound rules open to 0.0.0.0/0 (or ::/0) that expose sensitive ports (SSH, RDP, databases, …) or all ports. Returns findings with a severity so you can tighten them.
Inputs: region.
arvan_security_available_toolsARead-only
Report which security scanners are installed (and their paths).
Inputs: no named parameters.
arvan_security_generate_passwordBRead-only
Generate a cryptographically strong random password.
Inputs: length, include_symbols.
arvan_security_generate_sbomC
Generate a Software Bill of Materials (SBOM) with syft.
Inputs: files, directory, sbom_format.
arvan_security_generate_ssh_keypairARead-only
Generate an SSH keypair (ed25519 or rsa) for provisioning servers.
Returns the OpenSSH private key and the public key. Register the public
key with arvan_create_ssh_key and pass the private key to the
arvan_ssh_* tools.
Inputs: key_type, comment, bits.
arvan_security_grypeC
Scan a container image or a directory for vulnerabilities with grype.
Inputs: image, files, directory.
arvan_security_http_headersC
Check a URL's HTTP security headers and grade them.
Inputs: url (required), timeout_s.
arvan_security_sastC
Static application security testing (SAST) with semgrep.
Inputs: files, directory, config.
arvan_security_scan_imageBRead-only
Scan a container image for vulnerabilities with Trivy (trivy image).
Inputs: image (required).
arvan_security_scan_secretsBRead-only
Scan a directory/files for committed secrets with gitleaks.
Inputs: files, directory.
arvan_security_scan_vulnerabilitiesBRead-only
Scan a filesystem for vulns, secrets and misconfig with Trivy (trivy fs).
Inputs: files, directory.
arvan_server_actionC
Run a power/maintenance action on a server.
Actions: power-on, power-off, reboot, hard-reboot, rescue, unrescue, reset-root-password, add-public-ip, change-public-ip.
Inputs: server_id (required), action (required), region.
arvan_server_optionsCRead-only
Get available options for creating a server in a region.
Inputs: region.
arvan_set_dnssecB
Enable or disable DNSSEC for a domain.
Inputs: domain (required), enabled (required).
arvan_set_port_securityC
Enable or disable port security on a network port.
Inputs: port_id (required), enabled (required), region.
arvan_snapshot_volumeC
Create a snapshot of a volume.
Inputs: volume_id (required), name (required), region, description.
arvan_ssh_check_connectionARead-only
Verify SSH connectivity/auth to a server (useful after provisioning).
Returns whether the connection succeeded and the server's SSH banner.
Inputs: host (required), username, port, private_key, +5 more.
arvan_ssh_download_fileB
Read a file from the server via SFTP (truncated to 256 KiB).
Inputs: host (required), remote_path (required), as_base64, username, +6 more.
arvan_ssh_runA
Run a single command on a server over SSH and return its output.
Args:
host: Server IP or hostname (e.g. a freshly created server's public IP).
command: The shell command to execute.
username: SSH user (defaults to ARVAN_SSH_USER, typically root).
port: SSH port (default 22).
private_key: Inline PEM private key (overrides the configured default).
key_file: Path to a private key file.
password: Password auth (if not using a key).
passphrase: Passphrase for an encrypted private key.
known_hosts: Path to a known_hosts file; omit to skip host-key checks.
connect_timeout: Seconds to wait for the connection.
command_timeout: Seconds to wait for the command to finish.
Returns:
{exit_status, stdout, stderr, host}.
Inputs: host (required), command (required), username, port, +7 more.
arvan_ssh_run_scriptB
Run a multi-line script on a server over SSH (piped to bash -s).
Use this for setup/bootstrap scripts. interpreter can be changed to,
e.g., sh -s or python3 -.
Inputs: host (required), script (required), username, port, +8 more.
arvan_ssh_upload_fileB
Write content to a file on the server via SFTP.
content is plain text, or base64 when content_base64 is set.
Inputs: host (required), remote_path (required), content (required), content_base64, +7 more.
arvan_task_cancelC
Cancel a scheduled/running background task.
Inputs: task_id (required).
arvan_task_listARead-only
List background tasks and their status (most recent first).
Inputs: no named parameters.
arvan_task_statusBRead-only
Get a background task's full status, last result, and run history.
Inputs: task_id (required).
arvan_task_submitA
Run another tool in the background, now/later/recurring.
Args:
tool: Name of the tool to run (e.g. arvan_provision_server,
arvan_net_http_load_test, arvan_security_scan_vulnerabilities).
arguments: Arguments for that tool.
delay_seconds: Wait this long before the first run.
interval_seconds: If set, re-run every N seconds (min 1) — a schedule.
max_runs: Stop after this many runs (default 1; unlimited when an
interval is set and this is omitted — cancel to stop).
name: Friendly label for the task.
announce_webhook: POST a status payload here when each run finishes
(falls back to ARVAN_TASK_WEBHOOK). Use this for completion
notifications that work even across replicas / after disconnect.
Returns the task record (with its id) immediately; poll with
arvan_task_status or wait for the webhook.
Inputs: tool (required), arguments, delay_seconds, interval_seconds, +3 more.
arvan_toggle_dns_cloudC
Enable or disable cloud (proxy) for a DNS record.
Inputs: domain (required), record_id (required), cloud (required).
arvan_trigger_cdn_app_webhookC
Trigger a CDN app's webhook action.
Inputs: domain (required), app_id (required).
arvan_update_caching_settingsA
Update caching settings for a domain.
settings accepts the caching fields documented by ArvanCloud, e.g.
{"cache_status": "enable", "cache_page_200": "..."}.
Inputs: domain (required), settings (required).
arvan_update_cdn_appC
Update a CDN app with the given fields.
Inputs: domain (required), app_id (required), fields (required).
arvan_update_dns_recordA
Update a DNS record (full replace).
record should contain the same fields as creation
(type, name, value, ttl, cloud …).
Inputs: domain (required), record_id (required), record (required).
arvan_update_ssl_settingsA
Update HTTPS/SSL settings for a domain.
Pass ssl_type (default for free Let's Encrypt, manual for an
uploaded certificate, off to disable) and/or a full settings body.
Inputs: domain (required), ssl_type, settings.
arvan_update_subnetB
Update a subnet (e.g. dns_servers, enable_dhcp, subnet_gateway).
Inputs: subnet_id (required), fields (required), region.
arvan_update_volumeB
Update a volume's name and/or description.
Inputs: volume_id (required), region, name, description.
arvan_vod_create_audioC
Create an audio item in a channel.
Inputs: channel_id (required), fields (required).
arvan_vod_create_channelC
Create a VOD channel.
Inputs: title (required), description, extra.
arvan_vod_create_domainC
Create/set the VOD user domain.
Inputs: fields (required).
arvan_vod_create_profileC
Create an encoding profile in a channel.
Inputs: channel_id (required), fields (required).
arvan_vod_create_subtitleB
Create a subtitle for a video (e.g. {"lang": "fa", "file_id": "..."}).
Inputs: video_id (required), fields (required).
arvan_vod_create_videoB
Create a video in a channel.
fields typically includes title, description and a
file_id previously obtained by uploading to the channel's files
endpoint, plus optional convert_mode, watermark_id etc.
Inputs: channel_id (required), fields (required).
arvan_vod_create_watermarkC
Create a watermark in a channel (e.g. {"title":..., "file_id":...}).
Inputs: channel_id (required), fields (required).
arvan_vod_delete_audioBDestructiveIdempotent
Delete an audio item by id.
Inputs: audio_id (required).
arvan_vod_delete_channelBDestructiveIdempotent
Delete a VOD channel by id.
Inputs: channel_id (required).
arvan_vod_delete_fileCDestructiveIdempotent
Delete an uploaded source file by id.
Inputs: file_id (required).
arvan_vod_delete_profileBDestructiveIdempotent
Delete an encoding profile by id.
Inputs: profile_id (required).
arvan_vod_delete_subtitleBDestructiveIdempotent
Delete a subtitle by id.
Inputs: subtitle_id (required).
arvan_vod_delete_videoCDestructiveIdempotent
Delete a VOD video by id.
Inputs: video_id (required).
arvan_vod_delete_watermarkBDestructiveIdempotent
Delete a watermark by id.
Inputs: watermark_id (required).
arvan_vod_get_audioCRead-only
Get an audio item by id.
Inputs: audio_id (required).
arvan_vod_get_channelCRead-only
Get a VOD channel by id.
Inputs: channel_id (required).
arvan_vod_get_domainARead-only
Get the VOD user domain (the delivery domain for this account).
Inputs: no named parameters.
arvan_vod_get_fileBRead-only
Get an uploaded source file by id.
Inputs: file_id (required).
arvan_vod_get_profileCRead-only
Get an encoding profile by id.
Inputs: profile_id (required).
arvan_vod_get_subtitleCRead-only
Get a subtitle by id.
Inputs: subtitle_id (required).
arvan_vod_get_videoCRead-only
Get a VOD video by id.
Inputs: video_id (required).
arvan_vod_get_watermarkBRead-only
Get a watermark by id.
Inputs: watermark_id (required).
arvan_vod_list_audiosCRead-only
List audio tracks in a channel.
Inputs: channel_id (required).
arvan_vod_list_channelsCRead-only
List VOD channels.
Inputs: page, per_page.
arvan_vod_list_filesBRead-only
List uploaded source files in a channel.
Inputs: channel_id (required).
arvan_vod_list_profilesBRead-only
List encoding profiles in a channel.
Inputs: channel_id (required).
arvan_vod_list_subtitlesCRead-only
List subtitles for a video.
Inputs: video_id (required).
arvan_vod_list_videosCRead-only
List videos in a channel.
Inputs: channel_id (required), page, per_page.
arvan_vod_list_watermarksCRead-only
List watermarks in a channel.
Inputs: channel_id (required).
arvan_vod_update_audioC
Update an audio item with the given fields.
Inputs: audio_id (required), fields (required).
arvan_vod_update_channelB
Update a VOD channel with the given fields.
Inputs: channel_id (required), fields (required).
arvan_vod_update_profileC
Update an encoding profile with the given fields.
Inputs: profile_id (required), fields (required).
arvan_vod_update_videoC
Update a VOD video with the given fields.
Inputs: video_id (required), fields (required).
arvan_vod_update_watermarkC
Update a watermark with the given fields.
Inputs: watermark_id (required), fields (required).
arvan_wait_for_serverARead-only
Poll a server until it becomes active (or the timeout elapses).
Handy right after arvan_create_server and before SSHing in. Returns
the latest server details plus ready/timed_out flags. The wait is
bounded to 30 minutes regardless of timeout.
Inputs: server_id (required), region, timeout, interval.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 232 tools
Each tool targets a distinct resource and action, with clear naming prefixes (e.g., arvan_create_server vs arvan_create_dns_record). Despite the large number, the consistent verb_noun pattern and service-specific prefixes make overlapping purposes unlikely.
All tools follow the arvan_<verb>_<resource> pattern, with consistent verbs (create, list, get, delete, update, etc.) and predictable resource names. Even sub-services like arvan_vod_* and arvan_s3_* adhere to the same convention.
232 tools is excessively high for a single server, covering disparate domains (compute, DNS, CDN, S3, VOD, live, security, IaC, git, k8s, notifications). This broad scope would be better served by multiple specialized servers.
For the intended scope of managing ArvanCloud services, the tool surface is remarkably complete, offering CRUD operations and additional actions for most resources. Minor gaps exist (e.g., missing VOD update for some entities), but the generic arvan_request escape hatch covers any omitted endpoints.
Maintenance
Related MCP Connectors
Your AI Agent's Infrastructure Layer. Connect Claude, Copilot, Codex, or ChatGPT to 200+ managed open source services. Start databases, pipelines, and applications through natural language.
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Unified API to query AWS, GCP, Azure and generate Terraform/CLI execution kits for AI agents.
Manage American Cloud VMs, Kubernetes, databases, storage, networks and DNS from your AI assistant.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI assistants to manage multi-cloud resources (AWS, Azure, GCP) including resource operations, cost analysis, monitoring metrics, and security compliance checks through natural language commands.2613 npm2MIT
- AlicenseCqualityDmaintenanceEnables AI assistants to deploy and manage applications, databases, object storage, VMs, DNS, and infrastructure on the Liara cloud platform through natural language commands.10061 npm7MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI agents with natural language control over AWS, Azure, GCP, and Alibaba Cloud infrastructure through dynamic API discovery and execution. Supports 51,900+ cloud operations and includes OpenTofu integration for complete infrastructure lifecycle management.3MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform DevOps tasks including Kubernetes management, cloud provider operations, CI/CD, security scanning, and infrastructure monitoring through natural language.MIT