Google Calendar
Add Google Calendar as an MCP tool. The agent can list calendars, search events, create events, and run free/busy queries.
What it does
- List calendars, list/search/create/update events, check free-busy
- Multi-account and multi-calendar support
- OAuth managed by OneCLI — no raw credentials reach the container
- Per-agent-group enablement via the central DB (ncl groups config)
- Pairs cleanly with /add-gmail-tool (sibling skill, same pattern)
What you'll need
- NanoClaw installed and running
- OneCLI Agent Vault initialized (run /init-onecli first)
- Google Calendar connected in OneCLI
- calendar.readonly + calendar.events scopes (minimum)
Install
/add-gcal-tool How it works
The /add-gcal-tool skill wires @cocal/google-calendar-mcp into selected agent groups as an MCP tool. The agent gets calendar capabilities — listing calendars, searching events, creating events, free/busy queries, and so on.
The MCP server reads stub credentials at ~/.calendar-mcp/ containing the onecli-managed placeholder. OneCLI’s gateway intercepts outbound calls to calendar.googleapis.com and oauth2.googleapis.com and swaps the placeholder for the real OAuth token from its vault. Containers never receive raw API keys — that’s the v2 invariant.
Setup
Three steps, mostly automated:
- Connect Google Calendar in OneCLI. The skill checks
onecli apps get --provider google-calendarand tells you to open the OneCLI web UI (http://127.0.0.1:10254) to authorize if it isn’t already connected. - Write stub credentials at
~/.calendar-mcp/gcp-oauth.keys.jsonand~/.calendar-mcp/credentials.json— both contain theonecli-managedplaceholder. - Wire per agent group. The skill registers the calendar MCP server and the
~/.calendar-mcpmount in the central DB (ncl groups config add-mcp-serverplus acontainer_configsupdate) for each group that should have calendar access.groups/<folder>/container.jsonis materialized from the DB on every spawn, so hand-edits there don’t stick.
Then it pins CALENDAR_MCP_VERSION in the Dockerfile and rebuilds. There’s no allowlist to edit — the allow-pattern (mcp__calendar__*) is derived automatically from the group’s mcpServers registration.
What you get
The agent can call (tool names surface as mcp__calendar__<name>):
list-calendars— every calendar visible to the connected accountlist-events,search-events,get-event— read eventscreate-event,update-event,delete-event— write eventsget-freebusy— query availabilityget-current-time,list-colors— utilities
Use natural language: “What’s on my work calendar next Monday?”, “Schedule a 30-minute focus block at 2pm”, “Am I free Thursday afternoon?”.
Tips
- This skill mirrors
/add-gmail-tool. If both are installed, they share the OneCLI-managed pattern and the same Dockerfile pnpm install block — the skill detects an existing gmail install and merges into it. - Why not the gongrzhe MCP server? The earlier
@gongrzhe/server-calendar-autoauth-mcponly supports the primary calendar with 5 event-level tools. The cocal package supports multi-calendar and multi-account. - First call is 2–3 seconds while the MCP server boots and OneCLI does the token exchange. Subsequent calls are fast.
- If the agent says “I don’t have calendar tools,” the most common cause is the calendar MCP server not being registered in that group’s
mcpServers— re-run thencl groups config add-mcp-serverstep and restart, or rebuild a stale image. The skill is idempotent.