Skip to main content
Glama
rstierli

FortiManager MCP Server

by rstierli

trigger_fmg_backup

Start an asynchronous backup of FortiManager configuration to a remote FTP, SCP, SFTP, or TFTP server, then monitor the returned task ID until the file is written.

Instructions

Trigger a FortiManager system backup to a remote server.

Starts an asynchronous backup of the FortiManager's own configuration to an external FTP/SCP/SFTP/TFTP server. This is a FortiManager-itself operation -- it does not touch any managed device. Use wait_for_task() or get_task() (system_tools.py) to monitor completion; once done, the backup file is on the remote server at the given filename.

Args: service: Transfer protocol - "ftp", "scp", "sftp", or "tftp" server: Remote server hostname or IP address filename: Destination path and file name on the remote server (e.g. "tmp/fmg_backup.dat") username: Login username for the remote server (required for ftp/ scp/sftp; optional) userpasswd: Login password for the remote server (optional) port: Remote server port (optional; protocol default used if unset) passwd: Password to encrypt the backup file with (optional; FMG 7.0.11+/7.2.5+/7.4.2+ no longer allow an unencrypted backup)

Returns: dict: Backup result with keys: - status: "success" or "error" - task_id: Task ID for monitoring (if returned) - message: Status or error message

Example: >>> result = await trigger_fmg_backup( ... service="ftp", ... server="10.210.35.207", ... filename="tmp/fmg_backup.dat", ... username="tiger", ... userpasswd="fortinet", ... passwd="fortinet", ... ) >>> if result["status"] == "success": ... await wait_for_task(result["task_id"])

Input Schema

NameRequiredDescriptionDefault
portNo
passwdNo
serverYes
serviceYes
filenameYes
usernameNo
userpasswdNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.12.0

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that the operation is asynchronous, where the artifact lands ('the backup file is on the remote server at the given filename'), and that newer FMG versions reject unencrypted backups. It omits permission requirements, whether an existing remote file is overwritten, and any timeout/size expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: the one-line summary, the scope note, and the monitoring pointer come before the Args block. The structure is easy to scan, though the Returns section partially restates the output schema and the worked example lengthens an otherwise tight definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers everything needed to invoke correctly: async nature, monitoring handoff to wait_for_task/get_task, per-parameter meaning, the encryption constraint, and the destination of the resulting artifact. The output schema handles the return shape, so no further detail is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and it does — all seven parameters are explained, including the enum of valid 'service' values, optionality of username/userpasswd/port, a path format example for filename, and the version-dependent requirement that passwd be set. This adds substantial meaning beyond the bare schema titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Trigger a FortiManager system backup to a remote server') and immediately scopes it: this backs up the FortiManager's own configuration, not a managed device. That distinction cleanly separates it from the many device-oriented siblings in the tool list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the follow-up path ('Use wait_for_task() or get_task() (system_tools.py) to monitor completion') and explicitly excludes the case where a managed device is involved. An agent knows both what to do next and when this is the wrong tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools