Skip to main content
Glama
SynacNipo

Command-Line MCP Server

by SynacNipo

Сервер 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

Инструменты

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

-
license - not tested
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

  • Augments MCP Server - A comprehensive framework documentation provider for Claude Code

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SynacNipo/command-line-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server