FFxF
Create and manage VMs, managed databases, firewalls and load balancers in Montréal, Canada.
What it does
FFxF is an MCP server, a connector that lets an AI assistant use it as a tool. It is hosted: an assistant connects to it over the internet, nothing to install.
From the publisher's description, Electra Index matched it to one capability: sql querying. That makes it a candidate for tasks such as query databases in plain language or build data pipelines.
Facts come from the Official MCP Registry, as declared by the publisher. Capabilities are matched automatically (low confidence). None of this is a test of the tool.
At a glance
How to connect
As declared in the Official MCP Registry · hosted endpoint tested by Electra Index 3h ago (live check)Hosted endpoint
https://ffxf.net/mcpstreamable-http
In Claude Code: claude mcp add --transport http ffxf https://ffxf.net/mcp
MCP settings (Claude Desktop, Cursor and other MCP clients)
{
"mcpServers": {
"ffxf": {
"url": "https://ffxf.net/mcp"
}
}
}Live check
Electra Index connected to the hosted endpoint 3h agoONLINE FFxF answered an MCP connection on 28 Oct 2026 and introduced itself as ffxf 1.12.0 (MCP protocol 2025-06-18).
71 tools offered to AI assistants
list_regions· Where machines can run. Public, no key needed.list_plans· Plans with their resources and prices (hourly and monthly, in CAD). Public, no key needed.list_images· Operating systems and ready-to-use application images. The slug is what create_vm expects. Public, no key needed.get_account· Credit balance, hourly burn rate and runway, quota and budget caps. Scope: billing.read.list_vms· The account's machines with their status, addresses and billing. Scope: vms.read.get_vm· One machine: status, IPv4, IPv6 /64, specs, traffic (Internet only, this traffic month: used_gb, limit_gb, period_ends_at), billing, suspension. Scope: vms.read.get_vm_metrics· CPU, memory, disk and network as measured from outside the machine. Scope: vms.read.estimate_vm· Runs every check of create_vm and prices it, without creating anything: would_succeed, hourly rate, monthly price, credit required. Call it before create_vm. Scope: vms.create.create_vm· Orders a machine and spends credit (hourly) or raises an invoice (monthly). Returns the machine and a provisioning action to poll with get_action. Retrying the same order is safe: it is deduplicated for 24 hours. Scope: vms.create.power_vm· start, shutdown (clean ACPI), reboot, or stop (hard power-off). Returns an action to poll with get_action. Scope: vms.action.rename_vm· Changes the hostname, inside the guest and in the console. Scope: vms.action.reinstall_vm· ERASES THE DISK and redeploys another image. Ask the user first. confirm_hostname must be the machine's exact current hostname. Scope: vms.action.
Show 59 more
destroy_vm· DESTROYS the machine and its disk, with no undo and no backup kept. Ask the user first. confirm_hostname must be the machine's exact hostname. Scope: vms.destroy.get_action· Follows an asynchronous action (create, reinstall, power…). Poll until status leaves running; on error it carries the reason. Scope: vms.read.list_vm_actions· History of actions on one machine, from the API and the console. Scope: vms.read.get_vm_network· IPv4 and IPv6 addresses of a machine with their reverse DNS, and its private networks. Scope: vms.read.set_reverse_dns· Sets the PTR record of one of the machine's addresses; null restores the default. Scope: network.write.list_vpcs· The account's private networks with their range, gateway and connected machines, plus the quota. Scope: vms.read.get_vpc· One private network and the machines on it, with their private address. Scope: vms.read.create_vpc· Creates an isolated private network; ready when the call returns. The first usable address (.1) is reserved for the gateway. Scope: network.write.delete_vpc· Deletes an empty private network. Refused while a machine is still on it: disconnect or destroy those first. Ask the user first. Scope: network.write.connect_vpc· Hot-adds a card on the private network and sets its address in the system, without a restart. configuration: manual means the address must be set by hand in the guest. Connecting again returns the same address. Scope: network.write.disconnect_vpc· Removes the machine's private address and card, without a restart. Refused for the only network of a machine with no public address. Scope: network.write.move_vpc· Joins the target network, then leaves this one, so the machine is never cut off. Keeps the same address ending when free. Scope: network.write.list_firewalls· The account's firewalls with their inbound rules and the machines they protect, plus the quota. Scope: vms.read.get_firewall· One firewall: its rules and the machines it protects, with the status of each (applied, pending, error). Scope: vms.read.create_firewall· Creates a reusable set of inbound and outbound rules. Without rules it starts with SSH (TCP 22) and ping open from anywhere; pass rules: [] for none. Nothing is filtered until it is attached to a machine. Scope: network.write.update_firewall· rules REPLACES the whole list and is applied at once to every attached machine: send every rule to keep, not only the new one (read get_firewall first). Removing the SSH rule can lock the agent out. pending_machines counts machines not updadelete_firewall· Deletes a firewall attached to no machine. Refused while it protects one: detach it first. Scope: network.write.attach_firewall· From now on the machine refuses inbound traffic no rule of its firewalls opens; enforced within about ten seconds of the call. Up to 5 firewalls per machine, rules add up. Refused for a machine with no public address. Attaching again is hardetach_firewall· Removes the firewall's rules from the machine; with no other firewall it accepts all inbound traffic again. Scope: network.write.list_load_balancers· The account's load balancers with their addresses, pools, targets and health, listeners and rules, certificates; plus the quota. Scope: vms.read.get_load_balancer· One load balancer in full: status, ipv4/ipv6 to put in DNS, pools with targets (health, sessions, response time), listeners with rules in evaluation order, certificates. Scope: vms.read.get_load_balancer_metrics· Requests by response class, connections, bytes in/out and peak sessions over 1h (1-minute buckets), 24h (15 minutes) or 7d (1 hour), plus totals. Scope: vms.read.create_load_balancer· Orders a load balancer in a private network, billed by the hour from now (the account needs 24 hours of credit), or by the month (7.30 CAD) or the year (73 CAD) with billing. A monthly or yearly period comes out of credit if it covers it; odelete_load_balancer· Deletes the load balancer, its address and its configuration; billing stops. Target machines are not touched. Ask the user first. Scope: vms.destroy.upsert_pool· Without pool: creates one (name required, up to 10). With pool: changes only the fields given. Deleting a pool also removes its targets and the rules leading to it. Scope: network.write.delete_pool· Removes a pool, its targets and the rules leading to it. Scope: network.write.set_targets· REPLACES the pool's targets with exactly this list (up to 25): send every target to keep. Each machine must be in the load balancer's private network (connect_vpc first). drain: true stops new connections to a target before maintenance. Scoupsert_listener· An entry port on the load balancer's address. Without listener: opens one (port and protocol required, up to 5; 22 and 8402 are reserved). https gets certificates for its rules' hostnames; redirect_https makes port 80 redirect to it. A tcpdelete_listener· Closes the port and removes its rules. Scope: network.write.set_rules· REPLACES the http/https listener's rules: each sends a hostname and/or path prefix to an http pool (up to 25). They are evaluated most specific first, whatever the order sent; anything unmatched goes to the default pool. No wildcard hostnamlist_databases· The account's managed databases with their status, private and public addresses, disk, backups and billing (no passwords), plus the quota. Scope: vms.read.get_database_options· What can be ordered: engines and versions, extensions, sizes with their hourly, monthly and yearly prices per region, and the price of disk beyond what a size includes. Call it before create_database and show the price to the user. Scope: vget_database· One database: status, connection (host, private ip, port, defaultdb and ffxfadmin; on Valkey no database and default), public access and sources, disk usage and cap, users with their databases (null: all) and read_only, logical databases anget_database_credentials· Every user with its password, databases and read_only, and its own connection_uri; ready-made connection strings for the admin (private network, and public when open). Treat the result as a secret: give it to the application through an enviget_database_metrics· CPU, memory, connections and commits per minute (commands per minute on Valkey) over 1h (1-minute buckets), 24h (10 minutes) or 7d (1 hour); only buckets with samples. Scope: vms.read.get_slow_queries· The 20 queries with the most total time (pg_stat_statements, values replaced by $1, $2…; performance_schema on MySQL and MariaDB, values replaced by ?): calls, total and mean time, rows. A starting point for indexes. On Valkey, the commandslist_database_backups· Completed backups (weekly full, daily differential; the transaction log is archived continuously) and the restore window: any minute in it can be restored with restore_database. On Valkey, snapshots (rdb) every hour when there were writes,create_database· Orders a managed database (PostgreSQL, MySQL, MariaDB or Valkey) in a private network, billed by the hour from now (the account needs 24 hours of credit), or by the month (730 hours) or the year (ten months) with billing; get_database_optiorestore_database· Creates a NEW database, billed like any other, holding the data as it was at a given minute of the source's restore window (list_database_backups; Valkey: the last snapshot before that minute), with the same users and passwords. The sourcefork_database· Creates a NEW database, billed like any other, whose data is an instant copy of this one (for a test or staging copy), with the same users and passwords. It stays linked to its source for up to 7 days (no backups of its own, the source canndetach_database_fork· Gives a linked fork its own copy of the data; the database is unavailable for about 30 seconds, then its backups start. Scope: vms.action.resize_database· Moves the database to a LARGER size (more vCPU, memory and included disk; see get_database_options): same data, users, names and addresses. It restarts: one to two minutes of downtime, status maintenance meanwhile (resize.to_gb set), then adelete_database· DELETES the database and its data; billing stops. Ask the user first. confirm_name must be the database's exact name. Its backups stay 7 days (restore_database can bring it back meanwhile). Refused while a linked fork depends on it. Scope:update_database· Any of: the name; the weekly maintenance window (day 0 = Sunday, start hour, Montréal time, 2 hours long; minor updates, usually under 2 minutes of downtime); the disk cap (the disk grows by itself at 80 % full, up to the cap; disk beyond wset_database_public_access· Opens the database to the internet at its public host and port (IPv4 and IPv6, TLS and password still required), or closes it. sources restricts who may connect (IPv4/IPv6 addresses or ranges); omitted it is left as is, null or [] means evebackup_database· Starts a differential backup within a minute, e.g. before a risky migration. Not available on a linked fork. Scope: backups.write.create_database_user· Creates a user with a generated password, returned here once (also readable with get_database_credentials); live within seconds. Up to 30 users. It connects only to its databases (every logical database, future ones included, when databasesset_database_user_access· Sets the logical databases a user connects to (databases: a list, or null for all of them, future ones included) and whether it only reads; a field left out keeps its value. Applied within seconds; where its access is removed or lowered, itreset_database_password· Gives the user a new password, returned here; the old one stops working within seconds, so update the application first or right after. Scope: databases.write.delete_database_user· Hands the user's objects to the admin, then drops the user. The admin (ffxfadmin, or default on Valkey) cannot be deleted. Scope: databases.write.create_logical_database· Creates another database inside the managed database (like defaultdb), owned by the admin; up to 30. Not on Valkey (numbered databases, SELECT 0 to 15). Scope: databases.write.delete_logical_database· DROPS the logical database with everything in it (the backups keep it 7 days). Ask the user first. Scope: databases.write.enable_extension· PostgreSQL only. Enables an extension from get_database_options (vector for pgvector, postgis, pg_trgm…) in one logical database; installed on demand, live within a minute. Scope: databases.write.disable_extension· Drops the extension without CASCADE: if objects depend on it, it stays and get_database shows why in warning. Scope: databases.write.get_runners· The runs-on labels with their vCPU, memory and price per minute, the account's concurrency (vCPU of jobs starting or running, and the cap), the linked GitHub organizations and accounts, this month's minutes and cost per repository, the actilist_runner_jobs· Jobs that ran or wait on FFxF runners, most recent first: repository, workflow and job, label, status (queued with waiting_reason credit, budget or account; running; succeeded; failed, stopped_for_credit when the credit ran out; cancelled;list_ssh_keys· SSH keys saved on the account, to pass to create_vm. Scope: sshkeys.write or vms.read.add_ssh_key· Saves a public key on the account so new machines can be reached without a password. Scope: sshkeys.write.delete_ssh_key· Removes a key from the account. Machines already deployed with it keep it; only future deployments change. Scope: sshkeys.write.
What "online" means: the server answered an MCP connection at the time of the check. It is not a guarantee of security, quality or continuous uptime. How we test: we open an MCP session and ask for the tool list, as an AI assistant would. We never run a tool and never send a key. Checked every few days. Method
Is this your server? Monitoring Pro: a check every 30 minutes and an email within the hour when it stops answering. Launch offer: $39.99 once, for life.
Tasks it helps with
Share of each task's required capabilities it covers| Query databases in plain language SQL Querying | 50% |
| Build data pipelines SQL Querying | 33% |
Similar tools
Listed for the same task: query databases in plain language- metabase-ai-assistantREMOTELOCALMCP Server for Metabase - 111 tools for SQL generation, dashboards & PostgreSQL
- Anomaly AIREMOTELOCALAI data analyst: ask about your Excel, CSV, GA4 or database data and get charts and dashboards back
- Tableau Workbook AuditorREMOTELOCALLocal-only Tableau .twbx audit: lineage, unused fields, duplicate calcs, SQL, version diffs
- HotelinkREMOTELOCALRead-only hotel data (OAuth). Guide: https://mcp.hotelink.ai/llms.txt. Verify with list_datasets
- Vitrus analyticsREMOTELOCALRead-only analytics for all your apps: users, AI traffic, revenue, with the SQL behind every number
- garmin-mcpREMOTELOCALGarmin Connect activities, health, training and workouts via a local SQLite cache
Ready-made AI agents
- $25/mo · free plan · Prices & score →
- Wren AI54$179/mo · free plan · Prices & score →
- $36/mo · free plan · Prices & score →
- On quote · Prices & score →
Facts & evidence
Each fact shows where it was seen and when.| Fact | Value | Evidence | Source | Last confirmed |
|---|---|---|---|---|
| Hosted endpoint | https://ffxf.net/mcp | DECLARED | SRC-001 Official MCP Registry | 3h ago |
| Local install (package) | no | DECLARED | SRC-001 Official MCP Registry | 3h ago |
| Remote access (hosted) | yes | DECLARED | SRC-001 Official MCP Registry | 3h ago |
| Website | https://ffxf.net/agents | DECLARED | SRC-001 Official MCP Registry | 3h ago |
| Registry status | active | DECLARED | SRC-001 Official MCP Registry | 3h ago |
| Version | 1.12.0 | DECLARED | SRC-001 Official MCP Registry | 3h ago |
| MCP server | yes | DECLARED | SRC-001 Official MCP Registry | 3h ago |
Change history
- NEW28 Oct 2026first seen in the index
Is this page accurate?
Flag it and our robot re-checks the official source. Reports never change a score.Is FFxF still online?
Free alerts · no accountDo you run FFxF? Know when it stops answering
For publishers · optionalIts hosted endpoint can be monitored. Monitoring Pro connects every 30 minutes like an AI assistant, emails you within the hour when it stops answering, keeps a 90-day availability history and adds your answer rate to your badge.
Monitoring never changes a score or a rank.
Questions about FFxF
How do I connect FFxF?
Use the hosted endpoint https://ffxf.net/mcp in your assistant's MCP settings. The exact settings are in "How to connect" above, as declared in the Official MCP Registry.
What tools does FFxF offer?
When Electra Index connected on 28 Oct 2026, it listed 71 tools: list_regions, list_plans, list_images, get_account, list_vms, get_vm, get_vm_metrics, estimate_vm and more. The full list is in "Live check" above.
Is FFxF online?
Yes. Its hosted endpoint answered an MCP connection from Electra Index 3h ago.
What can I use FFxF for?
Based on its description, it is most relevant to: query databases in plain language, build data pipelines.