keep-mcp
Allows agents to read and manage Google Keep notes and checklists, including searching notes, fetching lists, adding items, checking/unchecking items, removing items, and creating new checklists.
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., "@keep-mcp Add milk and eggs to the shopping list"
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.
keep-mcp
A small MCP server for your Google Keep — built to sit next to tesco-mcp on the unRAID box.
Claude (or Cursor) can read the household shopping list, add items (including ones that arrived via Google Voice / Assistant), and tick them off once they are in the Tesco basket.
Keep has no personal OAuth API. This uses the unofficial gkeepapi client. Auth is a Google master token — it can act as the whole account, so it never goes in git.
agent ──MCP HTTP──> keep-mcp ──gkeepapi──> Google Keep
agent ──MCP HTTP──> tesco-mcp ──> TescoTwo separate connectors. Claude uses both in the same chat.
Tools
Tool | What it does |
| Search notes/lists by title or body |
| Fetch one list (default: |
| Append unchecked items |
| Tick items off by name |
| Untick items |
| Delete items by name |
| Create a new checklist |
Item matching is case-insensitive. Unique substrings work ("oat" → "Oat milk"); ambiguous names ("milk" when both Milk and Oat milk exist) are rejected so Claude has to be specific.
Optional KEEP_WRITE_TITLES=Shopping restricts writes to that list. Leave it empty for a personal Keep.
Related MCP server: NotesKeep MCP Server
One-time: mint a master token
On this machine (not in the container):
uv sync
uv run keep-mcp-tokenIt walks you through Google EmbeddedSetup: sign in, copy the oauth_token cookie, exchange it. Put GOOGLE_EMAIL and GOOGLE_MASTER_TOKEN in the container env. Treat the token like a password.
Run locally
uv sync
uv run pytest
uv run keep-mcp # stdio (Cursor / Claude Desktop)
uv run keep-mcp-http # HTTP on :8788 (Claude custom connector)Deploy on unRAID (alongside tesco-mcp)
This image is Python-only — no Chrome — so it is a thin container next to the Tesco one, not a second Tesco-sized box.
Generate an opaque public hostname (same idea as Tesco):
node -e "console.log('kpr-' + require('crypto').randomBytes(6).toString('hex'))"In Cloudflare Zero Trust → your existing tunnel, add a published application: that hostname →
http://<unraid-ip>:8788.On the unRAID box:
mkdir -p /mnt/user/appdata/keep-mcp MCP_AUTH_TOKEN=$(openssl rand -hex 24) # save this docker run -d --name keep-mcp --restart unless-stopped \ -p 8788:8788 \ -e MCP_AUTH_TOKEN=$MCP_AUTH_TOKEN \ -e MCP_PUBLIC_BASE_URL=https://<opaque-host>.<domain> \ -e GOOGLE_EMAIL=you@gmail.com \ -e GOOGLE_MASTER_TOKEN=<master-token> \ -e KEEP_DEFAULT_LIST=Shopping \ -e TZ=Europe/London \ -v /mnt/user/appdata/keep-mcp:/home/app/.keep-mcp \ ghcr.io/cookseyyyyyy/keep-mcp:latestGHCR is private (same as tesco-mcp) — the host must already be logged in to
ghcr.io.Health check:
curl https://<opaque-host>.<domain>/healthz→ok.
Connect Claude (web)
Same OAuth shim as Tesco / the Nice Touch MCP apps: one secret (MCP_AUTH_TOKEN), Claude obtains it via a consent page.
Claude → Settings → Connectors → Add custom connector.
URL only (no token field):
https://<opaque-host>.<domain>/mcpConnect → browser consent page → paste
MCP_AUTH_TOKEN→ Approve.
Cursor / Claude Code can skip OAuth and send Authorization: Bearer <MCP_AUTH_TOKEN> to the same /mcp URL.
Typical Tesco shop
keep_get— unread items on the shopping list.Tesco MCP: search, add to basket, book a slot.
keep_check_items— tick off what went in the basket.
Voice-added Keep items (Assistant / Google Voice) show up after the next keep_get / keep_find; Keep is synced on every tool call.
Available Tools
7 toolskeep_add_itemsA
Add one or more unchecked items to a Keep checklist (the shopping list). Does not create duplicates automatically — check keep_get first.
Inputs: items (required), note_id, list_title. Returns: object
keep_check_itemsA
Tick off Keep checklist items after they have been added to the Tesco basket (or bought). Match by item name; unique substrings are ok.
Inputs: items (required), note_id, list_title. Returns: object
keep_create_listA
Create a new Keep checklist. Use this only if the shopping list does not already exist — prefer keep_add_items on the existing list.
Inputs: title (required), items. Returns: object
keep_findA
Search Keep notes and checklists by title or body text. Returns id, title, type (list/note), pinned, and for lists the items. Use this to find the shopping list if you do not know its exact title.
Inputs: limit, query. Returns: object
keep_getA
Get one Keep note or checklist. Pass list_title (e.g. 'Shopping') or note_id from keep_find. If both are omitted, uses KEEP_DEFAULT_LIST. Lists include each item's text and checked state.
Inputs: note_id, list_title. Returns: object
keep_remove_itemsB
Delete items from a Keep checklist by name.
Inputs: items (required), note_id, list_title. Returns: object
keep_uncheck_itemsB
Untick Keep checklist items (put them back on the shopping list).
Inputs: items (required), note_id, list_title. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 7 tools
Each tool has a clear, distinct purpose: searching, retrieving, creating lists, and performing specific item actions. The find/get distinction is slight but descriptions make it clear.
All tools follow a consistent keep_ prefix with snake_case verb_noun naming, making the action and target obvious across the set.
Seven tools is well-scoped for a Keep-focused MCP server, covering core list and item operations without unnecessary bloat.
The main workflows are covered: create, find, get, add, check/uncheck, and remove. Minor gaps like deleting a whole list or editing note text prevent a perfect score.
Maintenance
Related MCP Connectors
Google Keep MCP, read and edit your notes, lists, labels and collaborators. Connect with your Google
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Lets Claude, ChatGPT, and Muse read and update your beckett tasks, notes, calendar, and lists.
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables interaction with Google Keep notes through an MCP server, allowing users to search, create, update, and delete notes via natural language commands.23957 PyPI113MIT
- AlicenseCqualityDmaintenanceEnables users to manage their notes on NotesKeep directly through Claude Code or other MCP clients. It supports creating, updating, and organizing both text and checklist notes using natural language commands.146 npm1MIT
- AlicenseBqualityDmaintenanceEnables creating, modifying, and checking Google Calendar events from Claude desktop app using MCP protocol with secure OAuth2 authentication.22MIT
- FlicenseNot gradedqualityDmaintenanceEnables interaction with Google Sheets, Docs, Slides, and Drive through a remote MCP server hosted on Cloudflare Workers, with OAuth authentication and Claude-native connect.-