Skip to main content
Glama
lm-computer

lm-computer

by Spe4naz

LM Computer — плагин для LM Studio

Клиент: LM Chat.

Даёт модели контролируемый доступ к компьютеру, на котором запущен LM Studio: файлы в отдельной рабочей папке, команды shell, открытие файлов и папок. Подтверждения приходят в приложение LM Chat; если приложение закрыто — показывается диалог zenity на самой машине.

Плагин также поднимает HTTP-сервер, поэтому тот же набор инструментов доступен приложению и opencode:

  • native tools — чат в LM Studio, со статусами и отменой;

  • POST/GET /mcp — MCP Streamable HTTP для opencode и других клиентов;

  • /api/* — REST для LM Chat: файлы, журнал, подтверждения, автопринятие.

Что уже реализовано

  • рабочая папка ~/lm-chat-computer (настраивается);

  • fs_list, fs_read, fs_write, fs_append, fs_mkdir, fs_move, fs_delete (в корзину), fs_search;

  • shell_run с таймаутом, лимитом вывода и убийством всей группы процессов;

  • open_path и system_info;

  • запрет выхода за рабочую папку, включая symlink и ..;

  • очередь подтверждений с таймаутом;

  • временное автопринятие из приложения, максимум 30 минут;

  • fallback-диалог zenity, если приложение не выходит на связь;

  • журнал действий audit.jsonl;

  • REST API и MCP endpoint;

  • одноразовый токен, который генерируется при первом запуске.

Related MCP server: RelayForge MCP

Установка на Ubuntu (spike)

LM Studio 0.4.28 уже содержит Node.js, отдельно ставить его не нужно.

# скопировать папку tools/lm-computer-plugin на машину с LM Studio
cd lm-computer-plugin
~/.lmstudio/bin/lms dev

lms dev проверит manifest.json, установит npm-зависимости и запустит плагин. Для установки без dev-режима:

~/.lmstudio/bin/lms dev --install

После запуска плагин пишет в лог:

[lm-computer] REST/MCP listening on http://0.0.0.0:1236
[lm-computer] workspace: /home/<user>/lm-chat-computer
[lm-computer] token file: /home/<user>/.config/lm-computer/token.txt

Токен нужно один раз скопировать в настройки LM Chat. Если на машине включён ufw, открыть порт:

sudo ufw allow 1236/tcp

Настройки

Файл: ~/.config/lm-computer/config.json (создаётся автоматически).

{
  "workspace": "/home/user/lm-chat-computer",
  "host": "0.0.0.0",
  "port": 1236,
  "token": "<генерируется>",
  "shellEnabled": true,
  "approvalTimeoutSec": 120,
  "shellTimeoutSec": 120,
  "maxOutputBytes": 65536,
  "autoAcceptMaxSec": 1800,
  "zenityFallback": true
}

host и port меняются только с перезапуском плагина. Остальное можно менять из приложения через PUT /api/config.

REST

Все запросы, кроме минимального /api/health, требуют Authorization: Bearer <token>.

curl -H "Authorization: Bearer $TOKEN" http://127.0.0.1:1236/api/status

curl -H "Authorization: Bearer $TOKEN" \
  "http://127.0.0.1:1236/api/files?path=."

curl -H "Authorization: Bearer $TOKEN" \
  -X PUT --data-binary @book.md \
  "http://127.0.0.1:1236/api/file?path=book.md"

curl -H "Authorization: Bearer $TOKEN" \
  "http://127.0.0.1:1236/api/approvals"

curl -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"allow":true}' \
  "http://127.0.0.1:1236/api/approvals/<id>"

curl -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"seconds":1800}' \
  "http://127.0.0.1:1236/api/auto-accept"

События и журнал:

  • GET /api/events?since=N&wait=20 — long-poll;

  • GET /api/audit?limit=100;

  • POST /api/cancel — отменить команду и все ожидающие подтверждения.

MCP

{
  "mcp": {
    "servers": {
      "lm-computer": {
        "type": "remote",
        "url": "http://<ip>:1236/mcp",
        "headers": {
          "Authorization": "Bearer <token>"
        }
      }
    }
  }
}

Политика доступа

Действие

По умолчанию

Чтение и запись в рабочей папке

без подтверждения

Удаление и перемещение

подтверждение

Файлы вне рабочей папки

запрещено

Shell-команда

подтверждение

Автопринятие

только временное, из приложения; действует, пока приложение на связи

Опасные команды (sudo, mkfs, dd, shutdown, rm -rf /)

блокируются всегда

Проверено локально

На Windows (Node 24) прошёл smoke-тест без LM Studio:

  • /api/health, /api/status;

  • загрузка и скачивание файла через /api/file;

  • MCP initialize, tools/list, fs_list;

  • временное автопринятие;

  • shell_run с whoami;

  • записи в audit.jsonl.

Юнит-тесты: 13/13 (npm test).

Пакет для spike

Готовый архив:

tools/lm-computer-plugin/lm-computer-plugin-0.1.0.zip

На Ubuntu:

mkdir -p ~/lm-computer-plugin
cd ~/lm-computer-plugin
unzip lm-computer-plugin-0.1.0.zip
~/.lmstudio/bin/lms dev

Если zenity не установлен:

sudo apt install -y zenity

Ограничения spike-версии

  • нет UI настроек внутри LM Studio — настройки в JSON и приложении;

  • приложение LM Chat ещё не подключено к /api;

  • MCP-сервер stateless: без сессий и server-initiated notifications;

  • zenity должен быть установлен на Ubuntu;

  • автопринятие живёт только в памяти плагина и сбрасывается при перезапуске.

Проверка на Ubuntu

  1. lms dev загружает плагин без ошибок.

  2. В чате LM Studio с Qwen 3.5 9B: «создай файл test.txt со словом hello» — файл появляется в ~/lm-chat-computer.

  3. «выполни whoami» — в LM Chat появляется подтверждение; после разрешения вывод приходит в чат.

  4. Закрыть LM Chat, повторить команду — появляется zenity.

  5. Включить автопринятие на 1 минуту — команда выполняется без диалога.

  6. curl http://<ip>:1236/api/status с токеном отвечает.

  7. opencode mcp list показывает lm-computer подключённым.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Gives MCP-compatible AI clients a controlled bridge to local files, processes, search, and document utilities, including reading/writing and moving files, text block editing, directory listing, content search, starting and managing terminal processes, and PDF/Excel/DOCX/image handling. It serves these tools over MCP Streamable HTTP at a configurable endpoint, with optional Bearer-token authentication and read-only or restricted-directory modes for safer remote exposure.
      1
      MIT
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables web-based AI chat clients and local IDEs to securely operate a user's own machine through an OAuth-gated MCP endpoint, covering file read/write/edit, whitelisted shell execution, search, read-only Git, SQLite, browser automation, DevTools debugging, background tasks, localhost fetching, ports, clipboard, notifications, and Postman control. Its 38 tools are governed by configurable allowed folders, a strict command whitelist, rate limits, and caller blocking, so remote AI assistants get scoped access without unrestricted shell privileges.
      -
    • A
      license
      Not graded
      quality
      A
      maintenance
      Enables web-based AI clients like Claude, ChatGPT, and Grok to securely operate a local machine through an OAuth-gated MCP endpoint, covering files, shell commands, search, Git, SQLite, browser automation, DevTools, background tasks, ports, clipboard, notifications, and Postman. Exposes 38 governed tools with a strict command whitelist, folder allowlisting, and rate limiting so browser chats can build projects, inspect databases and local APIs, and manage long-running jobs without granting unrestricted shell access.
      MIT