Skip to main content
Glama
Google Keep MCP
by anmolsahu2k

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

find, get_note, list_note_media

Note CRUD

create_note, create_list, update_note, set_note_color, delete_note, restore_note

Note State

pin_note, archive_note, trash_note

Checklists

add_list_item, update_list_item, delete_list_item

Labels

list_labels, create_label, delete_label, add_label_to_note, remove_label_from_note

Related MCP server: Claude MCP x Google Docs

Setup

1. Install

make install

2. Get a Google Master Token

Google no longer allows programmatic login. You need to extract a token from a browser session:

  1. Open Chrome and go to https://accounts.google.com/EmbeddedSetup

  2. Sign in with your Google account and click "I agree" (the page may show a loading screen forever — that's OK)

  3. Open DevTools (Cmd+Option+I on Mac, F12 on Windows/Linux)

  4. Go to Application > Cookies > accounts.google.com

  5. Find the cookie named oauth_token and copy its value (starts with oauth2_4/...)

  6. Run the helper script immediately (the token is single-use and short-lived):

uv run python scripts/get_token.py

The 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 (run which uv to 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) requires UNSAFE_MODE=true

  • delete_label (globally destructive) requires UNSAFE_MODE=true

  • trash_note is 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 style

Environment Variables

Variable

Required

Description

GOOGLE_EMAIL

Yes

Your Google account email

GOOGLE_MASTER_TOKEN

Yes

Master token from setup step 2

UNSAFE_MODE

No

Set to true to allow modifying all notes

Available Tools

20 tools
add_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

    B3.4/5.0

    Scored across 20 tools

    Disambiguation5/5

    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.

    Naming Consistency4/5

    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.

    Tool Count3/5

    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.

    Completeness4/5

    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

    Related MCP Servers