google-keep-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_KEEP_EMAIL | Yes | Your Google account email address | |
| GOOGLE_KEEP_DEVICE_ID | Yes | Pinned device ID for consistent device identity | |
| GOOGLE_KEEP_STATE_PATH | No | Optional path to cache Keep state to disk for faster startup | |
| GOOGLE_KEEP_MASTER_TOKEN | Yes | Master token obtained via get_master_token.py script |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_notesA | Search Google Keep notes and lists. Args: query: Text to search in title and body (supports regex). labels: Filter by label names. color: Filter by color name (e.g. "yellow", "blue"). pinned: Filter by pinned status. archived: Filter by archived status. trashed: Include trashed notes. created_after: ISO 8601 date/datetime; only notes created at or after this. created_before: ISO 8601 date/datetime; only notes created at or before this. updated_after: ISO 8601 date/datetime; only notes updated at or after this. updated_before: ISO 8601 date/datetime; only notes updated at or before this. sort_by: Sort by "created", "updated", "edited", or "title". Unsorted (arbitrary internal order) if omitted. sort_desc: Sort descending (newest/Z-first) when sort_by is set. Default True. offset: Number of results to skip (for paging through large result sets). limit: Maximum number of results to return. |
| get_noteA | Get a single note or list by its ID. Args: note_id: The unique ID of the note. |
| get_attachment_urlA | Resolve a fetchable URL for one of a note's attachments (image/drawing/audio). Makes a live network call to Google, so only call this for a specific attachment you actually need — not in a loop over search results. Args: note_id: The ID of the note the attachment belongs to. attachment_id: The attachment's ID, from the note's "attachments" list. |
| create_noteA | Create a new text note in Google Keep. Args: title: Note title. text: Note body text. color: Note color (e.g. "yellow", "blue", "green"). pinned: Whether to pin the note. labels: Label names to apply (created if they don't exist). |
| create_listA | Create a new checklist in Google Keep. Args: title: List title. items: List items as objects with "text" and optional "checked" boolean. Example: [{"text": "Buy milk", "checked": false}, {"text": "Buy eggs"}] color: List color (e.g. "yellow", "blue"). pinned: Whether to pin the list. labels: Label names to apply (created if they don't exist). |
| update_noteB | Update an existing note's properties. Args: note_id: The ID of the note to update. title: New title (omit to keep current). text: New body text (omit to keep current; only for text notes). color: New color name. pinned: New pinned status. archived: New archived status. |
| trash_noteC | Move a note to the trash. Args: note_id: The ID of the note to trash. |
| restore_noteB | Restore a note from the trash. Args: note_id: The ID of the note to restore. |
| delete_noteA | Permanently delete a note. This cannot be undone. Args: note_id: The ID of the note to permanently delete. |
| bulk_update_notesA | Apply the same change(s) to multiple notes in a single sync. Does not support permanent deletion — trash notes in bulk here, then use delete_note individually once you're sure. Args: note_ids: IDs of the notes to update. trashed: If set, trash (True) or restore (False) all notes. archived: If set, archive (True) or unarchive (False) all notes. pinned: If set, pin (True) or unpin (False) all notes. add_label: Label name to add to all notes (created if it doesn't exist). remove_label: Label name to remove from all notes. |
| add_list_itemB | Add an item to an existing checklist. Args: note_id: The ID of the list note. text: The item text. checked: Whether the item starts checked. |
| update_list_itemA | Update a list item's text or checked status. Args: note_id: The ID of the list note. item_id: The ID of the item to update. text: New item text (omit to keep current). checked: New checked status (omit to keep current). |
| delete_list_itemA | Delete an item from a checklist. Args: note_id: The ID of the list note. item_id: The ID of the item to delete. |
| list_labelsA | List all labels in Google Keep. |
| create_labelB | Create a new label. Args: name: The label name. |
| delete_labelA | Delete a label by name. Removes it from all notes. Args: name: The label name to delete. |
| add_label_to_noteB | Add a label to a note. Creates the label if it doesn't exist. Args: note_id: The ID of the note. label_name: The label name to add. |
| remove_label_from_noteB | Remove a label from a note. Args: note_id: The ID of the note. label_name: The label name to remove. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/suckerfish/google_keep_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server