Sitelet https://cursor.com/ru/docs/api/origin/mcp#errors
Skip to main content

Command Palette

Search for a command to run...

API

Origin MCP

Сервер MCP Origin предоставляет агентам доступ к репозиториям и pull request, размещённым в Origin (origin.cursor.com). Он поддерживает просмотр репозиториев и поиск по ним, работу с коммитами и ветками, чтение и изменение pull request, ревью и комментарии, метки, ревьюеров и проверки. Инструменты видят только репозитории, размещённые в Origin; обращение к ним выполняется по пространству имён Origin (owner) и имени репозитория (name). Репозиторий, зеркалируемый в Origin, считается размещённым в нём.

Описание всех инструментов, их параметров, ограничений и возвращаемых полей см. в справочнике по инструментам.

Конечные точки

URLДоступные инструменты
https://api.origin.cursor.com/mcpВсе инструменты, доступные вызывающей стороне.
https://api.origin.cursor.com/mcp/readonlyТолько инструменты для чтения. Инструменты, выполняющие запись, скрыты, а их вызовы отклоняются.

Отправка заголовка x-mcp-readonly: true на /mcp равносильна вызову /mcp/readonly.

Транспорт

Сервер работает по MCP поверх потокового HTTP без сохранения состояния (stateless streamable HTTP):

  • Отправляйте каждое сообщение JSON-RPC отдельным HTTP-запросом POST с заголовком Content-Type: application/json. На запросы с другими методами сервер отвечает 405, а с другими типами содержимого — 415.
  • Ответы возвращаются в виде обычного JSON. Сервер не открывает потоки server-sent events и не хранит сессии, поэтому все запросы независимы друг от друга.
  • Сервер поддерживает только инструменты (capability tools): ресурсы, промпты и сэмплирование не поддерживаются.
  • Для запросов действуют ограничение по размеру и тайм-аут. На слишком большой запрос сервер отвечает 413.

Аутентификация

Передайте Bearer-токен в заголовке Authorization. Сервер принимает:

Инструменты действуют от имени аутентифицированной вызывающей стороны. Каждый вызов проходит те же проверки прав доступа и ограничения частоты запросов, что и аналогичный запрос к Origin API, поэтому инструмент может делать только то, что вызывающая сторона могла бы сделать через API. В справочнике по инструментам указаны области доступа, необходимые каждому инструменту. Сессии агентов с ограниченными областями доступа не видят инструменты, доступ к которым их области доступа заведомо не позволяют.

При ошибках аутентификации возвращается 401 (учётные данные отсутствуют или недействительны), 403 (действие не разрешено) или 503 (временно не удаётся проверить учётные данные).

Подтверждение

Инструменты, выполняющие деструктивные или труднообратимые действия (например, слияние pull request или отклонение ревью), задают _meta["cursor/requiresConfirmation"]: true в tools/list. Клиенты Cursor перед каждым вызовом такого инструмента показывают запрос на одобрение. Другие MCP-клиенты могут использовать тот же флаг или стандартную аннотацию destructiveHint, чтобы определять, когда запрашивать подтверждение у пользователя.

Ошибки

Если инструмент завершается с ошибкой, он возвращает обычный результат MCP-инструмента с isError: true. Текстовое содержимое состоит из понятного сообщения и следующего за ним ID запроса. Структурированное содержимое:

{  "data": {    "category": "not_found",    "message": "…",    "requestId": "6e0d261c-86a2-4383-89f0-9162c1c10662",    "retryAfterSeconds": 30,    "rateLimit": { "limit": "…", "remaining": "…", "reset": "…" }  }}

category принимает одно из значений: not_found, forbidden, quota_exceeded, conflict, validation_error или upstream_failure. Поля retryAfterSeconds и rateLimit присутствуют, только если вызов был отклонён из-за ограничения частоты запросов. Сообщая о проблеме, включайте в сообщение ID запроса.

При вызове неизвестных инструментов или передаче недопустимых параметров вместо результатов инструмента возвращаются ошибки JSON-RPC.

Пагинация

Инструменты получения списков принимают pageSize и pageToken и возвращают nextPageToken. Чтобы получить следующую страницу, передайте полученный nextPageToken в параметре pageToken. На последней странице это поле отсутствует. Инструменты, которые фильтруют список, например list_pull_requests, требуют одинаковых фильтров для каждой страницы.