Origin MCP
Origin находится на стадии Early Beta и может измениться.
Сервер MCP Origin сейчас доступен только в Cursor и Grok Bot. Поддержка других обвязок агентов появится в ближайшее время.
Сервер 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. Сервер принимает:
- сессию пользователя Cursor — ту же, что используют настольное приложение Cursor, CLI и агенты;
- токен доступа установки Origin App (
oit_…); - подписанный JWT приложения Origin App;
- пользовательский токен установки.
Инструменты действуют от имени аутентифицированной вызывающей стороны. Каждый вызов проходит те же проверки прав доступа и ограничения частоты запросов, что и аналогичный запрос к 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, требуют одинаковых фильтров для каждой страницы.