Google Calendar Streamable
FreeNot checkedMCP Server for interacting with Google Calendar. Written in TypeScript, Node and Hono.dev
About
MCP Server for interacting with Google Calendar. Written in TypeScript, Node and Hono.dev
README
Fetch-native MCP server for listing calendars, searching and mutating events, responding to invitations, and checking Google Calendar availability. It runs on Bun and Cloudflare Workers and retains the project-specific Google OAuth proxy.
This repository targets the prerelease
2026-07-28MCP candidate with@modelcontextprotocol/[email protected]. It does not claim final conformance until the dated specification and stable packages are published and verified.
Tools
list_calendarssearch_eventscheck_availabilitycreate_eventupdate_eventdelete_eventrespond_to_event
Existing all-calendar search, local substring matching, event-ID normalization, mutation fallback, free/busy behavior, Google Meet creation, and structured/natural-language event creation are preserved. Every tool advertises a complete Zod 4 input and output schema.
Local setup
- Enable Google Calendar API in Google Cloud.
- Create a Web OAuth client.
- Register
http://127.0.0.1:3001/oauth/callbackas a redirect URI. - Configure and start:
bun install
cp env.example .env
# Set PROVIDER_CLIENT_ID, PROVIDER_CLIENT_SECRET, and RS_TOKENS_ENC_KEY.
bun run dev
Local endpoints:
- MCP Resource Server:
http://127.0.0.1:3000/mcp - OAuth proxy:
http://127.0.0.1:3001
Credential model
Three credentials remain separate:
- MCP resource token — the opaque bearer token accepted by
/mcp. - Google access token — resolved from storage, refreshed when necessary, and exposed to a fresh server only as
AuthInfo.extra.providerAccessToken. - Google refresh token — remains encrypted in file/KV storage and never enters MCP tool context.
Tools never read or forward authInfo.token. Token-separation tests use visibly different MCP and Google tokens and assert that only the Google token reaches the provider mock.
OAuth proxy
The active proxy retains PKCE authorization, callback exchange, refresh, revocation, registration, redirect allowlists, and RS-to-Google token mappings.
Discovery endpoints:
/.well-known/oauth-protected-resource/mcp/.well-known/oauth-authorization-server
Proxy endpoints:
GET /authorizeGET /oauth/callbackPOST /tokenPOST /revokePOST /register
On Bun the proxy runs at OAUTH_ISSUER_URL (port 3001 by default). On Workers it is mounted outside /mcp on the same isolate.
Cloudflare Workers
Create KV and update its ID in wrangler.jsonc:
bun run kv:create
bun x wrangler secret put PROVIDER_CLIENT_ID --config wrangler.jsonc
bun x wrangler secret put PROVIDER_CLIENT_SECRET --config wrangler.jsonc
bun x wrangler secret put RS_TOKENS_ENC_KEY --config wrangler.jsonc
bun run deploy
Before deployment, set HTTPS values for MCP_PUBLIC_URL, OAUTH_ISSUER_URL, OAUTH_REDIRECT_URI, Host/Origin allowlists, and the Google redirect URI. RS_TOKENS_ENC_KEY must be a base64url-encoded 32-byte key.
Protocol and HTTP behavior
- One deployment-scoped fetch handler and a fresh
McpServerper request - Modern protocol pinned to candidate
2026-07-28 - SDK stateless fallback for legacy
2025-11-25clients GET /mcpandDELETE /mcpreturn405; no MCP session storage is used- SDK-owned negotiation, header mismatch, cancellation, and transport errors
- Bounded MCP request bodies, strict Host/Origin checks, and allowlisted CORS headers
- Missing/invalid resource tokens return
401; missing Google scopes return403
Validate
bun test
bun run typecheck
bun run lint
bun run format:check
bun run build
bun run build:worker
bun run types:worker:check
Provider tests use mocks. A live OAuth flow requires Google credentials, user consent, and redirect URIs configured in Google Cloud.
License
MIT
from github.com/iceener/google-calendar-streamable-mcp-server
Installing Google Calendar Streamable
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/iceener/google-calendar-streamable-mcp-serverFAQ
Is Google Calendar Streamable MCP free?
Yes, Google Calendar Streamable MCP is free — one-click install via Unyly at no cost.
Does Google Calendar Streamable need an API key?
No, Google Calendar Streamable runs without API keys or environment variables.
Is Google Calendar Streamable hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Google Calendar Streamable in Claude Desktop, Claude Code or Cursor?
Open Google Calendar Streamable on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Notion
Read and write pages in your workspace
by NotionLinear
Issues, cycles, triage — from Claude
by LinearGoogle Drive
Search and read your Drive files
by Googlemindsdb/mindsdb
Connect and unify data across various platforms and databases with [MindsDB as a single MCP server](https://docs.mindsdb.com/mcp/overview).
by mindsdbCompare Google Calendar Streamable with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All productivity MCPs
