TrueNAS MCP
Provides tools to manage TrueNAS instances, including disks, pools, apps, VMs, shares, and more.
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., "@TrueNAS MCP Show me the health of my storage pools"
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.
TrueNAS MCP
An MCP server that turns your TrueNAS (SCALE) instance into tools. Manage pools,
disks, datasets, apps, VMs and more from any MCP client. Built on FastMCP and the
official truenas_api_client websocket library.
Authenticated with a TrueNAS API key over a persistent websocket connection.
Targets TrueNAS 25.10 (pin: TS-25.10.3).
Run with Docker
You need a TrueNAS instance and an API key (Account Settings > API Keys).
docker build -t truenas-mcp .
docker run -e TRUENAS_URI=wss://truenas.example.com/api/current \
-e TRUENAS_API_KEY=your-key \
truenas-mcpRelated MCP server: truenas-ws-mcp
Settings
name | default | notes |
| - | required, ws:// or wss:// websocket URL, e.g. |
| - | required, from TrueNAS API Keys |
| true | set false only over plain |
| INFO |
Values can come from a .env file in the working directory. API-key auth uses
auth.login_with_api_key over the persistent connection (TrueNAS 25.10 SCRAM -
no username needed).
Serve over HTTP
By default the server talks stdio (one process per client). To expose it as an HTTP MCP endpoint behind a gateway (e.g. LiteLLM), set the FastMCP transport env vars - no code change required:
env | default |
|
|
|
|
|
|
|
|
Example - serve streamable-http on all interfaces:
FASTMCP_TRANSPORT=streamable-http FASTMCP_HOST=0.0.0.0 FASTMCP_PORT=8000 \
truenas-mcpTools
system_info, list_pools, list_disks, list_datasets, list_apps,
list_vms, truenas_call (generic middleware escape hatch).
License
MIT
Available Tools
29 toolscreate_datasetCreate DatasetC
Create a ZFS dataset.
Inputs: name (required), dry_run. Returns: result
create_snapshotCreate SnapshotC
Create a ZFS snapshot.
Inputs: dataset (required), name, dry_run. Returns: result
delete_appDelete AppC
Delete an installed app.
Inputs: app_name (required), dry_run, remove_images. Returns: result
delete_datasetDelete DatasetC
Delete a ZFS dataset.
Inputs: name (required), dry_run, recursive. Returns: result
delete_snapshotDelete SnapshotC
Delete a ZFS snapshot.
Inputs: name (required), dry_run. Returns: result
dismiss_alertDismiss AlertC
Dismiss a TrueNAS alert.
Inputs: alert_id (required). Returns: result
get_scrub_statusGet Scrub StatusB
Get ZFS pool scrub status/schedules.
Inputs: pool_name. Returns: result
install_appInstall AppC
Install an app from the TrueNAS catalog.
Inputs: values (required), app_name (required), catalog_app (required), train, +2 more. Returns: result
list_alertsList AlertsB
List TrueNAS system alerts.
Inputs: no named parameters. Returns: result
list_appsList AppsA
List installed applications (k3s apps) with state and version.
Inputs: no named parameters. Returns: result
list_boot_environmentsList Boot EnvironmentsA
List boot environments (active, activated, kernel/initramfs).
Inputs: no named parameters. Returns: result
list_datasetsList DatasetsB
List ZFS datasets (name, mountpoint, used/available, quotas).
Inputs: path. Returns: result
list_disksList DisksA
List disks and their health fields (model, serial, size, SMART status).
Inputs: serial. Returns: result
list_jobsList JobsB
List middleware jobs (long-running operations).
Inputs: state. Returns: result
list_poolsList PoolsB
List storage pools and their ZFS status (health, capacity, topology).
Inputs: name. Returns: result
list_snapshotsList SnapshotsC
List ZFS snapshots.
Inputs: dataset. Returns: result
list_vmsList VmsB
List virtual machines with their current status.
Inputs: no named parameters. Returns: result
restore_alertRestore AlertB
Restore a dismissed TrueNAS alert.
Inputs: alert_id (required). Returns: result
run_scrubRun ScrubC
Run a ZFS scrub on a pool.
Inputs: pool_name (required), dry_run. Returns: result
search_app_catalogSearch App CatalogC
Search the TrueNAS app catalog for available apps.
Inputs: train, catalog_app. Returns: result
start_appStart AppB
Start an installed app. Long-running (may take seconds).
Inputs: app_name (required). Returns: result
stop_appStop AppA
Stop an installed app. Long-running (may take seconds).
Inputs: app_name (required). Returns: result
system_infoSystem InfoA
Get TrueNAS system information (version, hostname, uptime, CPU, memory).
Returns: JSON string with system.info fields.
Inputs: no named parameters. Returns: result
truenas_callTruenas CallC
Call any TrueNAS middleware endpoint directly.
Inputs: method (required), params. Returns: result
update_appUpdate AppC
Update an installed app's configuration.
Inputs: values (required), app_name (required), dry_run. Returns: result
upgrade_appUpgrade AppC
Upgrade an installed app to the latest version.
Inputs: app_name (required), dry_run. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 29 tools
Most tools target clearly distinct resources and actions, especially the list/create/delete families for datasets, snapshots, and shares. Minor ambiguity exists between update_app and upgrade_app, and truenas_call overlaps with every specific tool as a generic escape hatch.
Almost all tools use consistent snake_case verb_noun naming, such as list_pools, create_dataset, and delete_share. The few deviations are system_info (noun-first) and truenas_call (noun_verb), but the overall pattern remains predictable.
TrueNAS is a broad administration domain, so many tools are justified, but 29 tools is on the heavy side and includes both granular wrappers and a generic truenas_call fallback. The set is useful but close to feeling over-expanded.
Core areas like datasets, snapshots, shares, apps, alerts, and scrubs are well covered, but VM support is list-only and there are no update operations for datasets or shares. The generic truenas_call endpoint can fill gaps, though not as cleanly as dedicated tools.
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
MCP server that lets your AI assistant build and deploy apps, hosting each one at a live URL.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables Claude Desktop and other MCP clients to interact with TrueNAS Core systems through the TrueNAS API, supporting user management, storage operations, sharing, and snapshot creation.2034MIT
- AlicenseBqualityDmaintenanceMCP server for TrueNAS Scale that enables AI assistants to manage storage pools, datasets, apps, VMs, snapshots, and more via the native WebSocket API.5929 PyPIMIT
- AlicenseAqualityBmaintenanceAI-powered MCP server for TrueNAS SCALE storage operations with governance and safety features, enabling management of pools, datasets, snapshots, disks, alerts, and services.251MIT
- AlicenseAqualityBmaintenanceAn MCP server for TrueNAS that lets users manage ZFS pools, datasets, shares, snapshots, VMs, alerts, and network configuration through natural language, using a single hierarchical tool exposing 278 actions.125 npm1MIT