Google Calendar MCP OAuth Proxy
Google Calendar MCP OAuth-прокси
Этот Worker выступает в роли OAuth-границы между MCP-клиентом, таким как Codex, и официальным Calendar MCP от Google.
Codex / MCP client
|
| OAuth to this Worker
v
Cloudflare OAuth Provider
|
| Google OAuth (client ID + client secret)
v
Google OAuth
|
| Google access token
v
Google Calendar MCP
https://calendarmcp.googleapis.com/mcp/v1Клиент никогда не получает OAuth-клиентский секрет Google. Access- и refresh-токены Google хранятся в зашифрованных свойствах OAuth-grant, управляемых Cloudflare OAuth-провайдером. Защищённый обработчик /mcp перед передачей MCP-трафика наверх заменяет локальный bearer-токен клиента на Google access-токен пользователя.
Области Google
В wrangler.jsonc области Google Calendar задаются в переменной GOOGLE_OAUTH_SCOPES:
https://www.googleapis.com/auth/calendar.calendarlist.readonly
https://www.googleapis.com/auth/calendar.events.freebusy
https://www.googleapis.com/auth/calendar.events.readonly
https://www.googleapis.com/auth/calendar.calendarsWorker автоматически добавляет email profile, потому что при обратном вызове для идентификации авторизованного пользователя используется user-info endpoint Google.
В запросе авторизации Google также используются параметры access_type=offline и prompt=consent, чтобы Google возвращал refresh-токен.
Related MCP server: google-mcp-server
Локальные секреты
Скопируйте файл-пример:
cp .dev.vars.example .dev.varsЗадайте:
GOOGLE_CLIENT_ID=<Google OAuth web client ID>
GOOGLE_CLIENT_SECRET=<Google OAuth client secret>
COOKIE_ENCRYPTION_KEY=<strong random secret>
HOSTED_DOMAIN=<optional Google Workspace domain restriction>GOOGLE_OAUTH_SCOPES и GOOGLE_MCP_URL — это несекретные переменные Worker в wrangler.jsonc.
OAuth-клиент Google Cloud
Используйте OAuth-клиент Google типа веб-приложение.
Авторизованный redirect URI должен быть публичным именем хоста этого Worker или туннеля с добавлением /callback:
https://mcp-auth.example.com/callbackДобавьте указанные выше области Calendar в конфигурацию согласия и доступа к данным Google Auth Platform.
Локальный запуск
Установите зависимости и сгенерируйте типы Worker:
npm install
npm run cf-typegenЗапустите Wrangler локально на порту 5555:
npm run devЛокальный endpoint:
http://localhost:5555/mcpOAuth requires public HTTPS callback, поэтому для полного локального тестирования используйте Cloudflare Tunnel.
Stable named tunnel
Стабильное имя хоста предпочтительно, потому что один и тот же callback должен быть зарегистрирован в Google Cloud.
npx wrangler dev --tunnel-name=mcp-google-auth --tunnelНастройте имя хоста именованного туннеля так, чтобы оно вело на разработочённый сервер Wrangler. Например:
https://mcp-auth.example.com -> local Wrangler dev serverЗатем укажите:
https://mcp-auth.example.com/callbackв качестве redirect URI для Google OAuth.
URL MCP, который видит Codex:
https://mcp-auth.example.com/mcpКонфигурация Codex
Поскольку для Codex этот Worker является OAuth-сервером авторизации, Codex не нужен Google client ID или Google client secret.
[mcp_servers.google_calendar_proxy]
enabled = true
url = "https://mcp-auth.example.com/mcp"
auth = "oauth"Затем выполните аутентификацию:
codex mcp login google_calendar_proxyОжидаемый процесс:
Codex обнаруживает OAuth-эндпоинты этого Worker.
Codex регистрируется на этом Worker или проходит аутентификацию.
Worker перенаправляет браузер в Google.
Google возвращается на
/callbackна Worker/туннеле.Worker обменивает код авторизации Google на токены, используя
GOOGLE_CLIENT_SECRET.Codex получает OAuth-токен, выпущенный Worker.
Вызовы
/mcpперенаправляются в официальный Calendar MCP Google с использованием Google access-токена пользователя.
Поведение при обновлении токенов
Google refresh-токен сохраняется в зашифрованных свойствах OAuth-grant. Прокси хранит ограниченный LRU-кэш Google access-токенов, локальный для изолята, удаляет записи при наступлении окна обновления и ограничивает кэш 100 пользователями. Если сохранённый access-токен истёк или Google MCP возвращает 401, Worker использует Google refresh-токен и клиентский секрет на стороне Worker, чтобы выпустить новый Google access-токен, и повторяет запрос один раз.
Кэш в памяти — лишь оптимизация. Новый изоляnированный Worker в любой момент может выполнить обновление из зашифрованных свойств grant.
Устаревшие гранты
OAuth-гранты, созданные до появления поддержки refresh-токенов, содержат только исходный Google access-токен и метаданные пользователя. Прокси обнаруживает такие гранты и продолжает использовать их существующий access-токен, пока Google его принимает. Когда Google отклоняет этот токен, Worker возвращает 401 invalid_token, чтобы подключение MCP можно было авторизовать заново, а не пытаться выполнить обновление с отсутствующими учётными данными.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables authentication and authorization with Google's OAuth2 API, allowing users to securely authenticate and access Google services through natural language interactions.
- AlicenseNot gradedqualityDmaintenanceMCP Server for Google Services, with the ability to define your own scopes and bring your own oauth key.3MIT
- FlicenseNot gradedqualityDmaintenanceEnables seamless Google Calendar integration with MCP-compatible clients, allowing creation, viewing, updating, and deletion of calendar events via OAuth 2.0 authentication.
- AlicenseNot gradedqualityCmaintenanceEnables access to Google Workspace services (Calendar, Gmail, Drive, Tasks) via an MCP server deployed on Vercel.1,226MIT
Related MCP Connectors
Streamable HTTP MCP server for Google Calendar and Sheets with OAuth login.
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Self-hosted federated MCP gateway: one OAuth 2.1 MCP server in front of N apps, user-level scopes.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/REVREBEL/cloudflare-mcp-google-auth'
If you have feedback or need assistance with the MCP directory API, please join our Discord server