---
title: "OAuth для MCP"
description: "Discovery, PKCE, токены и отзыв доступа."
group: "Техническая документация"
order: 23
---

## Адреса этого стенда

- Документация: https://context4.me/docs.md
- Индекс для агента: https://context4.me/docs/agent-index.json
- Консоль и подключения: https://console.context4.me/integrations
- MCP: https://context4.me/mcp
- HTTP API: https://context4.me/v1
- Composio base URL: https://context4.me/compat/context4/v1
- OpenAPI: https://context4.me/docs/openapi.json
- Каталог HTTP/MCP: https://context4.me/docs/api-index.json
- Маршруты Composio: https://context4.me/docs/compat-routes.json
- Коннекторы: https://context4.me/docs/connectors.json


# OAuth для MCP

## Адреса этого стенда

- MCP resource: `https://context4.me/mcp`.
- [Discovery ресурса](https://context4.me/.well-known/oauth-protected-resource/mcp).
- [Discovery OAuth](https://context4.me/.well-known/oauth-authorization-server).

Полные адреса authorize, token, register и revoke берите из discovery этого стенда. Consent и provider authorization URLs возвращает сервер: не собирайте их вручную из примеров.

## Публичные маршруты

| Метод и путь | Назначение | Вход и результат |
| --- | --- | --- |
| `GET https://context4.me/.well-known/oauth-protected-resource/mcp` | Discovery ресурса | Metadata с authorization server и MCP resource |
| `GET https://context4.me/.well-known/oauth-authorization-server` | Discovery OAuth | Endpoint URLs, scope и поддерживаемые grants |
| `POST https://context4.me/oauth/register` | Регистрация клиента | JSON с redirect URIs; client id, public client без секрета |
| `GET https://context4.me/oauth/authorize` | Начало authorization code | Query `client_id`, `redirect_uri`, `response_type=code`, `scope=mcp:tools`, `resource`, `code_challenge`, `code_challenge_method=S256`, `state`; браузерный redirect |
| `GET https://context4.me/oauth/consent` | Страница подтверждения | Продолжение браузерного consent в выбранном workspace |
| `POST https://context4.me/oauth/token` | Code exchange и refresh | Form-urlencoded; токены и срок действия |
| `POST https://context4.me/oauth/revoke` | Отзыв семейства токенов | Form-urlencoded `token`: access или refresh token |
| `POST https://context4.me/mcp`, `GET https://context4.me/mcp`, `DELETE https://context4.me/mcp` | MCP resource | MCP messages и lifecycle, bearer access token |

Клиент строит URLs по discovery. Не придумывайте authorization URL из примера. Resource этого стенда — `https://context4.me/mcp`; для публичного клиента требуется доступный HTTPS. Public client использует `token_endpoint_auth_method=none` и PKCE S256.

## Регистрация и redirect

Redirect URI должен точно совпадать с зарегистрированным. Разрешены HTTPS и callback на loopback native-клиента. Wildcard, fragment, credentials в URL и HTTP вне loopback отклоняются. Публичный MCP resource должен иметь стабильный HTTPS адрес.

## Обмен кода

При `grant_type=authorization_code` нужны `code`, `client_id`, `redirect_uri`, `code_verifier`, `resource`. Code verifier — строка 43–128 символов. Код одноразовый, срок — пять минут. При `grant_type=refresh_token` нужны `refresh_token`, `client_id`, `resource`.

Access token непрозрачный, срок — 15 минут. Refresh token меняется при обновлении; срок family — 30 дней. Повтор использованного refresh token отзывает family. Храните свежий refresh token атомарно.

OAuth-ошибки используют `{error, error_description}`, а не общий Problem API; token-ответы не кэшируются. Ошибку consent или code exchange нельзя обходить повтором provider-записи.

## Что разрешает grant

Grant даёт MCP-доступ к workspace, сохраняя действующие права и ограничения. Он не создаёт новый аккаунт провайдера. Существующее активное подключение может переиспользоваться; при нескольких агент просит выбрать.

Каждый OAuth MCP-запрос проверяет актуальное membership и workspace. Отзыв токена, удаление участника, изменение его membership epoch, архивирование workspace и истечение grant прекращают доступ. Отзыв MCP OAuth не равен отзыву provider credentials: [раздел доступа](https://context4.me/docs/access-and-disconnect.md).
