truenas-ws-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TRUENAS_URL | No | WebSocket URL of your TrueNAS instance | wss://truenas.local/websocket |
| TRUENAS_API_KEY | Yes | API key from TrueNAS (System > API Keys) | |
| TRUENAS_TIMEOUT | No | API call timeout in seconds | 30 |
| TRUENAS_VERIFY_SSL | No | SSL certificate verification | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| system_infoA | Get TrueNAS system information: version, uptime, CPU, RAM, boot time. |
| list_alertsA | List all active TrueNAS alerts with severity levels. |
| list_servicesA | List all services and their running status (SMB, NFS, SSH, etc.). |
| list_jobsA | List recent system jobs with status, progress, and errors. |
| get_audit_logC | Query audit log entries (auth events, config changes). |
| list_cron_jobsA | List all configured cron jobs. |
| get_boot_poolB | Get boot pool health status. |
| list_poolsA | List all storage pools with health, capacity, and fragmentation. |
| get_pool_statusB | Get detailed pool status with VDEV topology and error counts. |
| list_datasetsA | List datasets with usage and quota info. Always specify a pool to avoid timeouts on large systems. |
| get_datasetB | Get detailed info for a specific dataset. |
| create_datasetC | Create a new ZFS dataset. |
| update_datasetC | Update dataset properties (compression, quota, comments, etc.). |
| delete_datasetB | Delete a dataset. Requires confirm=True. |
| list_snapshotsA | List ZFS snapshots. Always specify a dataset to avoid timeouts on large systems. |
| create_snapshotC | Create a manual ZFS snapshot. |
| delete_snapshotA | Delete a snapshot. Requires confirm=True. Snapshot format: dataset@name. |
| rollback_snapshotA | Rollback dataset to snapshot. Requires confirm=True. WARNING: destroys newer data. |
| clone_snapshotC | Clone a snapshot to a new dataset. |
| list_snapshot_tasksA | List automated snapshot task schedules. |
| list_smb_sharesA | List all SMB shares. |
| create_smb_shareC | Create a new SMB share. Path must start with /mnt/. |
| delete_smb_shareA | Delete an SMB share by ID. Requires confirm=True. |
| list_nfs_exportsB | List all NFS exports. |
| create_nfs_exportB | Create a new NFS export. Path must start with /mnt/. |
| delete_nfs_exportA | Delete an NFS export by ID. Requires confirm=True. |
| list_appsA | List all installed apps with their state. |
| get_app_configC | Get the full configuration of a specific app. |
| update_app_configA | Update app configuration. WARNING: This is a REPLACE operation, not a merge. Any config keys not included will revert to defaults. Always get current config first with get_app_config, modify the needed values, and send the complete config. |
| install_appC | Install an app from the catalog. |
| delete_appB | Delete an installed app. Requires confirm=True. |
| start_appC | Start a stopped app. |
| stop_appC | Stop a running app. |
| upgrade_appC | Upgrade an app to the latest available version. |
| redeploy_appC | Redeploy an app with its current configuration. |
| list_available_appsB | Browse the app catalog for available apps to install. |
| list_vmsA | List all virtual machines with their state, CPU, and RAM configuration. |
| start_vmC | Start a virtual machine. |
| stop_vmA | Stop a virtual machine. Attempts graceful shutdown first, forces after timeout. RAM/CPU changes require full stop+start from TrueNAS — in-guest reboot does NOT re-allocate resources. |
| update_vmA | Update VM configuration (RAM, CPUs, etc.). Note: RAM/CPU changes only take effect after a full stop+start from TrueNAS — rebooting from inside the VM does NOT re-allocate resources. |
| list_interfacesA | List network interfaces with IPs and link state. |
| get_network_configA | Get network configuration: DNS servers, gateway, hostname. |
| list_graphsA | List available reporting graphs and their identifiers. Available graphs include: cpu, cputemp, memory, disk, interface, load, uptime, arcsize, disktemp, and more. Some graphs require an identifier (disk name for 'disk'/'disktemp', interface name for 'interface'). |
| get_reporting_dataB | Get historical reporting data for a graph. Units: HOUR (1h), DAY (24h), WEEK, MONTH, YEAR. Some graphs need an identifier (e.g., disk name 'sda' for disk graphs, interface name 'enp5s0' for network graphs). Response format: [{name, identifier, data: [[unix_timestamp, value], ...]}]. Memory/ARC values in bytes, CPU in percentage. |
| list_usersA | List all system users. |
| get_userC | Get details for a specific user. |
| create_userC | Create a new system user. |
| update_userC | Update user properties. |
| delete_userC | Delete a user. Requires confirm=True. |
| list_disksA | List all disks with model, serial number, size, and pool membership. |
| get_disk_tempsA | Get current temperatures for all disks. |
| list_cloud_syncsA | List all cloud sync tasks with their status and schedule. |
| run_cloud_syncC | Trigger a cloud sync task to run immediately. |
| list_replicationsA | List all replication tasks with their status. |
| run_replicationC | Trigger a replication task to run immediately. |
| list_smart_resultsA | List SMART test results for all disks. |
| run_smart_testA | Run a SMART test on specified disks. test_type: SHORT or LONG. Note: TrueNAS 25.10 removed SMART scheduling from the API — these are manual tests only. |
| check_updatesA | Check for available TrueNAS system updates. |
| list_certificatesA | List all SSL/TLS certificates. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 59 tools
Each tool targets a distinct resource and action (e.g., create_dataset vs delete_dataset, list_apps vs list_available_apps). Descriptions clearly differentiate similar tools, and overlaps are minimal and well-explained.
The vast majority use a consistent verb_noun pattern in snake_case (e.g., create_dataset, delete_user). The only minor exception is 'system_info' (noun_noun), but overall the naming is predictable and easy to follow.
With 59 tools, the count is excessively high for an MCP server, far beyond the typical 3-15 range. While TrueNAS is a complex system, many tools could be consolidated (e.g., separate list/get tools could be combined with parameters).
The tool set heavily favors read operations (list/get), but lacks write/update/delete for many key resources such as services, certificates, cron jobs, replication tasks, cloud sync tasks, and network configuration. This leaves significant gaps for full system management.