Документация

MCP и OAuth

Read-only MCP, OAuth 2.1 и безопасные способы входа.

Read-only MCP

Публичный MCP по адресу /v1/mcp доступен без авторизации: он предоставляет инструменты search_docs и list_models. Его подключение настраивается в клиенте и не создаёт записи в кабинете.

Аккаунтный MCP по адресу /v1/mcp/account предоставляет list_models, get_account_limits и get_usage_summary только владельцу. Подключение возможно через OAuth 2.1 Authorization Code с PKCE S256 либо через один account MCP-токен, созданный в кабинете. Токен можно перевыпустить или отозвать; raw-значение показывается только один раз.

Оба варианта read-only: они не делают LLM- или VLM-inference, не работают с платежами, API-ключами, настройками аккаунта и административными действиями.

Подключение публичного MCP в ChatGPT

В ChatGPT используйте Streamable HTTP, а не STDIO. STDIO запускает команду на компьютере клиента и предназначен для локальных MCP-серверов; SimpleClaw уже опубликован как удалённый HTTP-сервер.

  1. Откройте раздел Apps или «Плагины» → MCP и выберите добавление пользовательского MCP. Для этой функции может потребоваться Developer mode и соответствующий тариф или разрешение workspace.
  2. Укажите любое понятное имя, например SimpleClaw.
  3. Выберите тип Streamable HTTP и вставьте URL Загружаем адрес….
  4. Выберите без авторизации, если интерфейс спрашивает способ входа. Не добавляйте API-ключ SimpleClaw в заголовки, переменные окружения или URL.
  5. Нажмите Scan Tools, дождитесь двух инструментов — search_docs и list_models — затем сохраните подключение.

Поля команды запуска, аргументов, переменных окружения, передачи окружения и рабочей директории оставьте пустыми: они относятся только к выбранному типу STDIO. Локальный адрес http://localhost:39003/v1/mcp в ChatGPT не подойдёт, потому что ChatGPT подключается к удалённым MCP-серверам; для закрытой сети OpenAI рекомендует Secure MCP Tunnel.

Аккаунтный MCP пока не подключается в ChatGPT самостоятельно. OAuth-вариант доступен только заранее зарегистрированным клиентам с разрешёнными server-side client_id и redirect_uri. Для других MCP-клиентов используйте выданный в кабинете account-токен mcp_… и передавайте его только как Bearer header. Публичный MCP остаётся правильным вариантом для ChatGPT в текущем релизе.

Подробности о требованиях Developer mode и Scan Tools приведены в официальной инструкции OpenAI для MCP-приложений в ChatGPT.

Доступы

Сессия — пара HttpOnly cookie кабинета. Bearer API key sc_… работает только с Provider API, а OAuth token или account MCP-токен mcp_… — только с аккаунтным MCP. Для OAuth сервер заранее разрешает client ID и redirect URI; account-токен сервер выдаёт только после явного действия владельца и не хранит в браузере.

Read-only MCP и OAuth 2.1

Публичный MCP доступен без авторизации и содержит search_docs и list_models. Аккаунтный MCP после OAuth 2.1 Authorization Code с PKCE или через один токен из кабинета открывает только свои list_models, get_account_limits и get_usage_summary. Оба варианта не выполняют LLM- или VLM-inference, платежи, админские действия или операции с API-ключами.

POST/v1/mcpПубличный MCP JSON-RPCПубличный

Доступ: Публичный

Запрос

JSON запросаПоказать
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_models",
    "arguments": {}
  }
}

Успешный ответ

JSON-RPC 2.0 через Streamable HTTP. initialize: protocolVersion 2025-06-18, simpleclaw-public. tools/list: search_docs(query 1–200), list_models. tools/call — только эти инструменты.

Для ChatGPT выберите Streamable HTTP и скопируйте URL из руководства «Подключение в ChatGPT»: он подставляется из текущего окружения. STDIO, команда запуска и API-ключ не нужны. Неизвестный метод/инструмент: -32601; неверные аргументы: -32602.

POST/v1/mcp/accountАккаунтный MCPТребуется авторизация

Доступ: OAuth или account token

Запрос

Тот же JSON-RPC. Header: Authorization: Bearer mcp_…

Успешный ответ

tools/list: list_models, get_account_limits, get_usage_summary. Только данные владельца токена.

OAuth требует scope account:read и корректную audience/resource. Account-токен создаётся в кабинете; на аккаунт может существовать только один.

GET/v1/mcp/tokenСтатус account MCP-токенаТребуется авторизация

Доступ: Сессия

Запрос

Без тела

Успешный ответ

Метаданные токена без raw-значения либо null.

Raw-значение никогда не возвращается этим endpoint-ом.

POST/v1/mcp/tokenСоздать account MCP-токенТребуется авторизация

Доступ: Сессия

Запрос

Без тела

Успешный ответ

Метаданные и raw token; значение показывается только один раз.

Если активный токен уже есть, возвращается MCP_TOKEN_EXISTS.

POST/v1/mcp/token/rotateПеревыпустить account MCP-токенТребуется авторизация

Доступ: Сессия

Запрос

Без тела

Успешный ответ

Новые метаданные и raw token.

Старый токен немедленно становится недействительным.

DELETE/v1/mcp/tokenОтозвать account MCP-токенТребуется авторизация

Доступ: Сессия

Запрос

Без тела

Успешный ответ

204 No Content.

Повторный отзыв возвращает MCP_TOKEN_NOT_FOUND.

GET/v1/mcp/oauth/authorizeПолучить OAuth codeТребуется авторизация

Доступ: Сессия

Запрос

Query: client_id, точный зарегистрированный HTTPS redirect_uri, response_type=code, code_challenge base64url 43–128, code_challenge_method=S256, scope=account:read, resource; state необязателен.

Успешный ответ

302 на redirect_uri?code=…&state=…

Code одноразовый, живёт 5 минут; resource совпадает с MCP_OAUTH_AUDIENCE.

POST/v1/mcp/oauth/tokenОбменять code на токенПубличный

Доступ: Публичный

Запрос

JSON запросаПоказать
{
  "grant_type": "authorization_code",
  "code": "…",
  "client_id": "…",
  "redirect_uri": "https://…",
  "code_verifier": "43–128 символов",
  "resource": "simpleclaw-mcp-account"
}

Успешный ответ

JSON ответаПоказать
{
  "access_token": "mcp_…",
  "token_type": "Bearer",
  "expires_in": 3600,
  "scope": "account:read",
  "resource": "simpleclaw-mcp-account"
}

Проверяются client, redirect_uri, code, audience и PKCE S256. Ошибки OAUTH_INVALID_REQUEST, OAUTH_INVALID_CLIENT, OAUTH_INVALID_GRANT.