MCP-серверы
MCP-сервер даёт агенту дополнительные инструменты, ресурсы и промпты: доступ к документации библиотек, базе данных, трекеру задач и другим сервисам. Серверы описываются в JSON-файле mcp.json.
Напишите в чате: «Подключи MCP сервер context7». Агент добавит запись в mcp.json, и сервер появится в списке /mcp.
Где описываются серверы
| Уровень | Файл |
|---|---|
| Глобальный | ~/.veai/mcp.json |
| Проектный | <проект>/.veai/mcp.json |
Оба файла необязательны. Если их нет, сессия просто стартует без MCP-серверов.
MCP-файлы других инструментов не читаются: ни <проект>/.mcp.json, ни ~/.config/mcp/mcp.json, ни ~/.agents/mcp.json.
Если раньше вы настраивали MCP в плагине Veai, его файлы mcp_servers.json в тех же каталогах .veai/ тоже читаются, но только для чтения. Новые серверы добавляйте в mcp.json. Если сервер с одним именем есть в обоих файлах, побеждает запись из mcp.json.
Формат файла
{
"mcpServers": {
"searxng": {
"command": "npx",
"args": ["-y", "mcp-searxng"],
"env": { "SEARXNG_URL": "${SEARXNG_URL}" }
},
"docs": {
"url": "https://mcp.example.com/sse",
"headers": { "Authorization": "Bearer ${DOCS_TOKEN}" }
}
}
}
Ключ — имя сервера. Локальный (stdio) сервер задаётся полем command, удалённый (HTTP) — полем url.
| Поле | Тип | Назначение |
|---|---|---|
command | строка | исполняемый файл локального сервера |
args | массив строк | аргументы команды |
env | объект строк | переменные окружения процесса сервера |
cwd | строка | рабочий каталог процесса сервера |
url | строка | адрес HTTP-сервера |
headers | объект строк | заголовки каждого запроса |
disabled | логическое | true сохраняет описание, но не запускает сервер |
excludeTools | массив строк | инструменты сервера, которые не показываются модели |
auth | { "provider": "<id>" } | передавать как Bearer-токен ключ, сохранённый через /login для указанного провайдера моделей. Только в глобальном файле |
Запись с полем неверного типа пропускается с предупреждением, остальные серверы загружаются. Если файл не является корректным JSON, серверы из него не загружаются, и агент сообщает об ошибке.
Секреты и переменные окружения
Не записывайте токены в файл — ссылайтесь на переменные окружения. В любой строке записи поддерживаются три формы: ${NAME}, $env:NAME и {env:NAME}. Например, "Bearer ${DOCS_TOKEN}".
Если переменная не задана, агент сообщает об этом для конкретного сервера и передаёт текст как есть.
Относитесь к проектному mcp.json как к коду проекта. Через ${VAR} он может передать значение переменной окружения на любой указанный в нём адрес. Не добавляйте серверы, которые отправляют секреты на непроверенный URL. Поле auth в проектном файле не работает: такой сервер не запускается, чтобы ключи провайдеров моделей не утекли на чужой адрес.
Один сервер в двух файлах
Запись в проектном файле целиком заменяет глобальную запись с тем же именем — отдельные поля не наследуются. Чтобы изменить одно поле для одного проекта, повторите всю запись.
Отключить сервер
Добавьте "disabled": true:
{ "mcpServers": { "docs": { "url": "https://mcp.example.com/sse", "disabled": true } } }
Описание остаётся в файле, и сервер можно снова включить, не вводя его заново.
Скрыть отдельные инструменты
Перечислите инструменты в excludeTools:
{ "mcpServers": { "docs": { "url": "…", "excludeTools": ["delete_page", "admin_*"] } } }
Подходит как имя инструмента (delete_page), так и имя с префиксом сервера (docs_delete_page). Поддерживаются шаблоны * и ?.
Команда /mcp
Команда /mcp в терминале показывает серверы, их статус и инструменты. В ней можно включить или выключить сервер или отдельный инструмент — команда записывает те же поля disabled и excludeTools.
Когда изменения вступают в силу
Конфигурация читается один раз при старте сессии. Правка файла не влияет на уже запущенную сессию: начните новую или примените изменения через /mcp — экран сам перезапускает MCP.
Сервер, который не смог подключиться, не ломает сессию: он остаётся в списке со статусом ошибки, остальные серверы работают.