Перейти к содержимому

Использовать MCP-сервер

Это руководство показывает, как подключить внешний MCP-клиент — Claude Code, редактор, MCP Inspector — к собственному серверу инструментов Control Center.

Control Center регистрирует 110 инструментов и предоставляет их по Model Context Protocol, версия протокола 2024-11-05. Целых семейств инструментов, которых вы могли бы ожидать, здесь нет: нет инструментов для встреч и календаря и нет инструментов для проектов.

Поверхность MCP использует общий основной слушатель cc_server. Отдельного порта MCP нет.

Эндпоинт Метод Назначение
/mcp POST Транспорт Streamable HTTP — именно на нём говорит клиент
/mcp DELETE Завершить сессию
/sse GET Поток уведомлений, отправляемых сервером

Так что локальная установка по умолчанию доступна по адресу http://127.0.0.1:9030/mcp.

  1. Откройте Настройки → Сервер → MCP-серверы
  2. Посмотрите карточку MCP-сервер — она показывает, запущен сервер или остановлен, и порт, который он слушает

На свежей установке поверхность включена по умолчанию, поэтому loopback-клиент работает без похода в настройки. Запускать при старте приложения определяет, вернётся ли она после перезапуска; Запустить / Остановить — это команды для текущей сессии, они не меняют эту настройку.

По умолчанию сервер привязывается к loopback, поэтому эндпоинт доступен только с машины, на которой работает cc_server, если только вы не запустили его с --bind any.

Направьте клиент на эндпоинт Streamable HTTP. Точная форма конфигурации — дело вашего клиента; URL в любом случае один и тот же.

{
"mcpServers": {
"control-center": {
"type": "http",
"url": "http://127.0.0.1:9030/mcp"
}
}
}

Claude Code не подхватит это из проектного .mcp.json — он ставит MCP-серверы уровня проекта за запрос на одобрение, на который неинтерактивный claude -p никогда не отвечает. Передайте конфигурацию явно:

Окно терминала
claude --mcp-config /path/to/mcp.json --strict-mcp-config

--strict-mcp-config заставляет Claude использовать только этот файл, чтобы тот же сервер не был ещё и обнаружен из проекта и зарегистрирован дважды.

Проверка: попросите клиент перечислить свои инструменты. Вы должны увидеть записи mcp__*, охватывающие тикеты, пространства, память, граф кода и проверку.

  1. В Настройки → Сервер → MCP-серверы, в строке Токен аутентификации, нажмите Задать и вставьте токен
  2. Передавайте его как Authorization: Bearer <token> в каждом запросе POST /mcp

Поверхность без токена отказывает любому вызывающему не через loopback с кодом 403. Это осознанный fail-closed: именно токен делает обслуживание вне хоста вообще возможным.

Изменения токена применяются к работающей поверхности сразу — без перезапуска.

Привязывать каждый вызов к рабочему пространству

Заголовок раздела «Привязывать каждый вызов к рабочему пространству»

Каждый инструмент, который затрагивает данные уровня рабочего пространства, требует workspace_id, и вызов без него отклоняется, а не разрешается относительно какого-то «текущего» рабочего пространства:

{
"workspace_id": "acme",
"title": "Fix login bug",
"priority": "high"
}

Этот id — тот, что в URL вашего браузера или приложения: /workspaces/<workspace_id>/…. Единственные исключения — инструменты, которые действительно охватывают несколько рабочих пространств, например list_workspaces и инструменты ленты новостей — лента новостей ведётся по пользователю, а у агента нет собственного пользователя, поэтому такие инструменты работают с лентами владельца сервера.

Инструменты уровня репозитория дополнительно проверяют, что репозиторий привязан к этому рабочему пространству.

  • Фильтрация по режиму. Вызов разрешается на стороне сервера относительно режима пространства вызывающего агента. Агент в режиме только для чтения не может дотянуться до инструмента записи, опустив space_id — вместо этого режим определяется по его активному запуску.
  • Ограничения действий. Изменяющие инструменты объявляют свои классы эффектов и проходят через ту же политику, что и остальная часть продукта. См. Настроить ограничения.
  • Подтверждение. Некоторые разрушительные инструменты формируют полезную нагрузку подтверждения, которую нужно одобрить, прежде чем вызов продолжится.

Полный каталог объявляется в tools/list без фильтрации на этапе обнаружения — внешний MCP-клиент отказывается вызывать инструмент, которого нет в его кэшированном списке, поэтому сокрытие инструментов ломает их, а не наводит порядок.

  • Проверьте, что карточка MCP-сервер показывает, что сервер запущен
  • Проверьте, что порт совпадает с портом вашего cc_server
  • В Claude Code проверьте, что вы передали --mcp-config и --strict-mcp-config

Bearer-токен не настроен. Задайте его и передавайте в запросах.

Вызов инструмента завершается ошибкой «Missing or invalid argument: workspace_id»

Заголовок раздела «Вызов инструмента завершается ошибкой «Missing or invalid argument: workspace_id»»

Добавьте workspace_id. Неявного рабочего пространства не существует.

Вызов инструмента отклоняется как неизвестный

Заголовок раздела «Вызов инструмента отклоняется как неизвестный»

Инструменты MCP перечисляет каталог. Вызывайте имя точно так, как оно там указано.