Гайд · TNWS AI
Как добавить локальный MCP-сервер в Copilot CLI
Подключение локального stdio MCP server через copilot mcp add: команда после --, проверка tools, sandbox status и безопасный откат.
Задача и применимость
Этот гайд решает конкретную задачу: добавить постоянный user-level MCP server, который запускается локальным процессом и общается по stdin/stdout. Он нужен администраторам и разработчикам, которые управляют Model Context Protocol в GitHub Copilot CLI и хотят доказуемо контролировать источники, инструменты и права. MCP server расширяет возможности агента, поэтому даже read-only интеграцию следует рассматривать как границу доверия.
Перед началом зафиксируйте пользователя, copilot version, рабочий каталог и цель изменения. Не добавляйте server «на будущее»: перечислите один сценарий, нужные tools и владельца. Сделайте baseline через list/get, чтобы после операции увидеть ровно ожидаемое изменение. Если конфигурация командная, оформляйте её через review, а секреты храните отдельно.
Проверенные факты и первоисточники
Проверено 13 сентября 2026 года. Для local/stdio server синтаксис: copilot mcp add SERVER-NAME -- COMMAND [ARGS...]. Add пишет user configuration в ~/.copilot/mcp-config.json. Локальные servers, запущенные внутри sandbox в experimental mode, могут отображаться как connected (sandboxed).
Точные команды сверены с официальной Copilot CLI command reference и инструкцией GitHub по добавлению MCP servers. Изменяемые цены, тарифы и модели не используются. Указанные default или availability относятся к дате проверки; перед будущим изменением откройте источники заново.
Важно различать user, workspace, plugin и session configuration. Одинаковое имя может разрешаться по приоритету источников, а команда удаления может работать только для одного уровня. Поэтому в журнале изменения храните не только server name, но и source, transport, enabled status и список tools.
До изменения нарисуйте короткую цепочку данных: кто инициирует запрос, какой tool вызывается, куда уходит input и где сохраняется output. Отдельно отметьте, может ли server выполнять запись. Эта схема нужна не для формальности: по ней легко увидеть, что «чтение документации» на деле включает отправку фрагмента закрытого репозитория внешнему endpoint. Если маршрут данных неясен, не подключайте интеграцию до ответа владельца сервиса.
Также определите критерий остановки. При неожиданном tool, неизвестном source, ошибке TLS, запросе лишнего scope или появлении секрета в логе завершите session, отключите server и отзовите test credential. Не продолжайте эксперимент расширением прав: сначала устраните конкретную причину и снова начните с read-only проверки.
Модель угроз перед подключением
Проверьте четыре направления. Первое — происхождение executable или remote endpoint. Второе — данные, которые tools читают и меняют. Третье — credentials и место их появления в history/logs. Четвёртое — инструкции самого MCP server, способные влиять на поведение агента.
Для первой проверки используйте отдельный test credential с минимальным scope, безопасный read-only tool и объект без персональных данных. Не используйте production delete/update/create как негативный тест. Если нужен отказ, применяйте несуществующий тестовый ID, disabled state, исключённый tool либо недействительный временный credential.
Пошаговые действия
- Проверьте происхождение executable и зафиксируйте его абсолютный путь.
- Запустите server вручную только в тестовом окружении и убедитесь, что он пишет protocol в stdout без лишнего шума.
- Добавьте его командой
copilot mcp add local-docs -- /usr/local/bin/docs-mcp --root ./docs. - Выполните
copilot mcp get local-docs --jsonи проверьте command, args и tools. - Откройте интерактивную сессию и запросите безопасный read-only tool.
- Если используется sandboxed local server, проверьте фактический status, не обещая его без experimental mode.
- Перезапустите CLI и убедитесь, что user-level конфигурация сохранилась.
- Для отката выполните
copilot mcp remove local-docsи повторите list.
После каждого изменения снова запускайте list/get и открывайте новую CLI session, если проверяется persistence. Старый процесс мог загрузить конфигурацию до изменения. Для remote server сопоставляйте client result с server-side audit log; для local process дополнительно проверяйте command path и отсутствие секретов в stdout/stderr.
Готовый шаблон для копирования
Заполните карточку в change request:
Имя: local-docs
Transport: stdio
Command: /usr/local/bin/docs-mcp
Args: --root ./docs
Разрешённые tools: search_docs, read_doc
Запрещённые действия: write/delete/network
Проверка: copilot mcp get local-docs --json
Откат: copilot mcp remove local-docs
Дата проверки официальной документации: 13.09.2026
Источник: https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-command-reference
Готовый prompt для внутреннего помощника:
Подготовь безопасный план изменения MCP в GitHub Copilot CLI.
Используй только факты из заполненной карточки. Не придумывай status,
tools, transport, token, exit code или успешный результат.
Раздели ответ на: baseline, точную команду, позитивный read-only тест,
негативный тест без изменения данных, критерии успеха, очистку и откат.
Любой отсутствующий факт пометь «нужно проверить вручную».
<вставьте карточку>
Реалистичный пример входа и результата
Вход. Команда /usr/local/bin/docs-mcp --root ./docs предоставляет только чтение внутренней документации.
Ожидаемый результат. Server появляется в user config, get показывает ожидаемые args/tools, read-only вызов возвращает документ. После remove запись исчезает из list.
Не считайте текстовое сообщение агента доказательством. Подтверждение — это list/get, JSON-поле, отсутствие tool в новой session, успешный безопасный вызов, явный отказ или audit event. Сохраните только несекретные признаки: timestamp, server name, tool name, status и request ID.
Позитивный и негативный тест
Позитивный тест отвечает на вопрос: работает ли минимально разрешённая возможность? Используйте read-only tool и заранее известный объект. Запишите expected output без закрытого содержимого. Проверьте exit code и фактический status.
Негативный тест отвечает на вопрос: действительно ли граница закрыта? Меняйте только одно условие. Например, отключите server, обратитесь к исключённому tool или используйте invalid test credential. Если меняются одновременно transport, name и permissions, причина результата становится неясной.
Если тест завис, не повышайте timeout и права вслепую. Сначала разделите discovery, соединение, authentication и конкретный tool call. Проверьте DNS/TLS для remote transport, executable/args для stdio, enabled status и tool filter. Затем повторите один минимальный вызов.
Типичные ошибки
- Ставить непроверенный executable.
- Забывать разделитель
--. - Разрешать запись, когда нужно чтение.
- Путать stdout protocol с обычным логом.
- Не тестировать удаление.
Общая опасная ошибка — включить all tools или вывести secrets ради быстрой диагностики. Это расширяет последствия prompt injection и оставляет credentials в логах. Используйте least privilege, краткоживущие токены, redaction и отдельный audit trail. После эксперимента удаляйте временные конфигурации и отзывайте credentials у issuer.
Чек-лист финальной проверки
- Свежий каталог публикаций проверен; title и slug уникальны.
- Команда сверена с официальной документацией на 13.09.2026.
- Server source, transport, name и enabled status записаны.
- Разрешён только минимальный набор tools.
- Секреты отсутствуют в prompt, history, screenshots и shared logs.
- Позитивный read-only тест выполнен.
- Негативный тест не изменяет production data.
- Проверены list/get и новая CLI session.
- Для remote вызова сопоставлен server audit log.
- Откат и отзыв credentials выполнены или документированы.
FAQ
Зачем нужен --?
Он отделяет аргументы copilot mcp add от команды локального server.
Куда пишется конфигурация?
В user-level ~/.copilot/mcp-config.json.
Как удалить server?
Командой copilot mcp remove для user-level записи.
Всегда ли будет статус sandboxed?
Нет, документация связывает его с запуском local server внутри sandbox и experimental mode.
Итог
MCP-настройка считается готовой не после появления server в списке, а после подтверждения минимального tool set, безопасной аутентификации, позитивного и негативного тестов. Храните несекретную карточку вместе с изменением. При обновлении CLI повторяйте инвентаризацию и перепроверяйте официальный reference: команды, defaults и доступность могут измениться.
Читайте также
Как добавить HTTP MCP-сервер в Copilot CLI
Подключение remote MCP server через copilot mcp add --transport http: URL, headers, проверка tools и безопасная диагностика.
Как настроить timeout MCP-сервера в Copilot CLI
Настройка --timeout для MCP tool discovery и вызовов: измеримый тест, диагностика задержки и отказ без выдуманных значений.
Как ограничить tools MCP-сервера в Copilot CLI
Фильтрация MCP tools параметром --tools: точный список, *, пустой набор, позитивные и негативные проверки.
Комментарии
Пока тихо. Скажите первое слово