Локальный MCP-сервер

hommforever-site-mcp — административный локальный инструмент для управления разделами сайта: демками, играми, утилитами и файлообменником.

Важно: MCP-сервер не является публичной частью сайта. Он слушает только 127.0.0.1, не проксируется через nginx и предназначен для администрирования с самого сервера или через SSH-туннель.

Где находится

Как проверить статус

systemctl is-active hommforever-site-mcp.service
curl -sS http://127.0.0.1:8765/health
sudo -u homm-site-mcp HOMM_SITE_MCP_CONFIG=/etc/hommforever-site-mcp/config.json \
  /opt/hommforever-site-mcp/.venv/bin/python /opt/hommforever-site-mcp/server.py \
  --call-tool site_status '{}'

Как смотреть логи

journalctl -u hommforever-site-mcp.service -n 100 --no-pager
journalctl -u hommforever-site-mcp.service -f

Как проверить локальный bind

ss -ltnp | grep hommforever-site-mcp

В выводе должен быть только 127.0.0.1:8765. Адреса 0.0.0.0:8765 быть не должно.

Возможности

Файлообменник через MCP

Файлообменник сайта — это публичная папка /var/www/hommforever.ru/files/storage/, которая доступна снаружи как https://hommforever.ru/files/storage/<filename>. Для OpenClaw и администрирования нужно использовать эти MCP tools, а не старые workspace skills и не ручные shell-скрипты.

Tool Когда вызывать Аргументы
list_files Показать всё, что опубликовано в файлообменнике: имена, размеры, MIME-типы и URL. {}
get_file Проверить один файл перед удалением/переименованием или получить его URL, размер, mtime и sha256. {"filename":"loop.gif"}
upload_file Загрузить бинарный файл или уже подготовленный HTML/GIF/архив через base64. filename, content_base64, overwrite, dry_run
upload_text_file Создать текстовый файл без ручного base64: Markdown, JSON, HTML, заметка, plain text. filename, text, overwrite, dry_run
rename_file Переименовать файл без перезаписи существующей цели. filename, new_filename, dry_run
delete_file Мягко удалить файл: убрать из /files/storage и перенести в backup trash/. filename, dry_run
list_backups Найти последние backup-папки, в том числе удалённые файлы для ручного восстановления. {"limit":20}

Если действие может быть опасным или имя файла неочевидно, сначала вызывайте list_files или get_file. Для изменяющих операций можно передать "dry_run": true.

Примеры вызовов

curl -sS -X POST http://127.0.0.1:8765/mcp \
  -H 'Content-Type: application/json' \
  --data '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_files","arguments":{}}}'

sudo -u homm-site-mcp HOMM_SITE_MCP_CONFIG=/etc/hommforever-site-mcp/config.json \
  /opt/hommforever-site-mcp/.venv/bin/python /opt/hommforever-site-mcp/server.py \
  --call-tool upload_text_file '{"filename":"note.txt","text":"hello","overwrite":false,"dry_run":true}'

sudo -u homm-site-mcp HOMM_SITE_MCP_CONFIG=/etc/hommforever-site-mcp/config.json \
  /opt/hommforever-site-mcp/.venv/bin/python /opt/hommforever-site-mcp/server.py \
  --call-tool get_item '{"section":"utils","id":"structured-data-viewer.html","include_content":true,"max_content_bytes":50000}'

Backup

Перед каждой изменяющей операцией создаётся отдельная папка:

/var/backups/hommforever-site-mcp/YYYY-MM-DD_HH-MM-SS_operation_section_id/

В backup сохраняются metadata, копии изменяемых TSV/index/files, diff для текстовых файлов и trash/ для файлов, которые были удалены через перенос.

Автоматического restore-tool нет: откат делается вручную по README, чтобы случайно не перезаписать более свежие production-изменения.

Список tools

site_status, list_sections, rebuild_section, list_items, get_item, create_item, update_item, rename_item, delete_item, reorder_items, list_files, get_file, upload_file, upload_text_file, rename_file, delete_file, list_backups.

Это административная справка. Пользовательский сайт работает без обращения к MCP-серверу.