Skip to main content
Glama
HugoCirca

Command-Line MCP Server

by HugoCirca

Сервер MCP для командной строки

Удалённый сервер Model Context Protocol, который предоставляет один инструмент, run_command, позволяющий Claude (через функцию Connectors в Claude Desktop) выполнять shell-команды на машине, где запущен этот сервер.

Сервер реализует OAuth 2.1 (динамическая регистрация клиентов + PKCE), потому что коннекторы Claude Desktop требуют OAuth-рукопожатие — коннектор без сервера авторизации отклоняется при входе. Этот сервер автоматически одобряет авторизацию (без запроса пользователя), что подходит для личного сервера, доступного через туннель.

⚠️ Предупреждение о безопасности: любой, кто может получить доступ к этому серверу и пройти (автоматический) OAuth-поток, может выполнять произвольные команды от имени пользователя, под которым он запущен. Открывайте доступ только через частный туннель (cloudflared / ngrok) и никогда не размещайте его в публичной сети.

Как это работает

  • Транспорт: Streamable HTTP (транспорт, требуемый коннекторами Claude Desktop).

  • Без состояния: каждый запрос создаёт новый экземпляр сервера/транспорта (хранилище сессий не нужно).

  • Конечная точка: POST /mcp

  • Проверка работоспособности: GET /health

Related MCP server: Claude MCP Command Server

Инструменты

run_command

Выполняет shell-команду. В Windows оболочкой по умолчанию является cmd.exe (используйте dir, cd, а не ls/pwd), если не передать shell: "powershell".

Параметр

Тип

Обязательный

Описание

command

string

да

Выполняемая shell-команда.

cwd

string

нет

Рабочая директория.

timeout_ms

number

нет

Жёсткий таймаут (макс. 600000). По умолчанию 120000.

shell

string

нет

"cmd" (по умолчанию) или "powershell".

get_info

Возвращает ОС, архитектуру, оболочку по умолчанию (cmd.exe в Windows) и текущую рабочую директорию — вызовите один раз, чтобы клиент знал, какую оболочку использовать.

read_file

Читает текстовый файл (необязательный диапазон строк offset/limit). path — абсолютный или относительный к cwd.

list_files

Список содержимого директории. recursive: true обходит дерево (ограничение глубины — 4).

edit_file

Точная замена строки — предпочтительный способ редактирования кода (не требуется экранирование shell). path, old_text, new_text, необязательный replace_all. old_text должен быть уникальным, если не задан replace_all. Возвращает краткий diff.

apply_patch

Применяет unified diff через git apply (с запасным вариантом --3way). cwd = корень репозитория, patch = текст diff.

write_file

Записывает полное содержимое в файл (overwrite или append).

batch_read

Читает несколько файлов одним вызовом. files: массив { path, offset?, limit? }.

batch_edit

Применяет множество точных текстовых правок в одном или нескольких файлах за один вызов. Транзакционно: каждый old_text проверяется до записи любого файла, поэтому отсутствие/неоднозначность совпадения прерывает весь пакет (ничего не меняется). Каждая правка: { path, old_text, new_text, replace_all? }.

Встроенный git passthrough

git_status (-sb), git_diff (опции staged + paths), git_log (max_count, revision), git_show (revision). Каждый принимает необязательный cwd.

Все пути к файлам разрешаются на хосте, где запущен сервер, — они указывают на эту машину, а не на песочницу Claude.

Запуск локально

npm install
npm start
# server listens on http://localhost:3000/mcp

Необязательные переменные окружения: PORT, CMD_TIMEOUT_MS, CMD_MAX_BUFFER.

npm start запускает start.js, который освобождает порт 3000 (убивает любой процесс, удерживающий его) перед запуском сервера, так что вы никогда не столкнётесь с EADDRINUSE.

Открытие доступа для Claude Desktop

Вариант A — Cloudflare Worker (стабильный URL, без trycloudflare, домен не нужен)

Небольшой локальный агент поддерживает WebSocket-соединение с Cloudflare Worker, который становится вашей стабильной публичной конечной точкой MCP *.workers.dev. Worker только ретранслирует данные на вашу машину, пока агент (аутентифицированный с помощью PROXY_SECRET) подключён.

  1. wrangler login (бесплатная учётная запись Cloudflare).

  2. Разверните: wrangler deploy → запишите ваш URL, например https://command-line-mcp.<subdomain>.workers.dev.

  3. Установите секрет (то же значение, которое уже есть в вашем gitignored .dev.vars): wrangler secret put PROXY_SECRET (вставьте PROXY_SECRET из .dev.vars).

  4. Укажите агенту развёрнутый Worker: задайте WORKER_URL в .dev.vars на этот URL.

  5. На вашей машине запустите оба:

    npm start          # the MCP server on :3000
    npm run agent      # connects to the Worker with the secret
  6. В Claude Desktop: Customize → Connectors → Add custom connector, вставьте https://command-line-mcp.<subdomain>.workers.dev/mcp.

Локальное тестирование без развёртывания: wrangler dev --port 8787 (Worker на :8787), затем npm run agent — агент читает WORKER_URL из .dev.vars.

Вариант B — туннель cloudflared / ngrok (временный URL)

Коннекторам Claude Desktop нужен HTTPS-URL, поэтому запустите сервер локально и пробросьте туннель:

cloudflared tunnel --url http://localhost:3000 --protocol http2
# or: ngrok http 3000

Скопируйте сгенерированный URL https://… и добавьте /mcp, например https://abc-123.trycloudflare.com/mcp.

Добавление в Claude Desktop

  1. Откройте Customize → Connectors → Add custom connector.

  2. Вставьте URL (с /mcp), например URL Worker из варианта A.

  3. Назовите его Command-Line.

  4. Сохраните. Claude обнаружит OAuth-метаданные, зарегистрирует клиента и откроет браузер на (автоматически одобряющей) конечной точке авторизации, затем перенаправит обратно — и всё готово. Вводить "OAuth Client ID" вручную не нужно — DCR справится.

Тестирование без Claude

Используйте MCP Inspector:

npx @modelcontextprotocol/inspector
# Transport: Streamable HTTP, URL: http://localhost:3000/mcp

Усиление защиты (для неличного использования)

OAuth уже реализован (см. oauthProvider.js). Для чего-либо, кроме личного туннеля, следует:

  1. Заменить автоматически одобряющий authorize() на реальный экран согласия или хотя бы список разрешённых redirect URI / клиентов.

  2. Сохранять клиентов/токены (сейчас они в памяти — сбрасываются при перезапуске).

  3. Разместить за стабильным HTTPS-доменом (например, VPS, Cloudflare Workers, Fly.io).

  4. Рассмотреть список разрешённых команд для ограничения радиуса поражения.

Лицензия

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A high-speed MCP server that enables AI assistants like Claude to interact with local filesystems, manage Git repositories, and provide interactive experiences through a standardized JSON-based protocol.
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A server implementation for the Model Context Protocol (MCP) that allows Claude AI to execute commands through a command-line interface, enabling direct system interactions from within Claude.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A local MCP server that proxies file and shell tools (Read, Write, Edit, Bash, etc.) to a remote Linux host over SSH, enabling MCP clients like Claude Code to operate on remote codebases.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Claude Code to execute commands on any remote server over SSH. Provides tools for remote execution, file operations, and connection info.
    -