Skip to main content
Glama
enricojam-maker

mcp-google-oauth

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

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

Вы можете использовать это как справочный пример интеграции других OAuth-провайдеров с MCP-сервером, развернутым на Cloudflare, с помощью библиотеки workers-oauth-provider.

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

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

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

[!WARNING] Это демонстрационный шаблон, созданный, чтобы помочь вам быстро начать работу. Хотя мы реализовали несколько средств контроля безопасности, перед развертыванием в производственной среде вы должны реализовать все превентивные и эшелонированные меры безопасности. Пожалуйста, ознакомьтесь с нашим подробным руководством по безопасности: Securing MCP Servers

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

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

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

Создайте новое приложение Google Cloud OAuth:

  • В качестве URL домашней страницы укажите https://mcp-google-oauth.<your-subdomain>.workers.dev

  • В качестве URL обратного вызова авторизации укажите https://mcp-google-oauth.<your-subdomain>.workers.dev/callback

  • Запишите свой Client ID и создайте секрет клиента.

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

wrangler secret put GOOGLE_CLIENT_ID
wrangler secret put GOOGLE_CLIENT_SECRET
wrangler secret put COOKIE_ENCRYPTION_KEY # add any random string here e.g. openssl rand -hex 32
wrangler secret put HOSTED_DOMAIN # optional: use this when restrict google account domain

Настройка пространства имен KV

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

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

Развертывание и тестирование

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

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

npx @modelcontextprotocol/inspector@latest

Введите https://mcp-google-oauth.<your-subdomain>.workers.dev/mcp и нажмите connect. После прохождения процесса аутентификации вы увидите работающие инструменты:

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

Контроль доступа

Этот MCP-сервер использует Google Cloud OAuth для аутентификации. Все прошедшие проверку подлинности пользователи Google могут получать доступ к базовым инструментам, таким как "add". Если вы ограничиваете пользователей размещенным доменом, задайте переменную окружения HOSTED_DOMAIN.

Доступ к удаленному 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-google-oauth.<your-subdomain>.workers.dev/mcp"
      ]
    }
  }
}

Когда инструменты (под 🔨) появятся в интерфейсе, вы можете попросить Claude использовать их. Например: «Не могли бы вы использовать математический инструмент, чтобы сложить 23 и 19?». Claude должен вызвать инструмент и показать результат, сгенерированный MCP-сервером.

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

Если вы хотите итерировать и тестировать свой MCP-сервер, вы можете сделать это в локальной разработке. Для этого потребуется создать еще одно приложение OAuth в Google Cloud:

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

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

  • Запишите свой Client ID и создайте секрет клиента.

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

GOOGLE_CLIENT_ID=your_development_google_cloud_oauth_client_id
GOOGLE_CLIENT_SECRET=your_development_google_cloud_oauth_client_secret

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

Запустите сервер локально, чтобы он был доступен по адресу 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 объедините поля command и args в одно (например, npx mcp-remote https://<your-worker-name>.<your-subdomain>.workers.dev/mcp).

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

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

Related MCP server: cloudflare-mcp-google-auth

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

OAuth Provider

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

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

  • Управление подключением к службам OAuth Google Cloud

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

Durable MCP

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

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

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

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

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

MCP Remote

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

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

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

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

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

Миграция транспортного протокола

Этот пример был обновлен для поддержки нового транспортного протокола Streamable HTTP, который заменяет устаревший протокол Server-Sent Events (SSE). Теперь сервер предоставляет обе конечные точки:

  • /mcp — рекомендуется: использует новый протокол Streamable HTTP

  • /sse — устарел: устаревший протокол SSE (поддерживается для обратной совместимости)

Все новые интеграции должны использовать конечную точку /mcp. Конечная точка SSE будет удалена в будущей версии.

Related MCP Connectors

Related MCP Servers