MCP в DeepSeek Harness

Model Context Protocol — стандартный способ дать агенту чужие инструменты: GitHub, базу данных, файловую систему, память. DeepSeek Harness подключает MCP-серверы штатным плагином, по одной записи конфигурации на сервер. Дальше о том, где эта запись живёт, как выглядит и что после неё увидит модель.

MCP в двух словах

MCP-сервер — отдельная программа или веб-сервис, который по единому протоколу описывает свои инструменты (имя, параметры, что делает) и выполняет их по запросу. Клиент, в нашем случае DSH, читает этот список, показывает инструменты модели и передаёт серверу вызовы. Выгода в том, что сервер пишется один раз: тот же сервер памяти или GitHub работает с любым агентом, который понимает протокол. Если у вас уже настроены MCP-серверы для другого клиента, те же записи подойдут и здесь, об этом прямо пишет README плагина.

Как это устроено в DSH

Источники: packages/mcp/mcp-client/README.md, docs/user/guide/mcp-memory.md, проверено 11.09.2026

За MCP отвечает пакет @deepseek-ai/dsh-mcp-client, обычный плагин из поставки. На каждый сервер своя запись конфигурации с этим плагином: сколько серверов, столько записей. В поставке ни одна не включена, MCP подключается только явно и для каждого сервера отдельно.

  • Два транспорта. stdio — DSH сам запускает локальную программу и останавливает её вместе с плагином; streamable-http — DSH подключается к уже работающему сервису по URL. SSE не поддерживается.
  • Имена инструментов. Модель видит их как mcp__<serverName>__<tool>, например mcp__github__create_issue. Пространство имён задаёте вы в serverName, а не сервер, поэтому два сервера с инструментом search уживаются, а история сессий и правила разрешений переживают перезапуски. Та же схема имён, что у Claude Code и Codex.
  • Только инструменты. Ресурсы и промпты MCP плагин не транслирует, и это заявленное ограничение, а не недоработка конкретной версии.
  • Чистое окружение для stdio. Перед запуском дочернего процесса DSH убирает из окружения переменные, чьи имена похожи на секреты (KEY, TOKEN, SECRET, PASSWORD), и все DSH_*. Что серверу нужно — передаётся явно через env в его записи.
  • Переподключение. Если сервер упал, плагин переподключается с нарастающей задержкой от 0,5 до 30 с; инструменты остаются в списке, но вызовы падают до восстановления. После десяти неудачных попыток подряд инструменты снимаются до перезагрузки конфигурации или перезапуска.
  • Цена. Описания инструментов попадают в каждый запрос к модели, так что десяток серверов заметно утяжеляет контекст. Медленный сервер задерживает старт: тайм-ауты обнаружения наследуются от MCP SDK (60 с на запрос).

Где лежит конфигурация и как выглядит

В DSH нет отдельного файла mcp.json: серверы описываются там же, где всё остальное, в слоях конфигурации Cordis. Запись плагина выглядит так (пример из README пакета, оба транспорта):

- id: mcp-github
  name: '@deepseek-ai/dsh-mcp-client'
  config:
    serverName: github
    transport: stdio
    command: npx
    args: ['-y', '@modelcontextprotocol/server-github']
    env:
      GITHUB_TOKEN: !!js process.env.GITHUB_TOKEN

- id: mcp-web
  name: '@deepseek-ai/dsh-mcp-client'
  config:
    serverName: web
    transport: streamable-http
    url: http://localhost:3000/mcp
    headers:
      Authorization: !!js '`Bearer ${process.env.MCP_TOKEN}`'

Поля записи по README плагина:

Поле По умолчанию Значение
transportобязательноstdio или streamable-http
serverNameобязательноПространство имён инструментов: [A-Za-z0-9_-], до 32 символов, уникально в одной области регистрации
command / args / env / cwd—stdio: исполняемый файл, аргументы, переменные поверх очищенного окружения, рабочая папка
url / headers—streamable-http: адрес и дополнительные заголовки
toolCallTimeoutMs60 000Тайм-аут одного вызова инструмента
failOnStartupErrorfalseПрерывать запуск DSH, если первое подключение не удалось (иначе DSH стартует без инструментов сервера)
reconnect.*включеноenabled, initialDelayMs 500, maxDelayMs 30 000, maxAttempts 10

Исчерпывающий список полей — в генерируемом каталоге конфигурации репозитория (раздел про dsh-mcp-client).

Как подключить: пример с сервером памяти

В репозитории есть руководство «Connect a third-party memory MCP server» и три готовых оверлея в apps/cli/config/examples/mcp-memory/: Memorix, эталонный сервер памяти из проекта MCP и Engram. Все три выключены по умолчанию, и DeepSeek отдельно оговаривает, что это примеры совместимости, а не рекомендация. Для разбора я беру эталонный сервер: ему не нужны ни модель, ни сервис эмбеддингов, а значит, меньше мест, где что-то пойдёт не так.

  1. Поставьте сервер. DSH его запустит, но скачивать и инициализировать не будет, это ваша часть работы:

    npm install --global @modelcontextprotocol/server-memory@2026.7.4
  2. Посмотрите оверлей mcp-reference-memory.cordis.yml из репозитория. Это тот же формат, что выше, только обёрнутый в insert: так запись добавляется в дерево плагинов:

    - insert:
        - id: memory-mcp-reference
          name: '@deepseek-ai/dsh-mcp-client'
          config:
            serverName: reference_memory
            transport: stdio
            command: mcp-server-memory
            cwd: !!js process.cwd()
            env:
              MEMORY_FILE_PATH: !!js >-
                process.env.MEMORY_FILE_PATH?.trim() || '…/.dsh-mcp-reference-memory.jsonl'

    В оригинале путь к файлу памяти вычисляется выражением JavaScript от домашней папки, здесь я его сократил. Хранилище получается в $HOME, а не внутри пакета npm; переменная MEMORY_FILE_PATH переопределяет путь.

  3. Запустите Web UI с оверлеем на один раз (из клона репозитория путь такой; скопированный файл может лежать где угодно):

    dsh web --patch "$PWD/apps/cli/config/examples/mcp-memory/mcp-reference-memory.cordis.yml"
  4. Чтобы не передавать --patch при каждом запуске, перенесите блок insert в пользовательский слой: $DSH_HOME/profiles/web/cordis.patch.yml для одного профиля или $DSH_HOME/cordis.patch.yml для всех профилей на машине. Руководство предупреждает: не копируйте файл поверх существующего, там могут быть другие ваши патчи. Порядок слоёв (бандлы → патч профиля → домашний патч → --patch) описан в справочнике CLI и в нашей инструкции по плагинам.

Другой сервер подключается той же записью: уникальный id, свой serverName, для локальной программы — command, для удалённого сервиса — transport: streamable-http, url и headers.

Проверка

Руководство предлагает простой тест в три шага. В сессии A попросите агента запомнить какое-нибудь приметное значение («my validation drink is lapsang-…») и убедитесь, что он вызвал инструмент записи. Откройте сессию B в том же запущенном DSH, ничего из переписки не копируя, и спросите это значение, попросив заглянуть в память: агент должен вызвать поиск и вернуть его. Потом попросите использовать значение в новом ответе. Новая сессия нужна, перезапуск нет. И одна засада: первое обнаружение инструментов асинхронное, так что подождите, пока в списке появятся имена с префиксом mcp__reference_memory__, и только потом отправляйте запрос.

Если сервер не отзывается на старте, DSH всё равно запустится, а в логе будет ошибка и инструментов этого сервера не будет; failOnStartupError: true превращает это в остановку запуска. Если инструменты описаны невнятно и модель не пользуется памятью сама, руководство советует добавить в инструкции модели одну фразу: когда пользователь просит что-то запомнить — вызывать инструмент записи, когда может пригодиться история — искать в памяти.

Плагины каталога, связанные с MCP

В каталоге 192 плагинов упоминают MCP. Их два типа. Первый: панели управления. Официальный Web UI, судя по документации, экрана для MCP не имеет, и сообщество добавило свои, с формами для stdio и HTTP, импортом mcpServers из JSON других клиентов и статусом подключений.

Fishquito7

Навыки и серверы MCP в настройках Web UI: включение навыков на лету, области и группы, импорт перетаскиванием, проверка MCP-подключений и…

★ 147 ↓ 703
PerryLink

Панель наблюдения за MCP-клиентом DSH (только чтение): статус подключений, список инструментов, ошибки и число переподключений; команда…

★ 66 ↓ 7 684

Визуальное управление MCP-серверами в Web UI: добавление, удаление, включение и отключение серверов и статус подключения в разделе…

★ 19

Маркетплейс MCP-серверов с реестром из более чем 100 коннекторов: поиск, авторизация через OAuth 2.0 PKCE или API-ключ, stdio/HTTP, импорт…

★ 31 ↓ 13 722
PKUfudawei

Бережёт контекст: каталогизирует инструменты MCP и навыки, делит их на постоянные, по запросу и запрещённые, редкие вызывает через…

★ 86 ↓ 997
xiajiajun516

Бэкап, экспорт, импорт и перенос всей конфигурации DSH (настройки, плагины, MCP, навыки, рабочие области) с шифрованием секретов и…

★ 124 ↓ 11 170

Второй: готовые серверы, упакованные в бандл. Плагин привозит ту самую запись dsh-mcp-client с нужным сервером, и подключение сводится к команде установки. Есть и совсем прикладные, например поиск по российским маркетплейсам.

Q00/ouroboros

Конфигурационный бандл, монтирующий Ouroboros через MCP-клиент DSH: 36 инструментов интервью, Seed-спецификаций, выполнения, оценки и…

★ 6 082
sandbaseai

Подключает dsh к локальному рантайму SandBase Harness по stdio MCP: список агентов, сессии, потоковые ходы, артефакты и отмена задач.

★ 660
text2future/flowix

Регистрирует локальный MCP-сервер flowix-cli: агент ищет, читает, создаёт и редактирует заметки Flowix и артефакты-майндмэпы.

★ 430
Vladimir-Human/ru-marketplace-mcp

14 навыков и два MCP для 11 российских маркетплейсов: сравнение цен Wildberries, Яндекс Маркета и «Детского мира», поиск и отзывы на Ozon…

★ 116
theBigGavin

MCP-сервер рыночных данных без ключей: 5 инструментов с котировками акций Китая, Гонконга и США, секторами, фьючерсами, потоками средств и…

★ 174
ConsoleSun

MCP bridge to gemini.google.com: vision analysis of images and videos, Imagen image and Veo video generation, and conversation management…

★ 11
Установка
dsh plugin --profile web add github:ConsoleSun/Gemini-Eyes

Полные списки — в категориях «Инструменты», «Память» и «Разработка и рантайм»; как ставить и чем это рискованно — в инструкции по установке плагинов. MCP-сервер, как и плагин, — чужой код с вашими правами: stdio-сервер запускается на вашей машине вне песочницы агента.

Как это устроено у Hermes Agent

Второй продукт на этом сайте, Hermes Agent, решает ту же задачу иначе: серверы описываются блоком mcp_servers в config.yaml, а конфиг Claude Code импортируется одной командой. Если выбираете между двумя агентами, есть с чем сравнить: MCP в Hermes Agent.

Дальше