Skip to main content
Glama
vorticmateja

mcp-access-oauth

by vorticmateja

Сервер MCP (Model Context Protocol) + OAuth через Access

Это сервер Model Context Protocol (MCP), который поддерживает удалённые MCP-подключения со встроенной OAuth-аутентификацией через Access.

Вы можете развернуть его в собственном аккаунте Cloudflare, и после создания собственного OIDC-приложения Access for SaaS у вас будет полнофункциональный удалённый MCP-сервер, на основе которого можно строить свои решения. Пользователи смогут подключаться к вашему MCP-серверу, входя через ваш подключённый Identity Provider в Access.

Сервер MCP (на базе Cloudflare Workers):

  • Выступает в роли OAuth-сервера для ваших MCP-клиентов

  • Выступает в роли OAuth-клиента по отношению к вашему настоящему OAuth-серверу (в данном случае — Access)

Начало работы

Клонируйте репозиторий и установите зависимости: npm install

Для продакшена

Создайте новое OIDC-приложение Access for SaaS:

  • Для URL обратного вызова авторизации укажите https://mcp-access-oauth.<ваш-поддомен>.workers.dev/callback, а для локальной разработки — http://localhost:8788/callback.

  • Запишите ваш Client ID и Client secret.

  • Задайте секреты через Wrangler

wrangler secret put ACCESS_CLIENT_ID
wrangler secret put ACCESS_CLIENT_SECRET
wrangler secret put ACCESS_TOKEN_URL
wrangler secret put ACCESS_AUTHORIZATION_URL
wrangler secret put ACCESS_JWKS_URL
wrangler secret put COOKIE_ENCRYPTION_KEY # add any random string here e.g. openssl rand -hex 32

Создайте пространство имён KV

  • Создайте пространство имён KV: wrangler kv:namespace create "OAUTH_KV"

  • Обновите файл Wrangler, указав полученный KV ID

Разверните и протестируйте

Разверните MCP-сервер, чтобы он стал доступен в вашем домене workers.dev: wrangler deploy

Протестируйте удалённый сервер с помощью Inspector:

npx @modelcontextprotocol/inspector@latest

Введите https://mcp-access-oauth.<ваш-поддомен>.workers.dev/mcp и нажмите Connect. После прохождения процесса аутентификации вы увидите, что инструменты работают:

Теперь у вас развёрнут удалённый MCP-сервер!

Управление доступом

Этот MCP-сервер использует Access для аутентификации. Все аутентифицированные пользователи Access могут использовать базовые инструменты, такие как "add".

Инструмент "generateImage" ограничен и доступен только тем пользователям Access, которые указаны в конфигурации ALLOWED_USERNAMES:

// Add user emails for image generation access
const ALLOWED_EMAILS = new Set(["employee1@mycompany.com", "teammate1@mycompany.com"]);

Подключение к удалённому MCP-серверу из Claude Desktop

Откройте Claude Desktop и перейдите в Settings -> Developer -> Edit Config. Откроется файл конфигурации, который управляет тем, к каким MCP-серверам Claude может подключаться.

Замените содержимое файла следующей конфигурацией. После перезапуска Claude Desktop откроется окно браузера со страницей входа в OAuth. Завершите процесс аутентификации, чтобы предоставить Claude доступ к вашему MCP-серверу. После предоставления доступа инструменты станут доступны для использования.

{
  "mcpServers": {
    "math": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp-access-oauth.<your-subdomain>.workers.dev/mcp"
      ]
    }
  }
}

Когда инструменты (под 🔨) появятся в интерфейсе, вы можете попросить Claude использовать их. Например: "Could you use the math tool to add 23 and 19?". Claude вызовет инструмент и покажет результат, полученный от MCP-сервера.

Для локальной разработки

Если вы хотите итерировать и тестировать ваш MCP-сервер, вы можете делать это в локальной разработке.

  • Для URL домашней страницы укажите http://localhost:8788

  • Для URL обратного вызова авторизации укажите http://localhost:8788/callback

  • Запишите ваш Client ID и сгенерируйте Client secret.

  • Создайте файл .dev.vars в корне проекта со следующим содержимым:

ACCESS_CLIENT_ID=<your client id>
ACCESS_CLIENT_SECRET=<your client secret>
ACCESS_TOKEN_URL=<your Access for SaaS token url>
ACCESS_AUTHORIZATION_URL=<your Access for SaaS authorization url>
ACCESS_JWKS_URL=<your Access for SaaS JWKS url>
COOKIE_ENCRYPTION_KEY=COOKIE_ENCRYPTION_KEY

Разработка и тестирование

Запустите сервер локально, чтобы он был доступен по адресу http://localhost:8788: wrangler dev

Чтобы протестировать локальный сервер, введите http://localhost:8788/mcp в Inspector и нажмите Connect. После прохождения подсказок вы сможете использовать "List Tools".

Использование с Claude и другими MCP-клиентами

При использовании Claude для подключения к вашему удалённому MCP-серверу вы можете увидеть сообщения об ошибках. Это связано с тем, что Claude Desktop пока не поддерживает удалённые MCP-серверы, поэтому иногда возникает путаница. Чтобы проверить, подключён ли MCP-сервер, наведите курсор на значок 🔨 в правом нижнем углу интерфейса Claude. Вы должны увидеть доступные инструменты.

Использование с Cursor и другими MCP-клиентами

Чтобы подключить Cursor к вашему MCP-серверу, выберите Type: "Command" и в поле Command объедините команду и аргументы в одну строку (например, npx mcp-remote https://<имя-вашего-воркера>.<ваш-поддомен>.workers.dev/mcp).

Обратите внимание: хотя Cursor поддерживает HTTP+SSE серверы, он не поддерживает аутентификацию, поэтому вам всё равно потребуется использовать mcp-remote (а также использовать STDIO-сервер, а не HTTP).

Вы можете подключить ваш MCP-сервер к другим MCP-клиентам, например Windsurf, открыв файл конфигурации клиента, добавив туда тот же JSON, который использовался для настройки Claude, и перезапустив MCP-клиент.

Related MCP server: cloudflare-mcp-google-auth

Как это работает?

OAuth-провайдер

Библиотека OAuth Provider служит полноценной реализацией сервера OAuth 2.1 для Cloudflare Workers. Она берёт на себя все сложности OAuth-потока, включая выпуск токенов, их проверку и управление. В этом проекте она выполняет двойную роль:

  • Аутентифицирует MCP-клиентов, подключающихся к вашему серверу

  • Управляет подключением к OAuth-сервисам Access

  • Безопасно хранит токены и состояние аутентификации в хранилище KV

Durable MCP

Durable MCP расширяет базовую функциональность MCP с помощью Durable Objects от Cloudflare, предоставляя:

  • Постоянное управление состоянием для вашего MCP-сервера

  • Безопасное хранение контекста аутентификации между запросами

  • Доступ к информации об аутентифицированном пользователе через this.props

  • Поддержку условной доступности инструментов в зависимости от identity пользователя

MCP Remote

Библиотека MCP Remote позволяет вашему серверу предоставлять инструменты, которые могут вызывать MCP-клиенты, такие как Inspector. Она:

  • Определяет протокол взаимодействия между клиентами и вашим сервером

  • Предоставляет структурированный способ определения инструментов

  • Обрабатывает сериализацию и десериализацию запросов и ответов

  • Поддерживает постоянное соединение Server-Sent Events (SSE) между клиентами и сервером

Related MCP Connectors

Related MCP Servers