Files
truenas-mcp/README.md
T

57 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## truenas-mcp
MCP-сервер для управления TrueNAS через AI-ассистентов, завёрнутый через mcpo
в OpenAPI-совместимый HTTP-сервис. Внутри используется пакет truenas-mcp-server (PyPI).
Официальный Go-бинарник truenas/truenas-mcp в Docker на TrueNAS SCALE не запустился
(ошибка exec format error / ENOEXEC) - поэтому используется этот вариант на Python.
### Важно: особенность сборки на TrueNAS SCALE + Dockge
Относительный build.context (например "." или "./truenas") в compose.yaml под
Dockge на TrueNAS SCALE ненадёжен - Dockge и Docker-демон видят пути по-разному,
из-за чего можно получить ошибку "unable to prepare context: path ... not found",
даже если папка физически существует.
Поэтому build.context и volume в compose.yaml указывают абсолютным путём на
отдельный датасет /mnt/ssd/apps/mcp/truenas, а не на папку самого стека Dockge.
Правильный порядок:
1. В Dockge: "+ Compose" -> вставить compose.yaml из этого репозитория -> на
вкладке Env добавить содержимое .env (см. .env.example) со своим реальным
API-ключом TrueNAS -> Save (пока НЕ Deploy).
2. Создать датасет /mnt/ssd/apps/mcp/truenas.
3. Скопировать в этот датасет Dockerfile и config.json из этого репозитория.
4. Только теперь нажать Deploy в Dockge.
### Файлы
- compose.yaml - конфигурация сервиса (порт 8814:8000)
- Dockerfile - собирает образ на python:3.11-slim, ставит mcpo и truenas-mcp-server
- config.json - регистрирует truenas-mcp-server как stdio MCP-сервер для mcpo
- .env.example - шаблон; реальный .env с ключом никогда не коммитить
### Переменные окружения
TRUENAS_API_KEY (в .env) - API-ключ TrueNAS
TRUENAS_URL - URL TrueNAS, например http://192.168.31.100
TRUENAS_VERIFY_SSL - false для самоподписанного сертификата
TRUENAS_ENABLE_DESTRUCTIVE_OPS - false блокирует разрушительные операции
TRUENAS_LOG_LEVEL - уровень логирования, например INFO
### Проверка после деплоя
docker logs truenas-mcp --tail 15
Должно быть: Successfully connected to: truenas / Uvicorn running on http://0.0.0.0:8000
### Подключение клиентов
- OpenAPI-схема: http://truenas-ip:8814/openapi.json
- Документация в браузере: http://truenas-ip:8814/docs
- Open WebUI: Admin Panel -> Settings -> External Tools -> Type: OpenAPI -> URL выше.
- Claude Desktop: сервис отдаёт OpenAPI, а не MCP Streamable HTTP - Custom Connectors
не примет его напрямую. Для Claude Desktop используется локальный запуск того же
truenas-mcp-server через uvx в claude_desktop_config.json.