truenas-mcp

Servidor MCP para TrueNAS SCALE - 278 ações da API REST em uma única ferramenta hierárquica em vez de 50-80 ferramentas separadas.

Documentação

truenas-mcp

npm npm downloads

Conectar um NAS a um assistente de IA geralmente significa registrar uma ferramenta MCP por operação. Para cobrir o TrueNAS SCALE adequadamente, isso resulta em 50-80 esquemas de ferramentas — cerca de 28.000 tokens do seu contexto gastos antes que o modelo leia uma única palavra da sua pergunta, em cada requisição, independentemente de você tocar ou não no armazenamento.

O truenas-mcp cobre 278 ações em 18 categorias — toda a API REST do TrueNAS SCALE — por trás de uma ferramenta hierárquica que custa cerca de 200 tokens. O modelo pergunta quais categorias existem, aprofunda-se na que precisa e então executa a ação. Operações destrutivas se recusam a executar sem confirm: true.

Instalação (60 segundos)

# No install needed
TRUENAS_URL=https://truenas.local TRUENAS_API_KEY=1-abc123 npx truenas-mcp

Claude Code:

claude mcp add truenas -- npx -y truenas-mcp   --env TRUENAS_URL=https://truenas.local   --env TRUENAS_API_KEY=1-your-api-key-here

Obtenha a chave de API na interface do TrueNAS: Configurações > Chaves de API > Adicionar.

Como é na prática

Você: "Meus pools estão saudáveis, e você pode criar um compartilhamento NFS para o dataset de mídia?"

→ truenas({ category: "storage", action: "pool_list" })
  tank — ONLINE, 68% used, 0 errors

→ truenas({ category: "sharing", action: "nfs_share_create",
            params: { path: "/mnt/tank/media", comment: "Media share" } })

O modelo descobriu nfs_share_create chamando truenas({ category: "sharing" }) primeiro — ele nunca teve essas 36 ações de compartilhamento no prompt.

Por que uma ferramenta em vez de 278

truenas-mcpServidor MCP NAS típico
Ações2785-80
Consumo de tokens~200 tokens (1 ferramenta)5.000-30.000 tokens (50-80 ferramentas)
DescobertaHierárquica — peça o que você precisaPlana — tudo carregado antecipadamente
Recursos MCP12 painéis somente leitura0
Instalaçãonpx truenas-mcpCompilar a partir do código-fonte / pip
SegurançaOperações destrutivas exigem confirm: trueVaria

Configuração completa

# Using npx (no install needed)
TRUENAS_URL=https://truenas.local TRUENAS_API_KEY=1-abc123 npx truenas-mcp

# Or install globally
npm install -g truenas-mcp

Variáveis de ambiente

VariávelObrigatóriaDescrição
TRUENAS_URLSimURL da instância TrueNAS (ex.: https://truenas.local)
TRUENAS_API_KEYSimChave de API da interface do TrueNAS: Configurações > Chaves de API > Adicionar
TRUENAS_VERIFY_SSLNãoDefina como false para pular a verificação SSL (certificados autoassinados)

Configuração do Claude Desktop

Adicione ao seu claude_desktop_config.json:

{
  "mcpServers": {
    "truenas": {
      "command": "npx",
      "args": ["-y", "truenas-mcp"],
      "env": {
        "TRUENAS_URL": "https://truenas.local",
        "TRUENAS_API_KEY": "1-your-api-key-here",
        "TRUENAS_VERIFY_SSL": "false"
      }
    }
  }
}

Claude Code

claude mcp add truenas -- npx -y truenas-mcp \
  --env TRUENAS_URL=https://truenas.local \
  --env TRUENAS_API_KEY=1-your-api-key-here \
  --env TRUENAS_VERIFY_SSL=false

Como funciona — Design de ferramenta hierárquica

Em vez de registrar 278 ferramentas individuais (o que consumiria ~30k tokens no prompt do sistema LLM), este servidor expõe uma ferramenta chamada truenas com três modos de uso:

1. Descobrir categorias

truenas()

Retorna todas as 18 categorias com descrições e contagens de ações (~200 tokens).

2. Explorar uma categoria

truenas({ category: "storage" })

Retorna todas as ações dessa categoria com seus parâmetros obrigatórios/opcionais.

3. Executar uma ação

truenas({ category: "storage", action: "pool_list" })
truenas({ category: "storage", action: "dataset_create", params: { name: "tank/media", compression: "LZ4" } })

Isso significa que o LLM só paga o custo de tokens pelo que realmente usa.

Categorias

CategoriaAçõesCobre
system24Informações do sistema, configuração, serviços, e-mail, chaves de API, NTP
storage32Pools, datasets, snapshots, tarefas periódicas de snapshot
sharing36SMB/CIFS, exportações NFS, alvos/extents/portais/iniciadores iSCSI
network15Interfaces, configuração global, rotas estáticas, IPMI, alterações em etapas
account16Usuários, grupos, privilégios/papéis
disk7Discos físicos, testes SMART, temperaturas
vm16Máquinas virtuais, dispositivos de VM (disco, NIC, display, PCI)
app17Aplicativos Docker, configuração do runtime de contêineres
update14Atualizações do sistema, ambientes de inicialização, pool de inicialização
certificate8Certificados TLS, ACME/Let's Encrypt, autenticadores DNS
alert10Alertas, serviços de notificação (Slack, e-mail, PagerDuty)
data_protection49Replicação, sincronização em nuvem, backup em nuvem, cron, rsync, scripts de inicialização, chaves SSH
filesystem7stat, listdir, mkdir, permissões, ACLs, chown
reporting3Configuração de métricas, gráficos, dados de séries temporais
directory8Active Directory, LDAP, Kerberos
service_config12SSH, FTP, SNMP, UPS, ajustes do sistema
audit3Logs de auditoria, configuração de auditoria
api1Saída de escape da API bruta para qualquer endpoint

Recursos MCP (12)

Recursos somente leitura para painéis — nenhuma chamada de ferramenta necessária:

RecursoURIDescrição
Informações do sistematruenas://system/infoVersão, hostname, tempo de atividade, hardware
Poolstruenas://storage/poolsTodos os pools com capacidade e saúde
Datasetstruenas://storage/datasetsTodos os datasets com propriedades
Serviçostruenas://servicesVisão geral do status dos serviços
Alertastruenas://alertsAlertas atuais do sistema
Redetruenas://network/summaryInterfaces, IPs, DNS, gateway
Compartilhamentostruenas://sharingTodos os compartilhamentos SMB, NFS e iSCSI
VMstruenas://vmsMáquinas virtuais com status
Aplicativostruenas://appsAplicativos instalados
Discostruenas://disksInformações dos discos físicos
Ambientes de inicializaçãotruenas://boot/environmentsAmbientes de inicialização
Atualizaçãotruenas://system/updateConfiguração de atualização

Exemplos de conversas

"Quais pools eu tenho e eles estão saudáveis?"

→ truenas({ category: "storage", action: "pool_list" })

"Crie um compartilhamento NFS para /mnt/tank/media"

→ truenas({ category: "sharing", action: "nfs_share_create", params: { path: "/mnt/tank/media", comment: "Media share" } })

"Verifique se há atualizações do sistema"

→ truenas({ category: "update", action: "update_check" })

"Quais testes SMART foram executados em sda?"

→ truenas({ category: "disk", action: "disk_smart_test_list", params: { disk: "sda" } })

Segurança

Todas as operações destrutivas exigem confirm: true nos parâmetros:

  • Criação/exportação de pool, substituição de disco
  • Exclusão de dataset/snapshot, reversão de snapshot
  • Exclusão de VM, exclusão/reversão de aplicativo
  • Reinicialização/desligamento do sistema, aplicação de atualização
  • Limpeza de disco, anexar/desanexar disco de inicialização
  • Exclusão de certificado, exclusão de ambiente de inicialização
  • Saída de serviços de diretório, definição de ACL

Sem confirm: true, essas ações retornam uma mensagem de erro explicando o que aconteceria.

Compatibilidade de API

Construído para a API REST v2.0 do TrueNAS SCALE. Compatível com TrueNAS SCALE 22.x até 25.x.

Desenvolvimento

git clone https://github.com/spranab/truenas-mcp
cd truenas-mcp
npm install
npm run build
npm run dev  # watch mode

Projetos relacionados

Outros servidores MCP e infraestrutura de agentes construídos pelo mesmo autor:

  • mcpier — plano de controle MCP auto-hospedado para o seu homelab; mantém as chaves de API fora dos seus clientes.
  • saga-mcp — rastreador de projetos com backend SQLite para que o agente não perca o plano entre as sessões.
  • yantrikdb-mcp — memória cognitiva persistente para Claude Code, Cursor e Windsurf.
  • swarmcode — canal em tempo real entre instâncias do Claude Code em máquinas diferentes.
  • brainstorm-mcp — debate multimodelo como ferramenta MCP.

Licença

MIT