truenas-mcp (spranab/truenas-mcp) is an MCP server listed on the M8ven Trust Index. It scores 60 out of 100, grade C. It declares 279 tools. No publisher has claimed this listing.
Provides comprehensive management of TrueNAS SCALE instances through 278 actions across 18 categories using a token-efficient hierarchical tool design. Users can perform tasks like storage management, service configuration, and system monitoring while benefiting from built-in safety confirmations and read-only dashboard resources.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
spranab
Source: Glama
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
truenasManage your TrueNAS SCALE system. 278 actions organized in categories. Usage: - No args or category="help" → list all categories - category only → list available actions in that category with parameters - category + action → execute (pass action-specific params in 'params') Categories: syste…
alert_listList all active alerts on the TrueNAS system. Shows alert level, message, source, and dismissal status.
alert_dismissDismiss an alert by its UUID. Dismissed alerts no longer appear as active but can be restored.
alert_restoreRestore a previously dismissed alert by its UUID, making it active again.
alert_categoriesList all available alert categories. Useful for understanding the types of alerts the system can generate.
alert_policiesList all available alert policies. Policies define how alerts are escalated and delivered.
alertservice_listList all configured alert notification services (e.g. email, Slack, PagerDuty). Shows their type, enabled status, and alert level.
alertservice_createCreate a new alert notification service. Configures how and where alerts are delivered.
alertservice_updateUpdate an existing alert notification service by its ID. All fields are optional — only provide the ones to change.
alertservice_deleteDelete an alert notification service by its ID. Use alertservice_list to find the ID.
alertservice_testSend a test notification through an alert service to verify it is configured correctly.
certificate_listList all certificates on the system, including self-signed, imported, CSR, and ACME certificates.
certificate_getGet a specific certificate by its numeric ID. Returns full certificate details including the PEM content.
certificate_createCreate a new certificate. Supports internal (self-signed), CSR, imported, and ACME certificate types. Only name and create_type are required; other fields depend on the create_type.
certificate_deleteDelete a certificate by its ID. This is a DESTRUCTIVE operation — the 'confirm' parameter must be true to proceed. Optionally force deletion even if the certificate is in use.
certificate_acme_serversList available ACME server choices (e.g. Let's Encrypt production/staging). Use when configuring ACME certificates.
acme_dns_authenticator_listList all configured ACME DNS authenticators. These are used for DNS-01 challenge validation when issuing ACME certificates.
acme_dns_authenticator_createCreate a new ACME DNS authenticator for DNS-01 challenge validation. The attributes depend on the authenticator type (e.g. Cloudflare, Route53).
acme_dns_authenticator_deleteDelete an ACME DNS authenticator by its ID.
update_checkCheck for available system updates. Returns information about pending updates and the current train.
update_configGet the current update configuration, including the active update train.
update_config_setSet the update configuration. Currently supports changing the update train.
update_downloadDownload pending system updates. This starts the download process; the system is not updated until update_apply is called.
update_applyApply previously downloaded system updates. This is a DESTRUCTIVE operation that may reboot the system. The 'confirm' parameter must be true to proceed.
bootenv_listList all boot environments. Shows name, active status, creation date, size, and keep flag.
bootenv_createCreate a new boot environment by cloning an existing one. Useful for creating a restore point before updates.
bootenv_activateActivate a boot environment so it will be used on next boot.
bootenv_deleteDelete a boot environment. This is a DESTRUCTIVE operation — the 'confirm' parameter must be true to proceed. Cannot delete the currently active boot environment.
bootenv_keepSet or clear the 'keep' flag on a boot environment. Boot environments with keep=true are protected from automatic pruning.
boot_stateGet the current state of the boot pool, including disk layout, health status, and capacity.
boot_attach_diskAttach a disk to the boot pool to create or extend a mirror. This is a DESTRUCTIVE operation that will erase the target disk. The 'confirm' parameter must be true to proceed.
boot_detach_diskDetach a disk from the boot pool mirror. This is a DESTRUCTIVE operation — the 'confirm' parameter must be true to proceed.
boot_scrubStart a scrub of the boot pool to check for and repair data integrity issues.
filesystem_statGet file or directory info including permissions, size, owner, and timestamps. Provide the full path on the TrueNAS system.
filesystem_listdirList contents of a directory. Returns files and subdirectories with metadata. Supports pagination via limit and offset.
filesystem_mkdirCreate a new directory at the specified path. Optionally set the UNIX mode (permissions).
filesystem_set_permissionsSet UNIX permissions on a file or directory. Can optionally apply recursively and strip existing ACLs.
filesystem_get_aclGet the Access Control List (ACL) for a file or directory path. Optionally return a simplified representation.
filesystem_set_aclSet the Access Control List (ACL) for a file or directory. This is a powerful operation — the 'confirm' parameter must be true to proceed.
filesystem_chownChange ownership of a file or directory. Can optionally apply recursively.
reporting_configGet the current reporting/metrics configuration.
reporting_graphsList all available reporting graphs (CPU, memory, disk, network, etc.). Use the graph names with reporting_get_data to fetch time-series data.
reporting_get_dataGet time-series reporting data for one or more graphs (CPU, memory, disk, network, etc.). Use reporting_graphs first to discover available graph names and identifiers.
directory_services_configGet directory services configuration (Active Directory / LDAP).
directory_services_updateUpdate directory services configuration. Fields depend on whether Active Directory or LDAP is configured. Pass only the fields you want to change.
directory_services_statusGet current directory services status including connection state and health.
directory_services_leaveLeave the current Active Directory or LDAP domain. This is a DESTRUCTIVE operation — 'confirm' must be true to proceed. Requires domain credentials.
directory_services_cache_refreshRefresh the directory services cache. Forces re-read of users and groups from the directory server.
kerberos_configGet Kerberos configuration settings.
kerberos_realm_listList all configured Kerberos realms.
kerberos_keytab_listList all configured Kerberos keytabs.
tunable_listList all system tunables (sysctl, loader, and rc variables).
tunable_createCreate a new system tunable. Tunables allow setting sysctl, loader, or rc variables.
tunable_updateUpdate an existing tunable by its ID. Use tunable_list to find the ID. All fields are optional — only provide the ones to change.
tunable_deleteDelete a tunable by its ID. Use tunable_list to find the ID.
ssh_configGet the current SSH service configuration.
ssh_config_updateUpdate SSH service configuration. All fields are optional — only provide the ones you want to change. Restart the SSH service after changes.
ftp_configGet the current FTP service configuration.
ftp_config_updateUpdate FTP service configuration. All fields are optional — only provide the ones you want to change. Restart the FTP service after changes.
snmp_configGet the current SNMP service configuration.
snmp_config_updateUpdate SNMP service configuration. All fields are optional — only provide the ones you want to change.
ups_configGet the current UPS service configuration.
ups_config_updateUpdate UPS service configuration. All fields are optional — only provide the ones you want to change.
privilege_listList all privileges/roles configured on the system.
privilege_createCreate a new privilege/role with specific permissions and group bindings.
privilege_updateUpdate an existing privilege/role by its ID. Use privilege_list to find the ID. All fields are optional.
privilege_deleteDelete a privilege/role by its ID. Use privilege_list to find the ID.
audit_queryQuery the TrueNAS audit log. Supports filtering by services and applying query filters and options.
audit_configGet the current audit configuration including retention and quota settings.
audit_config_updateUpdate audit configuration. All fields are optional — only provide the ones you want to change.
truenas_api_callMake a raw API call to any TrueNAS endpoint not covered by specific tools. This is an escape hatch for advanced or uncommon operations. The body parameter accepts a JSON string that will be parsed before sending.
network_interface_listList all network interfaces on the TrueNAS system, including physical NICs, VLANs, bridges, and bond/LAGG interfaces.
network_interface_getGet details of a specific network interface by its ID (e.g. 'em0', 'br0', 'bond0').
network_interface_createCreate a new network interface (VLAN, bridge, or bond/LAGG). Network changes are staged until committed with network_commit_changes.
network_interface_updateUpdate an existing network interface. All fields are optional — only provide the ones you want to change. Network changes are staged until committed with network_commit_changes.
network_interface_deleteDelete a network interface. This is a DESTRUCTIVE operation — the 'confirm' parameter must be set to true to proceed. Network changes are staged until committed.
network_configGet the global network configuration including hostname, domain, gateways, nameservers, and proxy settings.
network_config_updateUpdate global network configuration. All fields are optional — only provide the ones you want to change.
network_summaryGet a summary of the network configuration including all interfaces, IPs, default routes, and nameservers.
network_static_route_listList all configured static routes.
network_static_route_createCreate a new static route.
network_static_route_deleteDelete a static route by its numeric ID. Use network_static_route_list to find the ID.
network_ipmi_infoGet IPMI chassis information if IPMI is available on this system. First checks whether IPMI hardware is present.
network_commit_changesCommit pending network interface changes. Network changes are staged and must be committed to take effect. Use checkin_timeout to set a rollback timer — if you do not check in (network_checkin) within that time, changes are automatically rolled back.
network_rollback_changesRollback all pending (uncommitted) network interface changes, restoring the previous network configuration.
network_checkinCheck in after committing network changes to confirm they are working. This prevents the automatic rollback that occurs if you don't check in within the checkin_timeout window.
user_listList all users on the TrueNAS system, including system and local accounts.
user_getGet details of a specific user by their numeric ID.
user_createCreate a new user account on the TrueNAS system.
user_updateUpdate an existing user account. All fields are optional — only provide the ones you want to change.
user_deleteDelete a user account. This is a DESTRUCTIVE operation — the 'confirm' parameter must be set to true to proceed.
user_shell_choicesGet a list of available login shells on the system. Useful when creating or updating a user to know which shells are valid.
user_set_passwordSet or change a user's password by their numeric ID.
group_listList all groups on the TrueNAS system.
group_getGet details of a specific group by its numeric ID.
group_createCreate a new group on the TrueNAS system.
group_updateUpdate an existing group. All fields are optional — only provide the ones you want to change.
group_deleteDelete a group. This is a DESTRUCTIVE operation — the 'confirm' parameter must be set to true to proceed.
disk_listList all physical disks in the TrueNAS system with their details including serial numbers, sizes, and pool membership.
disk_getGet details of a specific disk by its device name (e.g. 'sda', 'nvme0n1').
179 further tools are not listed here. The complete surface is in the source.
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
@modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse
Anthropic's MCP TypeScript SDK has a ReDoS vulnerability
Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default
TRUENAS_API_KEYTRUENAS_URL=https://truenas.local =1-abc123 npx truenas-mcpTRUENAS_HOSTTRUENAS_URLYes TrueNAS instance URL (e.g. https://truenas.local)TRUENAS_VERIFY_SSLNo Set to false to skip SSL verification (self-signed certs)Tool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
279/279 tools missing one or more hints — truenas (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); alert_list (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); alert_dismiss (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +276 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Tool inputs are validated
198/279 tool handlers declare input schemas (71%)
Declare an inputSchema with zod/joi/yup on every tool definition.
Tool handlers catch errors
Only 2/279 tool handlers wrap calls in try/catch (1%)
Wrap each tool handler body in try/catch and return a structured error response.
Tests exist
No test files found
Add tests that exercise each declared tool.
Production dependencies are patched
0 critical, 3 high severity in production deps — @modelcontextprotocol/sdk@1.12.1 (high), @modelcontextprotocol/sdk@1.12.1 (high)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/spranab/truenas-mcp)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check