TrueNAS主MCP
用于通过AI助手管理TrueNAS系统的模型上下文协议(MCP)服务器。
特性
此MCP服务器提供对TrueNAS API功能的访问,包括:
- 用户管理:列出、获取、创建、更新、删除用户和组
- 游泳池管理:列出池、获取池状态、清理池
- 数据集管理:列出、创建、获取、删除数据集
- SMB股份:列出、创建、删除SMB共享
- NFS导出:列出、创建、删除NFS导出
- ZFS快照:列出、创建、删除、回滚快照
- iSCSI目标:列出、创建、删除iSCSI目标
- 系统监控:获取警报、事件、磁盘运行状况、系统日志
- 虚拟机管理:列出、启动、停止、重新启动、创建、克隆虚拟机
- 网络管理:列出接口、路由、DNS配置
- 服务管理:列出、启动、停止、重新启动服务
- 磁盘管理:列出磁盘,获取磁盘详细信息,SMART状态
- 证书管理:列出并获取证书
- 复制:列出、创建、运行复制任务
- 云同步:列出、创建、运行云同步任务
- Kubernetes/Docker:获取K8s状态,列出Docker镜像(SCALE)
- 任务管理:列出、获取状态、中止运行任务
- 应用程序/监狱:完整的应用生命周期管理(SCALE/CORE)
- 缓存:为频繁访问的数据内置缓存
安装
先决条件
- 锈1.85或更高版本
- 具有API访问权限的TrueNAS SCALE或TrueNAS CORE
- 用于身份验证的API密钥或用户名/密码
从源代码构建
# Clone the repository
git clone https://github.com/hongkongkiwi/truenas-master-mcp.git
cd truenas-master-mcp
# Build the project
cargo build --release
# The binary will be at target/release/truenas-master-mcp配置
服务器是通过环境变量配置的:
| 变量 | 必填 | 描述 | 默认值 |
|---|---|---|---|
TRUENAS_SERVER_URL | 是 | TrueNAS服务器URL | http://localhost |
TRUENAS_API_KEY | 没有用于身份验证的\* | neneneba API密钥 | - |
TRUENAS_USERNAME | 否\* | 基本身份验证用户名 | - |
TRUENAS_PASSWORD | 否\* | 基本身份验证密码 | - |
TRUENAS_VERIFY_SSL | 否 | 验证SSL证书 | true |
TRUENAS_TIMEOUT | 否 | 请求超时(秒) | 30 |
TRUENAS_VERSION | 否 | TrueNAS版本(规模/核心) | scale |
\*要么 TRUENAS_API_KEY 或两者 TRUENAS_USERNAME 和 TRUENAS_PASSWORD 必须提供。
CLI选项
服务器还支持命令行选项:
| 选项 | 描述 | 默认值 |
|---|---|---|
-t, --transport | 传输类型:stdio、http、sse | stdio |
-h, --host | 要绑定的主机(仅限http/sse) | 127.0.0.1 |
-p, --port | 要绑定的端口(仅限http/sse) | 3000 |
--truenas-version | TrueNAS版本:规模或核心 | 规模 |
--readonly | 启用只读模式 | false |
-c, --config-file | 配置文件路径(JSON/YAML) | - |
-l, --log-level | 日志级别:调试、信息、警告、错误 | info |
-v, --verbose | 启用详细输出 | false |
--insecure-ssl | 禁用SSL证书验证 | false |
--timeout | API请求超时(以秒为单位) | 30 |
--pretty | 启用JSON漂亮打印 | false |
示例.env文件
# Using API key
TRUENAS_SERVER_URL=https://truenas.local
TRUENAS_API_KEY=your-api-key-here
# OR using username/password
TRUENAS_SERVER_URL=https://truenas.local
TRUENAS_USERNAME=admin
TRUENAS_PASSWORD=your-password
# Optional settings
TRUENAS_VERIFY_SSL=true
TRUENAS_TIMEOUT=30用法
运行服务器
# Load environment variables from .env file
export $(cat .env | xargs)
# Run the server
cargo run服务器通过stdio进行通信,这是MCP服务器的标准。
与Claude Desktop一起使用
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"truenas": {
"command": "/path/to/truenas-master-mcp",
"env": {
"TRUENAS_SERVER_URL": "https://truenas.local",
"TRUENAS_API_KEY": "your-api-key-here"
}
}
}
}与其他MCP客户端一起使用
服务器实现了标准的模型上下文协议。有关如何连接服务器,请参阅MCP客户端的文档。
示例用法
一旦连接到像Claude Desktop这样的MCP客户端,您就可以管理您的TrueNAS系统:
# List all storage pools
list_pools()
# Get details of a specific dataset
get_dataset(dataset_id_or_path="tank/data/mydata")
# Create a new user
create_user(username="newuser", email="user@example.com", full_name="New User")
# List all VMs and start one
list_vms()
start_vm(vm_id=1)
# Check system alerts
get_alerts()AI使用示例
本节为AI助手提供了如何有效使用TrueNAS MCP工具的示例。
监控系统健康状况
# Get comprehensive system overview
system_info = get_system_info()
alerts = get_alerts()
pools = list_pools()
disk_health = get_disk_health()
# Check for critical issues
if alerts and len(alerts) > 0:
critical_alerts = [a for a in alerts if a.get("severity") == "CRITICAL"]
if critical_alerts:
# Take action on critical alerts
for alert in critical_alerts:
print(f"Alert: {alert['message']}")管理存储
# Find datasets with low space
datasets = list_datasets()
for ds in datasets:
if ds.get("available", 0) 86400 * 7:
# VM has been running for more than 7 days
print(f"Consider restarting: {vm['name']}")
# Clone a VM before testing
clone_vm(vm_id=1, name="vm-test-clone")处理警报
# Get and categorize alerts
alerts = get_alerts()
for alert in alerts:
severity = alert.get("severity", "INFO")
source = alert.get("source", "unknown")
message = alert.get("message", "")
if severity == "CRITICAL":
# Immediately notify and potentially take action
print(f"CRITICAL: {message}")
if "disk" in source.lower():
# Check disk health
disk = get_disk(disk_name=extract_disk_name(message))
print(f"Disk SMART status: {disk.get('smart_status')}")
# Dismiss resolved alerts
dismiss_alert(alert_id="alert-123")
# Clear all old alerts
clear_alerts()批量操作
# Execute multiple operations in sequence
operations = [
{"name": "list_pools", "arguments": {}},
{"name": "list_apps", "arguments": {}},
{"name": "get_alerts", "arguments": {}},
]
results = batch(operations=operations)HTTP/SSE模式
对于远程访问或基于web的MCP客户端:
# Run in HTTP/SSE mode on port 8080
TRUENAS_SERVER_URL=https://truenas.local TRUENAS_API_KEY=your-key \
truenas-master-mcp --transport=sse --port=8080服务器将在以下位置可用:
- SSE流:
http://localhost:8080/sse - POST消息:
http://localhost:8080/messages
可用工具
用户管理
list_users-列出所有用户get_user-按ID获取用户get_user_by_username-按用户名获取用户
游泳池管理
list_pools-列出所有存储池get_pool_status-获取特定池的状态scrub_pool-在储水池上开始擦洗
数据集管理
list_datasets-列出所有数据集get_dataset-获取特定数据集的详细信息create_dataset-创建新数据集delete_dataset-删除数据集
SMB股份
list_smb_shares-列出所有SMB共享create_smb_share-创建新的SMB共享delete_smb_share-删除SMB共享
NFS导出
list_nfs_exports-列出所有NFS导出create_nfs_export-创建新的NFS导出delete_nfs_export-删除NFS导出
快照
list_snapshots-列出所有ZFS快照create_snapshot-创建新快照delete_snapshot-删除快照
iSCSI目标
list_iscsi_targets-列出所有iSCSI目标create_iscsi_target-创建新的iSCSI目标delete_iscsi_target-删除iSCSI目标
应用程序管理(SCALE)
list_apps-列出所有应用程序get_app-获取特定应用程序的详细信息start_app-启动应用程序stop_app-停止应用程序restart_app-重新启动应用程序create_app-从目录创建新应用程序update_app-更新应用程序配置delete_app-删除应用程序rollback_app-将应用程序回滚到以前的版本get_app_config-获取应用程序配置get_app_upgrade_options-获取可用的升级选项upgrade_app-升级应用程序scale_app-扩展应用程序副本数量
目录和图表发布
list_catalog_items-列出可用的目录项get_catalog-获取目录详细信息get_catalog_trains-获取列车版本目录get_catalog_item-获取特定目录项详细信息list_chart_releases-列出已部署的图表版本get_chart_release-获取图表发布详细信息get_chart_release_resources-获取图表发布资源
系统监控
get_system_info-获取系统信息get_alerts-获取系统警报get_alert_classes-获取警报类别dismiss_alert-取消特定警报clear_alerts-清除所有系统警报get_system_events-获取最近的系统事件/日志get_disk_health-获取磁盘运行状况/SMART状态check_for_updates-检查系统更新reboot_system-重新启动系统(需要confirm=true)shutdown_system-关闭系统(需要确认=真)
群组管理
list_groups-列出所有组get_group-按ID获取组get_group_by_name-按名称获取组create_group-创建新组delete_group-删除组
虚拟机管理
list_vms-列出所有虚拟机get_vm-按ID获取VM详细信息create_vm-创建新的虚拟机update_vm-更新VM配置start_vm-启动虚拟机stop_vm-停止虚拟机restart_vm-重新启动虚拟机powercycle_vm-重启(硬重置)虚拟机clone_vm-克隆现有虚拟机delete_vm-删除虚拟机
网络管理
list_interfaces-列出所有网络接口list_routes-列出所有网络路由get_dns-获取DNS配置
服务管理
list_services-列出所有服务get_service-获取服务详细信息start_service-启动服务stop_service-停止服务restart_service-重新启动服务
磁盘管理
list_disks-列出所有磁盘get_disk-按名称获取磁盘详细信息
证书管理
list_certificates-列出所有证书get_certificate-按ID获取证书详细信息
复制
list_replication_tasks-列出所有复制任务get_replication_task-按ID获取复制任务create_replication_task-创建新的复制任务delete_replication_task-删除复制任务run_replication_task-运行复制任务
云同步
list_cloudsync_tasks-列出所有云同步任务get_cloudsync_task-按ID获取云同步任务create_cloudsync_task-创建新的云同步任务delete_cloudsync_task-删除云同步任务run_cloudsync_task-运行云同步任务
任务管理
list_tasks-列出所有正在运行和最近执行的任务get_task_status-获取特定任务的状态abort_task-中止正在运行的任务
Kubernetes(SCALE)
get_kubernetes_status-获取Kubernetes集群状态get_kubernetes_nodes-列出Kubernetes节点get_kubernetes_pods-列出Kubernetes Podget_kubernetes_services-列出Kubernetes服务
Docker(SCALE)
list_docker_images-列出所有Docker镜像pull_docker_image-拉取Docker镜像
批量操作
batch-在一次调用中执行多个操作
其他
get_enclosure-获取机柜信息get_support-获取支持信息
监狱管理(仅CORE)
list_jails-列出所有监狱get_jail-通过ID获取监狱详细信息get_jail_by_name-按姓名获取监狱详细信息create_jail-新建监狱update_jail-更新监狱配置delete_jail-删除监狱start_jail-开办监狱stop_jail-阻止监狱restart_jail-重新启动监狱clone_jail-克隆监狱list_jail_fstabs-列出监狱fstab条目
其他
get_enclosure-获取机柜信息get_support-获取支持信息
发展
运行测试
cargo test检查代码
cargo fmt
cargo clippy释放建筑
cargo build --release码头工人
Docker文件用于容器化部署:
# Build the image
docker build -t truenas-master-mcp .
# Run the container
docker run -d \
-p 3000:3000 \
-e TRUENAS_SERVER_URL=https://truenas.local \
-e TRUENAS_API_KEY=your-api-key \
--name truenas-mcp \
truenas-master-mcp
# Build for specific platform
docker buildx build --platform linux/amd64,linux/arm64 -t truenas-master-mcp --push .API兼容性
此服务器通过REST API v2.0支持TrueNAS SCALE和TrueNAS CORE。集 TRUENAS_VERSION=scale (默认)适用于TrueNAS SCALE或 TRUENAS_VERSION=core TrueNAS CORE。
服务器提供80多种工具,包括:
- 用户和组管理
- 池、数据集、共享、快照和iSCSI管理
- VM、网络和服务管理
- 应用程序管理(仅限SCALE)
- 目录和图表发布权限
- 复制和云同步
- 磁盘和证书管理
许可证
麻省理工学院
贡献
欢迎投稿!请打开问题或提交拉取请求。
