Google Calendar MCP server¶
Google's hosted Google Calendar MCP server for the agents of a project; every user logs in with OAuth, read-only by default
| Chart | mcp-google-calendar |
| Version | 0.1.0 |
| Application version | v1 |
| Kind | MCP server |
| MCP category | productivity |
| MCP bundle | google-workspace |
| MCP server name | google-calendar |
| MCP login | oauth2 |
| Source | charts/mcp-google-calendar |
The values are listed under Values, the changes per version under Changelog.
Purpose¶
Makes Google's hosted Google Calendar MCP server (https://calendarmcp.googleapis.com/mcp/v1) available to the agents of your project as a kagent RemoteMCPServer. Nothing runs in the project: every user logs in to Google with OAuth in the agent's UI and the agent calls the server with that user's own token, so it sees exactly what the user may see. Tools: list calendars, list, search and read events, suggest a time; with write scopes also create, update, delete and answer events.
By default users grant read-only 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); write: true adds https://www.googleapis.com/auth/calendar.events, so the agent can create, change, delete and answer events.
The RemoteMCPServer carries the labels mcp.openshift.eu/server: google-calendar, mcp.openshift.eu/bundle: google-workspace, mcp.openshift.eu/category: productivity and mcp.openshift.eu/addon: "true": an add-on reaches an agent only when the agent asks for its bundle or server name (for an openhands agent, mcp.bundles: [google-workspace] or mcp.servers: [google-calendar]). Its annotations openhands.dev/auth: oauth2, openhands.dev/oauth-client and openhands.dev/oauth-scopes tell the agent how to log in. The chart mcp-bundle-google-workspace installs this server together with the other servers of the bundle and one shared OAuth client.
Install¶
helm repo add grncloud https://apps.openshift.eu
helm install google-calendar grncloud/mcp-google-calendar \
--set secrets.clientId=<client id> --set secrets.clientSecret=<client secret>
team,tenant(default: empty): Install into<tenant>-<team>instead of the release namespace.enabled(default: true): Switch of the server inside a bundle chart.nameOverride(default: empty): Name of theRemoteMCPServerand of the server in the agent UI; empty:mcp.server.url(default:https://calendarmcp.googleapis.com/mcp/v1): Address of the MCP server.scopes(default: read-only, see Purpose): OAuth scopes every user grants.write(default: false): Also grantwriteScopes.writeScopes(default: see Purpose): Scopes for writing.mcp.labelDomain(default:mcp.openshift.eu): Prefix of the selection labels.mcp.server,mcp.bundle,mcp.category(default:google-calendar,google-workspace,productivity): Values of the selection labels.mcp.addon(default: true): Label the server as an add-on; false gives it to every agent that may listRemoteMCPServerobjects here.mcp.description,mcp.icon: Description and card icon in the agent UI.oauthClient.existingSecret(default: empty): Existing Secret withclient_idandclient_secret; empty:<release>-<oauthClient.secretSuffix>, written fromsecrets.oauthClient.secretSuffix(default:oauth-client): Name suffix of the chart's own client Secret.oauthClient.create(default: true): Write that Secret; bundle charts write one shared Secret instead.secrets.type(default:kubernetes):kuberneteswrites the Secret fromsecrets.clientIdandsecrets.clientSecret(empty: no Secret, and agents skip the server until it exists);externalSecretreads them fromsecrets.externalSecret.item(username: client id, password: client secret) insecrets.externalSecret.storeName.
Delivery instructions¶
Google offers its Workspace MCP servers to members of the Google Workspace Developer Preview Program. In a Google Cloud project of your organisation (https://developers.google.com/workspace/guides/configure-mcp-servers):
- Enable the APIs and their MCP services:
gcloud services enable calendar-json.googleapis.com calendarmcp.googleapis.com --project=<project>. - Google Auth Platform > Branding: configure the consent screen, audience Internal for a Workspace organisation.
- Google Auth Platform > Data Access: add the scopes of
scopes(andwriteScopeswithwrite: true). - Google Auth Platform > Clients > Create client: type Web application, select Use this client for an AI-powered agent, and add one authorized redirect URI per agent,
https://<agent route host>/mcp-oauth/callback. - Put the client id and secret into
secrets.clientIdandsecrets.clientSecret, or into a vault item forsecrets.type: externalSecret. One client serves every Google server;mcp-bundle-google-workspaceshares it.
The agent asks Google for offline access, so a login keeps working after the first hour.
Then give the agent the server: for an openhands agent in this project set mcp.servers: [google-calendar] or mcp.bundles: [google-workspace]. The server appears switched off under Settings > MCP; each user opens it, authorizes it with their own account and switches it on. A user who removes the grant at the vendor clicks Reauthorize.
Prompt injection: an agent that reads mail or documents from strangers can be steered by them. Keep write: false unless the agent needs to write, and review what it does.