google-keep-notes-mcp 0.1.2__tar.gz → 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- google_keep_notes_mcp-0.2.0/PKG-INFO +307 -0
- google_keep_notes_mcp-0.2.0/README.md +289 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/pyproject.toml +3 -6
- google_keep_notes_mcp-0.2.0/src/google_keep_notes_mcp.egg-info/PKG-INFO +307 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/src/google_keep_notes_mcp.egg-info/requires.txt +1 -0
- google_keep_notes_mcp-0.2.0/src/keep_mcp_server/auth.py +105 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/src/keep_mcp_server/server.py +7 -1
- google_keep_notes_mcp-0.1.2/PKG-INFO +0 -141
- google_keep_notes_mcp-0.1.2/README.md +0 -124
- google_keep_notes_mcp-0.1.2/src/google_keep_notes_mcp.egg-info/PKG-INFO +0 -141
- google_keep_notes_mcp-0.1.2/src/keep_mcp_server/auth.py +0 -38
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/LICENSE +0 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/setup.cfg +0 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/src/google_keep_notes_mcp.egg-info/SOURCES.txt +0 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/src/google_keep_notes_mcp.egg-info/dependency_links.txt +0 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/src/google_keep_notes_mcp.egg-info/entry_points.txt +0 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/src/google_keep_notes_mcp.egg-info/top_level.txt +0 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/src/keep_mcp_server/__init__.py +0 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/src/keep_mcp_server/config.py +0 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/src/keep_mcp_server/export_tools.py +0 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/src/keep_mcp_server/keep_tools.py +0 -0
- {google_keep_notes_mcp-0.1.2 → google_keep_notes_mcp-0.2.0}/src/keep_mcp_server/tasks_tools.py +0 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: google-keep-notes-mcp
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: MCP server for Google Keep — connect Claude, Copilot & ChatGPT to Google Keep
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Dist: gkeepapi>=0.17.1
|
|
9
|
+
Requires-Dist: gpsoauth>=1.1.0
|
|
10
|
+
Requires-Dist: google-api-python-client>=2.198.0
|
|
11
|
+
Requires-Dist: google-auth-oauthlib>=1.4.0
|
|
12
|
+
Requires-Dist: markdown>=3.10.2
|
|
13
|
+
Requires-Dist: mcp>=1.28.1
|
|
14
|
+
Requires-Dist: python-docx>=1.2.0
|
|
15
|
+
Requires-Dist: python-dotenv>=1.2.2
|
|
16
|
+
Requires-Dist: reportlab>=5.0.0
|
|
17
|
+
Dynamic: license-file
|
|
18
|
+
|
|
19
|
+
# 🗒️ Google Keep MCP Server
|
|
20
|
+
|
|
21
|
+
> Connect any AI assistant directly to your Google Keep — create, search, organize, export notes, set reminders, and more.
|
|
22
|
+
|
|
23
|
+
[](https://pypi.org/project/google-keep-notes-mcp/)
|
|
24
|
+
[](https://www.python.org/)
|
|
25
|
+
[](LICENSE)
|
|
26
|
+
[](https://modelcontextprotocol.io/)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## ✨ What It Does
|
|
31
|
+
|
|
32
|
+
| | Feature | Description |
|
|
33
|
+
|--|---------|-------------|
|
|
34
|
+
| 📝 | **Notes** | Create, read, update, delete, archive notes |
|
|
35
|
+
| 🔍 | **Search** | Find notes by keyword instantly |
|
|
36
|
+
| 📌 | **Organize** | Pin notes, change colors, add labels |
|
|
37
|
+
| 🏷️ | **Labels** | Create, apply, remove labels — with auto-labeling |
|
|
38
|
+
| ⏰ | **Reminders** | Set reminders via Google Tasks integration |
|
|
39
|
+
| 👥 | **Collaborate** | Add or remove collaborators by email |
|
|
40
|
+
| 📤 | **Export** | Export any note as PDF, Word (DOCX), or Markdown |
|
|
41
|
+
| 📊 | **Analytics** | Get stats — total notes, labels, oldest, newest |
|
|
42
|
+
| 📅 | **Digest** | Daily/weekly digest of pinned and recent notes |
|
|
43
|
+
| 📋 | **Templates** | Pre-built templates: meeting, journal, project, shopping, ideas |
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 📦 Installation
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
pip install google-keep-notes-mcp
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
uv add google-keep-notes-mcp
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Or run directly without installing (recommended for MCP clients):
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
uvx google-keep-notes-mcp
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Requires Python 3.10+
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## 🔐 Authentication
|
|
68
|
+
|
|
69
|
+
This package uses a **master token** obtained from your Google account session. It's a one-time setup.
|
|
70
|
+
|
|
71
|
+
> ⚠️ Use a **dedicated/dummy Google account** for safety.
|
|
72
|
+
|
|
73
|
+
### First-Time Setup
|
|
74
|
+
|
|
75
|
+
**Step 1 — Run the setup command:**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
google-keep-mcp setup
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
This will open `accounts.google.com/EmbeddedSetup` in your browser automatically and guide you step by step.
|
|
82
|
+
|
|
83
|
+
**Step 2 — In the browser:**
|
|
84
|
+
|
|
85
|
+
1. Sign in with your Google account
|
|
86
|
+
2. Click **"I Agree"**
|
|
87
|
+
3. Press `F12` to open DevTools
|
|
88
|
+
4. Go to **Application → Cookies → accounts.google.com**
|
|
89
|
+
5. Find the `oauth_token` row → click it
|
|
90
|
+
6. At the bottom, **triple-click** the Cookie Value → `Ctrl+C` to copy
|
|
91
|
+
|
|
92
|
+
> ⚡ Do this quickly — the token expires fast. Have your terminal ready before copying.
|
|
93
|
+
|
|
94
|
+
**Step 3 — Back in terminal:**
|
|
95
|
+
|
|
96
|
+
Paste your email and the copied `oauth_token` value when prompted. Your master token is generated and saved automatically to:
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
~/.google_keep_mcp/config.env
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
You won't need to do this again unless your token expires.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## ⏰ Reminders Setup (Optional)
|
|
107
|
+
|
|
108
|
+
Reminders use the **Google Tasks API**. One-time setup required:
|
|
109
|
+
|
|
110
|
+
1. Go to [console.cloud.google.com](https://console.cloud.google.com) → Create a new project
|
|
111
|
+
2. Enable **Google Tasks API**
|
|
112
|
+
3. Go to **OAuth Consent Screen** → Add your Google account as a test user
|
|
113
|
+
4. Create **OAuth 2.0 Credentials** → Desktop App type → Download `credentials.json`
|
|
114
|
+
5. Place it at: `~/.google_keep_mcp/credentials.json`
|
|
115
|
+
|
|
116
|
+
First time you set a reminder, a browser window opens to authorize. After that it's fully automatic.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 🖥️ Client Setup
|
|
121
|
+
|
|
122
|
+
<details>
|
|
123
|
+
<summary><b>Claude Desktop</b></summary>
|
|
124
|
+
|
|
125
|
+
Edit your `claude_desktop_config.json`:
|
|
126
|
+
|
|
127
|
+
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
128
|
+
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"mcpServers": {
|
|
133
|
+
"google-keep": {
|
|
134
|
+
"command": "uvx",
|
|
135
|
+
"args": ["google-keep-notes-mcp"]
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
</details>
|
|
142
|
+
|
|
143
|
+
<details>
|
|
144
|
+
<summary><b>Cursor</b></summary>
|
|
145
|
+
|
|
146
|
+
Open **Cursor Settings** → **MCP** → **Add new server** → paste:
|
|
147
|
+
|
|
148
|
+
```json
|
|
149
|
+
{
|
|
150
|
+
"mcpServers": {
|
|
151
|
+
"google-keep": {
|
|
152
|
+
"command": "uvx",
|
|
153
|
+
"args": ["google-keep-notes-mcp"]
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
</details>
|
|
160
|
+
|
|
161
|
+
<details>
|
|
162
|
+
<summary><b>VS Code — GitHub Copilot</b></summary>
|
|
163
|
+
|
|
164
|
+
Create or edit:
|
|
165
|
+
- **Windows:** `%APPDATA%\Code\User\mcp.json`
|
|
166
|
+
- **macOS/Linux:** `~/.config/Code/User/mcp.json`
|
|
167
|
+
|
|
168
|
+
```json
|
|
169
|
+
{
|
|
170
|
+
"servers": {
|
|
171
|
+
"google-keep": {
|
|
172
|
+
"type": "stdio",
|
|
173
|
+
"command": "uvx",
|
|
174
|
+
"args": ["google-keep-notes-mcp"]
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
</details>
|
|
181
|
+
|
|
182
|
+
<details>
|
|
183
|
+
<summary><b>Windsurf</b></summary>
|
|
184
|
+
|
|
185
|
+
Open **Windsurf Settings** → **MCP** → **Add server**:
|
|
186
|
+
|
|
187
|
+
```json
|
|
188
|
+
{
|
|
189
|
+
"mcpServers": {
|
|
190
|
+
"google-keep": {
|
|
191
|
+
"command": "uvx",
|
|
192
|
+
"args": ["google-keep-notes-mcp"]
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
</details>
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 🛠️ Tools Reference
|
|
203
|
+
|
|
204
|
+
### Notes
|
|
205
|
+
|
|
206
|
+
| Tool | Description |
|
|
207
|
+
|------|-------------|
|
|
208
|
+
| `keep_create_note` | Create a new note with title and content |
|
|
209
|
+
| `keep_list_notes` | List all active notes |
|
|
210
|
+
| `keep_get_note` | Get a specific note by ID |
|
|
211
|
+
| `keep_update_note` | Update title or content of a note |
|
|
212
|
+
| `keep_delete_note` | Delete (trash) a note |
|
|
213
|
+
| `keep_archive_note` | Archive a note |
|
|
214
|
+
| `keep_search_notes` | Search notes by keyword |
|
|
215
|
+
|
|
216
|
+
### Organization
|
|
217
|
+
|
|
218
|
+
| Tool | Description |
|
|
219
|
+
|------|-------------|
|
|
220
|
+
| `keep_pin_note` | Pin or unpin a note |
|
|
221
|
+
| `keep_change_color` | Change note color (red, blue, green, yellow, teal, pink, purple, gray, brown, white) |
|
|
222
|
+
|
|
223
|
+
### Labels
|
|
224
|
+
|
|
225
|
+
| Tool | Description |
|
|
226
|
+
|------|-------------|
|
|
227
|
+
| `keep_create_label` | Create a new label |
|
|
228
|
+
| `keep_add_label` | Add a label to a note |
|
|
229
|
+
| `keep_remove_label` | Remove a label from a note |
|
|
230
|
+
| `keep_list_labels` | List all labels |
|
|
231
|
+
| `keep_auto_label_note` | Auto-detect and apply labels to a single note |
|
|
232
|
+
| `keep_auto_label_all` | Auto-label all unlabeled notes |
|
|
233
|
+
|
|
234
|
+
### Reminders & Collaboration
|
|
235
|
+
|
|
236
|
+
| Tool | Description |
|
|
237
|
+
|------|-------------|
|
|
238
|
+
| `keep_set_reminder` | Set a reminder via Google Tasks (`YYYY-MM-DD HH:MM`) |
|
|
239
|
+
| `keep_add_collaborator` | Add a collaborator by email |
|
|
240
|
+
| `keep_remove_collaborator` | Remove a collaborator by email |
|
|
241
|
+
|
|
242
|
+
### Export
|
|
243
|
+
|
|
244
|
+
| Tool | Description |
|
|
245
|
+
|------|-------------|
|
|
246
|
+
| `keep_export_note` | Export note as PDF, DOCX, or Markdown — saved to `~/Desktop/KeepExports/` |
|
|
247
|
+
|
|
248
|
+
### Insights
|
|
249
|
+
|
|
250
|
+
| Tool | Description |
|
|
251
|
+
|------|-------------|
|
|
252
|
+
| `keep_get_analytics` | Full stats — total notes, label usage, oldest/newest, colors |
|
|
253
|
+
| `keep_get_weekly_digest` | Smart digest — pinned, recently updated, notes by label |
|
|
254
|
+
|
|
255
|
+
### Templates
|
|
256
|
+
|
|
257
|
+
| Tool | Description |
|
|
258
|
+
|------|-------------|
|
|
259
|
+
| `keep_list_templates` | List all available templates |
|
|
260
|
+
| `keep_create_from_template` | Create a note from a pre-built template |
|
|
261
|
+
|
|
262
|
+
**Available templates:** `meeting` · `journal` · `project` · `shopping` · `ideas`
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## 💬 Example Prompts
|
|
267
|
+
|
|
268
|
+
```
|
|
269
|
+
Create a note titled "Weekend Plans" with a list of things to do
|
|
270
|
+
```
|
|
271
|
+
```
|
|
272
|
+
Search my notes for anything about Python
|
|
273
|
+
```
|
|
274
|
+
```
|
|
275
|
+
Set a reminder for my "Internship Application" note for tomorrow at 9am
|
|
276
|
+
```
|
|
277
|
+
```
|
|
278
|
+
Export my "MCP Concepts" note as a PDF
|
|
279
|
+
```
|
|
280
|
+
```
|
|
281
|
+
Auto-label all my notes
|
|
282
|
+
```
|
|
283
|
+
```
|
|
284
|
+
Give me a weekly digest of my Google Keep notes
|
|
285
|
+
```
|
|
286
|
+
```
|
|
287
|
+
Show me analytics about my notes
|
|
288
|
+
```
|
|
289
|
+
```
|
|
290
|
+
Create a meeting note for today's standup
|
|
291
|
+
```
|
|
292
|
+
```
|
|
293
|
+
Add collaborator friend@gmail.com to my "Project Plan" note
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
## ❌ Known Limitations
|
|
299
|
+
|
|
300
|
+
- **Image attachment** — Attaching images inside notes is not supported (Google's private upload endpoint is unavailable via this library)
|
|
301
|
+
- **Native reminder bell** — Keep's built-in reminder bell cannot be set via this method; reminders are created in Google Tasks instead (fully functional with notifications)
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## 📄 License
|
|
306
|
+
|
|
307
|
+
MIT © Muhammad Abubakar
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
# 🗒️ Google Keep MCP Server
|
|
2
|
+
|
|
3
|
+
> Connect any AI assistant directly to your Google Keep — create, search, organize, export notes, set reminders, and more.
|
|
4
|
+
|
|
5
|
+
[](https://pypi.org/project/google-keep-notes-mcp/)
|
|
6
|
+
[](https://www.python.org/)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](https://modelcontextprotocol.io/)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## ✨ What It Does
|
|
13
|
+
|
|
14
|
+
| | Feature | Description |
|
|
15
|
+
|--|---------|-------------|
|
|
16
|
+
| 📝 | **Notes** | Create, read, update, delete, archive notes |
|
|
17
|
+
| 🔍 | **Search** | Find notes by keyword instantly |
|
|
18
|
+
| 📌 | **Organize** | Pin notes, change colors, add labels |
|
|
19
|
+
| 🏷️ | **Labels** | Create, apply, remove labels — with auto-labeling |
|
|
20
|
+
| ⏰ | **Reminders** | Set reminders via Google Tasks integration |
|
|
21
|
+
| 👥 | **Collaborate** | Add or remove collaborators by email |
|
|
22
|
+
| 📤 | **Export** | Export any note as PDF, Word (DOCX), or Markdown |
|
|
23
|
+
| 📊 | **Analytics** | Get stats — total notes, labels, oldest, newest |
|
|
24
|
+
| 📅 | **Digest** | Daily/weekly digest of pinned and recent notes |
|
|
25
|
+
| 📋 | **Templates** | Pre-built templates: meeting, journal, project, shopping, ideas |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 📦 Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
pip install google-keep-notes-mcp
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
uv add google-keep-notes-mcp
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Or run directly without installing (recommended for MCP clients):
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
uvx google-keep-notes-mcp
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Requires Python 3.10+
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 🔐 Authentication
|
|
50
|
+
|
|
51
|
+
This package uses a **master token** obtained from your Google account session. It's a one-time setup.
|
|
52
|
+
|
|
53
|
+
> ⚠️ Use a **dedicated/dummy Google account** for safety.
|
|
54
|
+
|
|
55
|
+
### First-Time Setup
|
|
56
|
+
|
|
57
|
+
**Step 1 — Run the setup command:**
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
google-keep-mcp setup
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
This will open `accounts.google.com/EmbeddedSetup` in your browser automatically and guide you step by step.
|
|
64
|
+
|
|
65
|
+
**Step 2 — In the browser:**
|
|
66
|
+
|
|
67
|
+
1. Sign in with your Google account
|
|
68
|
+
2. Click **"I Agree"**
|
|
69
|
+
3. Press `F12` to open DevTools
|
|
70
|
+
4. Go to **Application → Cookies → accounts.google.com**
|
|
71
|
+
5. Find the `oauth_token` row → click it
|
|
72
|
+
6. At the bottom, **triple-click** the Cookie Value → `Ctrl+C` to copy
|
|
73
|
+
|
|
74
|
+
> ⚡ Do this quickly — the token expires fast. Have your terminal ready before copying.
|
|
75
|
+
|
|
76
|
+
**Step 3 — Back in terminal:**
|
|
77
|
+
|
|
78
|
+
Paste your email and the copied `oauth_token` value when prompted. Your master token is generated and saved automatically to:
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
~/.google_keep_mcp/config.env
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
You won't need to do this again unless your token expires.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## ⏰ Reminders Setup (Optional)
|
|
89
|
+
|
|
90
|
+
Reminders use the **Google Tasks API**. One-time setup required:
|
|
91
|
+
|
|
92
|
+
1. Go to [console.cloud.google.com](https://console.cloud.google.com) → Create a new project
|
|
93
|
+
2. Enable **Google Tasks API**
|
|
94
|
+
3. Go to **OAuth Consent Screen** → Add your Google account as a test user
|
|
95
|
+
4. Create **OAuth 2.0 Credentials** → Desktop App type → Download `credentials.json`
|
|
96
|
+
5. Place it at: `~/.google_keep_mcp/credentials.json`
|
|
97
|
+
|
|
98
|
+
First time you set a reminder, a browser window opens to authorize. After that it's fully automatic.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 🖥️ Client Setup
|
|
103
|
+
|
|
104
|
+
<details>
|
|
105
|
+
<summary><b>Claude Desktop</b></summary>
|
|
106
|
+
|
|
107
|
+
Edit your `claude_desktop_config.json`:
|
|
108
|
+
|
|
109
|
+
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
110
|
+
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"mcpServers": {
|
|
115
|
+
"google-keep": {
|
|
116
|
+
"command": "uvx",
|
|
117
|
+
"args": ["google-keep-notes-mcp"]
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
</details>
|
|
124
|
+
|
|
125
|
+
<details>
|
|
126
|
+
<summary><b>Cursor</b></summary>
|
|
127
|
+
|
|
128
|
+
Open **Cursor Settings** → **MCP** → **Add new server** → paste:
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"mcpServers": {
|
|
133
|
+
"google-keep": {
|
|
134
|
+
"command": "uvx",
|
|
135
|
+
"args": ["google-keep-notes-mcp"]
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
</details>
|
|
142
|
+
|
|
143
|
+
<details>
|
|
144
|
+
<summary><b>VS Code — GitHub Copilot</b></summary>
|
|
145
|
+
|
|
146
|
+
Create or edit:
|
|
147
|
+
- **Windows:** `%APPDATA%\Code\User\mcp.json`
|
|
148
|
+
- **macOS/Linux:** `~/.config/Code/User/mcp.json`
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
{
|
|
152
|
+
"servers": {
|
|
153
|
+
"google-keep": {
|
|
154
|
+
"type": "stdio",
|
|
155
|
+
"command": "uvx",
|
|
156
|
+
"args": ["google-keep-notes-mcp"]
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
</details>
|
|
163
|
+
|
|
164
|
+
<details>
|
|
165
|
+
<summary><b>Windsurf</b></summary>
|
|
166
|
+
|
|
167
|
+
Open **Windsurf Settings** → **MCP** → **Add server**:
|
|
168
|
+
|
|
169
|
+
```json
|
|
170
|
+
{
|
|
171
|
+
"mcpServers": {
|
|
172
|
+
"google-keep": {
|
|
173
|
+
"command": "uvx",
|
|
174
|
+
"args": ["google-keep-notes-mcp"]
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
</details>
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 🛠️ Tools Reference
|
|
185
|
+
|
|
186
|
+
### Notes
|
|
187
|
+
|
|
188
|
+
| Tool | Description |
|
|
189
|
+
|------|-------------|
|
|
190
|
+
| `keep_create_note` | Create a new note with title and content |
|
|
191
|
+
| `keep_list_notes` | List all active notes |
|
|
192
|
+
| `keep_get_note` | Get a specific note by ID |
|
|
193
|
+
| `keep_update_note` | Update title or content of a note |
|
|
194
|
+
| `keep_delete_note` | Delete (trash) a note |
|
|
195
|
+
| `keep_archive_note` | Archive a note |
|
|
196
|
+
| `keep_search_notes` | Search notes by keyword |
|
|
197
|
+
|
|
198
|
+
### Organization
|
|
199
|
+
|
|
200
|
+
| Tool | Description |
|
|
201
|
+
|------|-------------|
|
|
202
|
+
| `keep_pin_note` | Pin or unpin a note |
|
|
203
|
+
| `keep_change_color` | Change note color (red, blue, green, yellow, teal, pink, purple, gray, brown, white) |
|
|
204
|
+
|
|
205
|
+
### Labels
|
|
206
|
+
|
|
207
|
+
| Tool | Description |
|
|
208
|
+
|------|-------------|
|
|
209
|
+
| `keep_create_label` | Create a new label |
|
|
210
|
+
| `keep_add_label` | Add a label to a note |
|
|
211
|
+
| `keep_remove_label` | Remove a label from a note |
|
|
212
|
+
| `keep_list_labels` | List all labels |
|
|
213
|
+
| `keep_auto_label_note` | Auto-detect and apply labels to a single note |
|
|
214
|
+
| `keep_auto_label_all` | Auto-label all unlabeled notes |
|
|
215
|
+
|
|
216
|
+
### Reminders & Collaboration
|
|
217
|
+
|
|
218
|
+
| Tool | Description |
|
|
219
|
+
|------|-------------|
|
|
220
|
+
| `keep_set_reminder` | Set a reminder via Google Tasks (`YYYY-MM-DD HH:MM`) |
|
|
221
|
+
| `keep_add_collaborator` | Add a collaborator by email |
|
|
222
|
+
| `keep_remove_collaborator` | Remove a collaborator by email |
|
|
223
|
+
|
|
224
|
+
### Export
|
|
225
|
+
|
|
226
|
+
| Tool | Description |
|
|
227
|
+
|------|-------------|
|
|
228
|
+
| `keep_export_note` | Export note as PDF, DOCX, or Markdown — saved to `~/Desktop/KeepExports/` |
|
|
229
|
+
|
|
230
|
+
### Insights
|
|
231
|
+
|
|
232
|
+
| Tool | Description |
|
|
233
|
+
|------|-------------|
|
|
234
|
+
| `keep_get_analytics` | Full stats — total notes, label usage, oldest/newest, colors |
|
|
235
|
+
| `keep_get_weekly_digest` | Smart digest — pinned, recently updated, notes by label |
|
|
236
|
+
|
|
237
|
+
### Templates
|
|
238
|
+
|
|
239
|
+
| Tool | Description |
|
|
240
|
+
|------|-------------|
|
|
241
|
+
| `keep_list_templates` | List all available templates |
|
|
242
|
+
| `keep_create_from_template` | Create a note from a pre-built template |
|
|
243
|
+
|
|
244
|
+
**Available templates:** `meeting` · `journal` · `project` · `shopping` · `ideas`
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## 💬 Example Prompts
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
Create a note titled "Weekend Plans" with a list of things to do
|
|
252
|
+
```
|
|
253
|
+
```
|
|
254
|
+
Search my notes for anything about Python
|
|
255
|
+
```
|
|
256
|
+
```
|
|
257
|
+
Set a reminder for my "Internship Application" note for tomorrow at 9am
|
|
258
|
+
```
|
|
259
|
+
```
|
|
260
|
+
Export my "MCP Concepts" note as a PDF
|
|
261
|
+
```
|
|
262
|
+
```
|
|
263
|
+
Auto-label all my notes
|
|
264
|
+
```
|
|
265
|
+
```
|
|
266
|
+
Give me a weekly digest of my Google Keep notes
|
|
267
|
+
```
|
|
268
|
+
```
|
|
269
|
+
Show me analytics about my notes
|
|
270
|
+
```
|
|
271
|
+
```
|
|
272
|
+
Create a meeting note for today's standup
|
|
273
|
+
```
|
|
274
|
+
```
|
|
275
|
+
Add collaborator friend@gmail.com to my "Project Plan" note
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## ❌ Known Limitations
|
|
281
|
+
|
|
282
|
+
- **Image attachment** — Attaching images inside notes is not supported (Google's private upload endpoint is unavailable via this library)
|
|
283
|
+
- **Native reminder bell** — Keep's built-in reminder bell cannot be set via this method; reminders are created in Google Tasks instead (fully functional with notifications)
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 📄 License
|
|
288
|
+
|
|
289
|
+
MIT © Muhammad Abubakar
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = ["setuptools>=69", "wheel"]
|
|
3
|
-
build-backend = "setuptools.build_meta"
|
|
4
|
-
|
|
5
1
|
[project]
|
|
6
2
|
name = "google-keep-notes-mcp"
|
|
7
|
-
version = "0.
|
|
8
|
-
description = "MCP server for Google Keep"
|
|
3
|
+
version = "0.2.0"
|
|
4
|
+
description = "MCP server for Google Keep — connect Claude, Copilot & ChatGPT to Google Keep"
|
|
9
5
|
readme = "README.md"
|
|
10
6
|
requires-python = ">=3.10"
|
|
11
7
|
dependencies = [
|
|
12
8
|
"gkeepapi>=0.17.1",
|
|
9
|
+
"gpsoauth>=1.1.0",
|
|
13
10
|
"google-api-python-client>=2.198.0",
|
|
14
11
|
"google-auth-oauthlib>=1.4.0",
|
|
15
12
|
"markdown>=3.10.2",
|