ZeroHrs MCP server
OfficialThis server lets Codex access your own ZeroHrs data through local, user-scoped MCP tools after a hosted login.
Authentication:
loginopens a private browser sign-in and saves a local session;disconnectremoves it.Search:
search_zerosearches meetings, tasks, transcript speaker blocks, contacts, prep notes, and morning briefs.Meetings:
list_meetings,get_meeting_prep, andadd_meeting_prep_notelet you find meetings and view or add private prep notes.Transcripts:
list_transcripts,search_transcripts, andget_transcriptretrieve transcript summaries without loading full bodies, with optional task and speaker-block context.Tasks:
list_tasks,get_task,create_task, andupdate_tasklet you view, create, and modify tasks.Safeguards: Write actions require explicit user requests and approval; potentially unsafe or excluded tools are intentionally not exposed.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ZeroHrs MCP server List my meetings and prep notes for tomorrow"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ZeroHrs MCP server
This public local MCP server gives Codex access to the signed-in user's Zero data through the same user-scoped API paths used by Zero's OpenClaw agent.
For a shareable, agent-oriented installation guide, see INSTALL.md.
Install in Codex
Requires Node.js 20 or newer. Inspect any existing zerohrs entry before replacing it, then install the pinned public release:
codex mcp add zerohrs -- npx -y github:ZeroHrs-Org/zerohrs-mcp#v0.3.0Set default_tools_approval_mode = "writes" for this server in ~/.codex/config.toml, restart Codex, and call the login tool with no arguments.
Related MCP server: SceneBoard MCP for Codex
OpenClaw-compatible tools
The MCP includes these names from Zero's OpenClaw agent:
search_zerosearch_contactsadd_contactget_meetingsget_transcriptsget_meeting_transcript_by_idget_user_owned_taskscreate_user_owned_taskinsert_prep_notes_for_meetingreplace_generated_prep_notes_for_meetingschedule_meeting_botget_morning_brief_by_date
It also keeps these focused MCP convenience tools:
list_meetingslist_transcriptssearch_transcriptsget_transcriptlist_tasksget_taskget_meeting_prepcreate_taskupdate_taskadd_meeting_prep_note
The remaining tools are login and disconnect, for a total of 24.
Codex asks for approval before writes and external actions. schedule_meeting_bot is an external action and should only run after an explicit user request. add_contact may update an existing contact with the same email, update_task overwrites selected task fields, and generated-prep replacement removes the prior generated notes before saving the replacement. The server intentionally excludes email, messaging, transcript sharing, direct record-deletion tools, onboarding, runtime control, and administrator tools. The internal generated-morning-brief replacement tool is also excluded because its claim-token workflow is not a public user action.
get_transcript returns the transcript summary by default. It can include linked tasks and query-matched speaker blocks, but it never loads every transcript turn by default.
Hosted login
The MCP runs locally over STDIO and does not require a token or Google client configuration at startup.
Call login with no arguments. It returns a short-lived loopback URL on http://127.0.0.1:3100. The local page opens the hosted sign-in at https://app.meetzero.ai/mcp/login in the system browser.
The hosted page signs the user in with Zero's Google client, creates a single-use authorization code, and returns only that code and the original state to the loopback callback. The local MCP exchanges the code with its private PKCE verifier, validates the returned MCP-scoped session through /auth/profile, and saves it locally. Google credentials and Zero session tokens never pass through Codex chat or browser callback URLs.
Public users do not need GOOGLE_WEB_CLIENT_ID, a repository checkout, or any ZeroHrs environment file.
For local or staging development only:
ZEROHRS_MCP_LOGIN_URLoverrides the hosted sign-in page. Remote values must use HTTPS. HTTP is accepted only for loopback hosts.ZEROHRS_MCP_LOGIN_PORTchanges the local callback port.ZEROHRS_API_BASE_URLchanges the control-plane destination before Codex starts.
After sign-in, only the validated MCP-scoped token is saved at ~/.zerohrs/codex-mcp-session.json with 0600 permissions. Call disconnect to cancel a pending login and remove that local credential. It does not revoke the token or sign out other Zero sessions.
Do not add a session token to .codex/config.toml, a committed .env file, chat, or shell history.
Restart Codex after initially adding or updating the MCP server, then use /mcp to confirm that zerohrs and its tools are available.
Development
pnpm --filter @zerohrs/mcp build
pnpm --filter @zerohrs/mcp test
pnpm --filter @zerohrs/mcp typecheckAvailable Tools
24 toolsadd_contactAdd Zero ContactADestructive
Add a contact for the signed-in user. Call only after the user explicitly asks to save the contact.
Inputs: name (required), email (required).
add_meeting_prep_noteAdd Zero Meeting Prep NoteA
Save one manual prep note for a user-accessible meeting. This does not send messages or schedule a bot.
Inputs: note_text (required), meeting_id (required).
create_taskCreate Zero TaskB
Create a Zero task for the signed-in user. Call only after the user explicitly asks to save the task.
Inputs: title (required), description (required), status, due_date, +1 more.
create_user_owned_taskCreate User-Owned Zero TaskB
OpenClaw-compatible Zero task creation. Call only after the user explicitly asks to save the task.
Inputs: title (required), description (required), status, due_date, +1 more.
disconnectDisconnect ZeroHrsADestructiveIdempotent
Remove the session saved by this local MCP. This does not revoke or sign out other ZeroHrs sessions.
Inputs: no named parameters.
get_meeting_prepGet Zero Meeting PrepARead-onlyIdempotent
Get a meeting record with the signed-in user's private prep notes and people.
Inputs: meeting_id (required).
get_meetingsGet Zero MeetingsBRead-onlyIdempotent
OpenClaw-compatible meeting lookup for the signed-in user, with status, title, and time filters.
Inputs: after, limit, query, before, +1 more.
get_meeting_transcript_by_idGet Zero Transcript by IDARead-onlyIdempotent
OpenClaw-compatible transcript lookup by id. It returns the summary, optional tasks, and only query-matched speaker blocks.
Inputs: transcriptId (required), include_tasks (required), include_turns (required), query.
get_morning_brief_by_dateGet Zero Morning BriefARead-onlyIdempotent
Read the signed-in user's Zero morning brief for one local calendar date.
Inputs: local_date (required).
get_taskGet Zero TaskARead-onlyIdempotent
Get one user-accessible Zero task by id.
Inputs: task_id (required).
get_transcriptGet Zero TranscriptARead-onlyIdempotent
Get a transcript summary by id. Optionally include linked tasks and query-matched speaker blocks with adjacent context. This never loads every transcript turn.
Inputs: transcript_id (required), turn_limit, turn_query, include_tasks.
get_transcriptsGet Zero TranscriptsBRead-onlyIdempotent
OpenClaw-compatible search across transcript titles and summaries without full turns.
Inputs: query (required), after, limit, before.
get_user_owned_tasksGet User-Owned Zero TasksBRead-onlyIdempotent
OpenClaw-compatible search across the signed-in user's Zero task title and description.
Inputs: q, after, limit, before.
insert_prep_notes_for_meetingInsert Zero Meeting Prep NoteC
OpenClaw-compatible manual prep note creation for a user-accessible meeting.
Inputs: note_text (required), meeting_id (required).
list_meetingsList Zero MeetingsARead-onlyIdempotent
List the signed-in user's stored meetings, optionally filtered by status, title text, or time window.
Inputs: q, after, limit, before, +1 more.
list_tasksList Zero TasksARead-onlyIdempotent
List or search the signed-in user's Zero tasks by title and description, optionally narrowed by time window.
Inputs: q, after, limit, before.
list_transcriptsList Zero TranscriptsARead-onlyIdempotent
List recent transcript records without loading transcript turns. Use before or after to narrow the time window.
Inputs: after, limit, before.
loginLog In to ZeroHrsA
Start a private browser sign-in for this local MCP. No session token passes through Codex chat.
Inputs: no named parameters.
replace_generated_prep_notes_for_meetingReplace Generated Zero Meeting PrepADestructive
Replace generated prep notes and verified attendee briefings for a user-accessible meeting. Call only when the user explicitly asks the agent to generate or replace meeting prep.
Inputs: result (required), meeting_id (required), people.
schedule_meeting_botSchedule Zero Meeting BotB
Schedule the signed-in user's Zero meeting bot for a link or provider. Call only after the user explicitly asks to schedule the bot.
Inputs: title, join_at, provider, meeting_url, +1 more.
search_contactsSearch Zero ContactsARead-onlyIdempotent
Search the signed-in user's Zero contacts by up to 10 names or email addresses. Results stay in query order.
Inputs: queries (required), page, limit.
search_transcriptsSearch Zero TranscriptsARead-onlyIdempotent
Search transcript titles and summaries without loading full transcript bodies.
Inputs: q (required), limit.
search_zeroSearch ZeroARead-onlyIdempotent
Search the signed-in user's stored Zero meetings, tasks, transcript speaker blocks, contacts, prep notes, and morning briefs.
Inputs: q (required), after, before, limit_per_source.
update_taskUpdate Zero TaskADestructive
Update editable fields on a user-accessible Zero task. Call only after the user explicitly requests the change.
Inputs: task_id (required), title, status, due_date, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 24 tools
Several tools have near-identical purposes, especially the OpenClaw-compatible aliases: search_transcripts/get_transcripts, get_transcript/get_meeting_transcript_by_id, list_meetings/get_meetings, create_task/create_user_owned_task, and add_meeting_prep_note/insert_prep_notes_for_meeting. An agent can easily misselect between these pairs despite slightly different descriptions.
Tool names consistently use lowercase snake_case verb_noun, but verbs are not semantically consistent: list vs search for similar retrieval, create vs add vs insert for creation, and get_meetings vs list_meetings for the same operation. The style is predictable, but the duplicate action names break the pattern.
24 tools is at the high end of the range and feels bloated because six or more are redundant OpenClaw-compatible variants of existing tools. A leaner set of unique capabilities would be around 16-18 tools.
Core resources (meetings, transcripts, tasks, contacts, prep notes, morning briefs) have reasonable read/create/update coverage, but there are notable gaps: no delete for tasks or contacts, no update/delete for contacts, and no delete for individual prep notes. Agents would hit dead ends when users ask to remove or modify existing data.
Maintenance
Related MCP Connectors
Connect agents to Superflag with scoped read, write, or read-write access through browser login.
Permissioned access to Outlook, OneDrive and Teams via the user's own Microsoft account
Project context, backlog tasks, and controlled workflows for coding agents. OAuth sign-in.
Cloud console for a fleet of AI coding agents running on your own machines. OAuth.
Related MCP Servers
- AlicenseDqualityDmaintenanceEnables Codex to delegate implementation tasks to Kimi Code while managing server lifecycle and authentication automatically.111MIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables Codex to create, update, review, and present live SceneBoard boards after user approves a one-time connection.-
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients like Codex and Claude Code to securely read and manage a personal Cronometer account, including food logs, nutrient summaries with missing-data awareness, food search, biometrics, and export analysis.MIT
- AlicenseNot gradedqualityBmaintenanceLets Codex delegate coding and repository work to an installed Claude Code CLI with permission-aware inspect/write access, model and effort selection, resumable and cloud-attached sessions, and durable synchronous or asynchronous jobs.MIT