{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_pza9zf3vvbn2","handle":"gcal-mcp-remote-ldraney","url":"https://wellknown.network/agents/gcal-mcp-remote-ldraney","links":{"self":"https://wellknown.network/agents/gcal-mcp-remote-ldraney/record.json","html":"https://wellknown.network/agents/gcal-mcp-remote-ldraney","markdown":"https://wellknown.network/agents/gcal-mcp-remote-ldraney/record.md","api":"https://wellknown.network/api/v1/agents/gcal-mcp-remote-ldraney","status":"https://wellknown.network/api/v1/agents/gcal-mcp-remote-ldraney/status","claim":"https://wellknown.network/agents/gcal-mcp-remote-ldraney/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/gcal-mcp-remote-ldraney/claim.json","badge":"https://wellknown.network/agents/gcal-mcp-remote-ldraney/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air::server:gcal-mcp-remote-ldraney","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"gcal-mcp-remote-ldraney","summary":"Remote MCP connector wrapping gcal-mcp with Google OAuth 2.0 over Streamable HTTP","description":"[![PyPI](https://img.shields.io/pypi/v/gcal-mcp-remote-ldraney)](https://pypi.org/project/gcal-mcp-remote-ldraney/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n\n# gcal-mcp-remote\n\nRemote MCP server wrapping [gcal-mcp](https://github.com/ldraney/gcal-mcp) with Google OAuth 2.0 and Streamable HTTP transport — designed for Claude.ai connectors.\n\n## How it works\n\n```\nClaude.ai ──HTTP+Bearer──> gcal-mcp-remote ──Google API──> Google Calendar\n                                │\n                          imports gcal-mcp's FastMCP (all 14 tools)\n                          patches get_client() with per-request ContextVar\n                          adds Google OAuth + /health + /oauth/callback\n```\n\nThree-party OAuth: Claude ↔ this server ↔ Google. Each user authorizes their own Google Calendar via OAuth. The server stores per-user Google refresh tokens (encrypted at rest).\n\n## Prerequisites\n\n1. A **Web application** OAuth client in [Google Cloud Console](https://console.cloud.google.com/apis/credentials):\n   - Create Credentials → OAuth client ID → Type: **Web application**\n   - Add authorized redirect URI: `{BASE_URL}/oauth/callback`\n   - Note the Client ID and Client Secret\n2. Google Calendar API enabled in the same project\n\n## Setup\n\n```bash\ngit clone https://github.com/ldraney/gcal-mcp-remote.git\ncd gcal-mcp-remote\ncp .env.example .env\n# Edit .env with your Google OAuth credentials, BASE_URL, and SESSION_SECRET\nmake install\nmake run\n```\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `GCAL_OAUTH_CLIENT_ID` | Google OAuth Web application client ID |\n| `GCAL_OAUTH_CLIENT_SECRET` | Google OAuth Web application client secret |\n| `SESSION_SECRET` | Random secret for encrypting token store |\n| `BASE_URL` | Public HTTPS URL where this server is reachable |\n| `HOST` | Bind address …","publisher":{"name":"Lucas Draney","url":null},"homepage":null,"repository":"https://github.com/ldraney/gcal-mcp-remote/issues","version":"0.2.0","license":null,"protocols":["mcp"],"tags":["google-calendar","mcp","oauth","remote","claude","ai"],"pricing":null,"endpoints":[{"url":"pypi:gcal-mcp-remote-ldraney","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"declared"},{"slug":"dev.version-control","name":"Version Control","confidence":0.745,"provenance":"derived"}],"categories":["dev","productivity","security"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"gcal-mcp-remote-ldraney","registry":"pypi","observedAt":"2026-09-09T16:25:17.460Z","publishedAt":"2026-02-20T21:15:05.614980Z","latestVersion":"0.2.0"}},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"gcal-mcp-remote-ldraney","url":"https://pypi.org/project/gcal-mcp-remote-ldraney/","firstSeenAt":"2026-09-09T16:23:22.479Z","fetchedAt":"2026-09-09T16:23:22.479Z","normalizedAt":"2026-09-09T16:23:22.479Z"}]},"firstSeenAt":"2026-09-09T16:23:22.479Z","updatedAt":"2026-09-09T16:25:17.460Z"}