Google Calendar MCP OAuth Proxy
Google Calendar MCP OAuth Proxy
Este Worker actúa como el límite de OAuth entre un cliente MCP como Codex y el MCP oficial de Calendar de 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/v1El cliente nunca recibe el secreto de cliente OAuth de Google. Los datos confidenciales y tokens de refresh de Google se almacenan en las propiedades cifradas de la concesión OAuth gestionadas por el proveedor de OAuth de Cloudflare. El manejador protegido /mcp reemplaza el token Bearer local del cliente por el token de acceso de Google del usuario antes de reenviar el tráfico MCP al destino.
Ámbitos de Google Calendar
wrangler.jsonc define los ámbitos de Calendar de Google en 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.calendarsEl worker añade automáticamente email profile porque el callback usa el endpoint de información de usuario de Google para identificar al usuario autorizado.
La solicitud de autorización de Google también utiliza access_type=offline y prompt=consent para que Google devuelva un token de actualización.
Related MCP server: google-mcp-server
Secretos locales
Copia el archivo de ejemplo:
cp .dev.vars.example .dev.varsEstablece:
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 y GOOGLE_MCP_URL son variables de worker no secretas en wrangler.jsonc.
Cliente OAuth de Google Cloud
Usa un cliente de aplicación web de OAuth de Google.
El URI de redirección autorizado debe ser el nombre de host público de este Worker o túnel más /callback:
https://mcp-auth.example.com/callbackAñade los ámbitos de Calendar listados anteriormente a la configuración de consentimiento/acceso a datos de Google Auth Platform.
Ejecutar localmente
Instala las dependencias y genera los tipos del Worker:
npm install
npm run cf-typegenInicia Wrangler localmente en el puerto 5555:
npm run devEl endpoint local es:
http://localhost:5555/mcpOAuth requiere un callback HTTPS público, así que para pruebas locales de extremo a extremo usa un Cloudflare Tunnel.
Túnel con nombre estable
Un nombre de host estable es preferible porque el mismo callback debe registrarse en Google Cloud.
npx wrangler dev --tunnel-name=mcp-google-auth --tunnelConfigura el nombre de host del túnel con nombre para que apunte al servidor de desarrollo de Wrangler. Por ejemplo:
https://mcp-auth.example.com -> local Wrangler dev serverLuego registra:
https://mcp-auth.example.com/callbackcomo el URI de redirección de OAuth de Google.
La URL MCP expuesta a Codex es:
https://mcp-auth.example.com/mcpConfiguración de Codex
Como este Worker es el servidor de autorización OAuth que ve Codex, Codex no necesita el ID de cliente de Google ni el secreto de cliente de Google.
[mcp_servers.google_calendar_proxy]
enabled = true
url = "https://mcp-auth.example.com/mcp"
auth = "oauth"Luego autentícate:
codex mcp login google_calendar_proxyEl flujo esperado es:
Codex descubre los endpoints del OAuth de este Worker.
Codex se registra/autentica con este Worker.
El Worker envía el navegador a Google.
Google redirige a
/callbacken el Worker/túnel.El Worker intercambia el código de autorización de Google usando
GOOGLE_CLIENT_SECRET.Codex recibe un token OAuth emitido por el Worker.
Las llamadas a
/mcpse reenvían al MCP oficial de Calendar de Google usando el token de acceso de Google del usuario.
Comportamiento de emisión de tokens de refresh
El token de refresh de Google se retiene en las props cifradas de la concesión de OAuth. El proxy mantiene una caché LRU acotada y local al isolate con los tokens de acceso de Google, elimina las entradas cuando alcanzan la ventana de refresh y limita la caché a 100 usuarios. Si el token de acceso almacenado caduca, o si el MCP de Google devuelve 401, el Worker usa el token de refresh de Google junto con el secreto de cliente del lado del Worker para generar un nuevo token de acceso de Google y reintentar una vez.
La memoria caché en memoria es solo una optimización. Un nuevo isolate del Worker siempre puede actualizar desde las tiendas cifradas de la concesión.
Protocolos heredados
Las concesiones de OAuth creadas antes de permitir el token de refresh contienen solo el token de acceso original de Google y los metadatos del usuario. El proxy detecta estas concesiones y continúa usando su token de acceso existente mientras Google lo acepta. Cuando Google rechaza ese token, el Worker devuelve 401 invalid_token para que la conexión MCP pueda ser reautorizada en lugar de intentar actualizar con credenciales faltantes.
This server cannot be deployed
Maintenance
Related MCP Connectors
Streamable HTTP MCP server for Google Calendar and Sheets with OAuth login.
Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
OAuth MCP for Google, Meta, X, LinkedIn, Reddit, TikTok, GSC, GA4, WordPress and GHL.
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 gradedqualityBmaintenanceMCP 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.-
- FlicenseNot gradedqualityDmaintenanceEnables multi-user access to Google Workspace services (Gmail, Calendar, Docs, Sheets, Slides, Drive) via remote MCP with OAuth 2.1 authentication.-