Google Keep MCP
Allows managing Google Keep notes, including CRUD operations, labels, checklists, search, pinning, archiving, trashing, and color setting.
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., "@Google Keep MCP Find notes tagged with 'work'"
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.
Google Keep MCP Server
A Model Context Protocol (MCP) server that connects Google Keep to Claude, giving it full note management capabilities.
Uses the unofficial gkeepapi library — the only viable way to access Google Keep programmatically.
Features
20 tools across 5 categories:
Category | Tools |
Search & Retrieval |
|
Note CRUD |
|
Note State |
|
Checklists |
|
Labels |
|
Related MCP server: Claude MCP x Google Docs
Setup
1. Install
make install2. Get a Google Master Token
Google no longer allows programmatic login. You need to extract a token from a browser session:
Open Chrome and go to
https://accounts.google.com/EmbeddedSetupSign in with your Google account and click "I agree" (the page may show a loading screen forever — that's OK)
Open DevTools (
Cmd+Option+Ion Mac,F12on Windows/Linux)Go to Application > Cookies > accounts.google.com
Find the cookie named
oauth_tokenand copy its value (starts withoauth2_4/...)Run the helper script immediately (the token is single-use and short-lived):
uv run python scripts/get_token.pyThe master token it returns does not expire. You only need to do this once.
3. Configure Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"google-keep": {
"command": "/path/to/uv",
"args": ["--directory", "/path/to/Google Keep MCP", "run", "keep-mcp"],
"env": {
"GOOGLE_EMAIL": "you@gmail.com",
"GOOGLE_MASTER_TOKEN": "aas_et/..."
}
}
}
}Use the full path to
uv(runwhich uvto find it). Claude Desktop doesn't inherit your shell PATH.
Restart Claude Desktop after saving.
Safety
By default, write operations only work on notes that have a keep-mcp label. Notes created through the server get this label automatically.
This prevents Claude from accidentally modifying your existing notes.
To allow modifications to all notes, add to the env:
"UNSAFE_MODE": "true"Additional safety gates:
delete_note(permanent delete) requiresUNSAFE_MODE=truedelete_label(globally destructive) requiresUNSAFE_MODE=truetrash_noteis always available as a safe, reversible alternative
Development
make install # install dependencies
make start # run server (stdio)
make start-sse # run server (SSE for remote use)
make test # run unit tests
make smoke # run integration tests (needs credentials)
make lint # check code style
make format # auto-fix code styleEnvironment Variables
Variable | Required | Description |
| Yes | Your Google account email |
| Yes | Master token from setup step 2 |
| No | Set to |
Available Tools
20 toolsadd_label_to_noteC
Add a label to a note.
Inputs: note_id (required), label_id (required). Returns: result
add_list_itemC
Add an item to a checklist note.
Inputs: text (required), note_id (required), checked. Returns: result
archive_noteC
Archive or unarchive a note.
Inputs: note_id (required), archived. Returns: result
create_labelB
Create a new label.
Inputs: name (required). Returns: result
create_listA
Create a new checklist note. Auto-applies the 'keep-mcp' safety label. Items are provided as a list of strings (all unchecked by default).
Inputs: title (required), items. Returns: result
create_noteA
Create a new text note. Auto-applies the 'keep-mcp' safety label.
Inputs: title (required), text. Returns: result
delete_labelA
Delete a label. Requires UNSAFE_MODE=true as this is globally destructive.
Inputs: label_id (required). Returns: result
delete_list_itemB
Remove an item from a checklist note.
Inputs: item_id (required), note_id (required). Returns: result
delete_noteA
Permanently delete a note. Requires UNSAFE_MODE=true. Use trash_note for reversible deletion.
Inputs: note_id (required). Returns: result
findC
Search notes with optional filters. Returns matching notes.
Inputs: query, colors, labels, pinned, +2 more. Returns: result
get_noteB
Get a specific note by its ID.
Inputs: note_id (required). Returns: result
list_labelsA
List all labels in Google Keep.
Inputs: no named parameters. Returns: result
list_note_mediaA
List media attachments on a note.
Inputs: note_id (required). Returns: result
pin_noteC
Pin or unpin a note.
Inputs: note_id (required), pinned. Returns: result
remove_label_from_noteA
Remove a label from a note.
Inputs: note_id (required), label_id (required). Returns: result
restore_noteA
Restore a note from trash. Only works on trashed notes, not permanently deleted ones.
Inputs: note_id (required). Returns: result
set_note_colorA
Set the color of a note. Valid colors: WHITE, RED, ORANGE, YELLOW, GREEN, TEAL, BLUE, DARK_BLUE, PURPLE, PINK, BROWN, GRAY.
Inputs: color (required), note_id (required). Returns: result
trash_noteB
Move a note to trash. This is reversible with restore_note.
Inputs: note_id (required). Returns: result
update_list_itemC
Update a checklist item's text and/or checked state.
Inputs: item_id (required), note_id (required), text, checked. Returns: result
update_noteB
Update a note's title and/or text content.
Inputs: note_id (required), text, title. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 20 tools
Each tool maps to a clear resource and action: notes, checklist items, labels, media, and lifecycle states are all separate. Even closely related operations like delete_note vs trash_note are explicitly differentiated by permanence and reversibility.
The set consistently uses snake_case verb_noun names such as get_note, create_list, update_list_item, and add_label_to_note. The main inconsistency is the bare verb 'find' instead of something like search_notes, but the rest of the naming is highly predictable.
At 20 tools, the server sits in the borderline-heavy range and covers a broad amount of Google Keep functionality. The operations are not redundant, but the surface could be tightened by consolidating some state toggles or label operations.
The server covers note CRUD, trash/restore, pin/archive, color, checklist item operations, and label attachment and management. Notable gaps are the lack of a label rename/update operation and no way to add media to a note, but core Keep workflows are well represented.
Related MCP Connectors
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Google Keep MCP, read and edit your notes, lists, labels and collaborators. Connect with your Google
Related MCP Servers
- AlicenseAqualityCmaintenanceA Model Context Protocol server that bridges Claude with Google Tasks, allowing users to manage task lists and tasks directly through Claude interface.1573 npm51MIT
- AlicenseNot gradedqualityBmaintenanceA Model Context Protocol server that enables AI assistants like Claude to read from, append to, and format text in Google Documents programmatically.2,983 npm683MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that allows AI assistants like Claude to interact with Evernote, enabling them to create, search, read, and manage notes through natural language.4-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables Claude to fully manage Google Calendar, including events, calendars, sharing, and availability checks through natural language.1MIT