workspace-mcp 1.1.5__py3-none-any.whl → 1.1.7__py3-none-any.whl
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.
- core/utils.py +153 -54
- gcalendar/calendar_tools.py +6 -6
- gdocs/docs_tools.py +4 -4
- gdrive/drive_tools.py +5 -5
- gforms/forms_tools.py +5 -5
- gmail/gmail_tools.py +199 -81
- gsheets/sheets_tools.py +7 -7
- gslides/slides_tools.py +25 -25
- gtasks/tasks_tools.py +13 -0
- {workspace_mcp-1.1.5.dist-info → workspace_mcp-1.1.7.dist-info}/METADATA +14 -7
- {workspace_mcp-1.1.5.dist-info → workspace_mcp-1.1.7.dist-info}/RECORD +15 -15
- {workspace_mcp-1.1.5.dist-info → workspace_mcp-1.1.7.dist-info}/WHEEL +0 -0
- {workspace_mcp-1.1.5.dist-info → workspace_mcp-1.1.7.dist-info}/entry_points.txt +0 -0
- {workspace_mcp-1.1.5.dist-info → workspace_mcp-1.1.7.dist-info}/licenses/LICENSE +0 -0
- {workspace_mcp-1.1.5.dist-info → workspace_mcp-1.1.7.dist-info}/top_level.txt +0 -0
gtasks/tasks_tools.py
CHANGED
@@ -13,12 +13,14 @@ from googleapiclient.errors import HttpError
|
|
13
13
|
|
14
14
|
from auth.service_decorator import require_google_service
|
15
15
|
from core.server import server
|
16
|
+
from core.utils import handle_http_errors
|
16
17
|
|
17
18
|
logger = logging.getLogger(__name__)
|
18
19
|
|
19
20
|
|
20
21
|
@server.tool()
|
21
22
|
@require_google_service("tasks", "tasks_read")
|
23
|
+
@handle_http_errors("list_task_lists")
|
22
24
|
async def list_task_lists(
|
23
25
|
service,
|
24
26
|
user_google_email: str,
|
@@ -78,6 +80,7 @@ async def list_task_lists(
|
|
78
80
|
|
79
81
|
@server.tool()
|
80
82
|
@require_google_service("tasks", "tasks_read")
|
83
|
+
@handle_http_errors("get_task_list")
|
81
84
|
async def get_task_list(
|
82
85
|
service,
|
83
86
|
user_google_email: str,
|
@@ -121,6 +124,7 @@ async def get_task_list(
|
|
121
124
|
|
122
125
|
@server.tool()
|
123
126
|
@require_google_service("tasks", "tasks")
|
127
|
+
@handle_http_errors("create_task_list")
|
124
128
|
async def create_task_list(
|
125
129
|
service,
|
126
130
|
user_google_email: str,
|
@@ -168,6 +172,7 @@ async def create_task_list(
|
|
168
172
|
|
169
173
|
@server.tool()
|
170
174
|
@require_google_service("tasks", "tasks")
|
175
|
+
@handle_http_errors("update_task_list")
|
171
176
|
async def update_task_list(
|
172
177
|
service,
|
173
178
|
user_google_email: str,
|
@@ -217,6 +222,7 @@ async def update_task_list(
|
|
217
222
|
|
218
223
|
@server.tool()
|
219
224
|
@require_google_service("tasks", "tasks")
|
225
|
+
@handle_http_errors("delete_task_list")
|
220
226
|
async def delete_task_list(
|
221
227
|
service,
|
222
228
|
user_google_email: str,
|
@@ -256,6 +262,7 @@ async def delete_task_list(
|
|
256
262
|
|
257
263
|
@server.tool()
|
258
264
|
@require_google_service("tasks", "tasks_read")
|
265
|
+
@handle_http_errors("list_tasks")
|
259
266
|
async def list_tasks(
|
260
267
|
service,
|
261
268
|
user_google_email: str,
|
@@ -361,6 +368,7 @@ async def list_tasks(
|
|
361
368
|
|
362
369
|
@server.tool()
|
363
370
|
@require_google_service("tasks", "tasks_read")
|
371
|
+
@handle_http_errors("get_task")
|
364
372
|
async def get_task(
|
365
373
|
service,
|
366
374
|
user_google_email: str,
|
@@ -421,6 +429,7 @@ async def get_task(
|
|
421
429
|
|
422
430
|
@server.tool()
|
423
431
|
@require_google_service("tasks", "tasks")
|
432
|
+
@handle_http_errors("create_task")
|
424
433
|
async def create_task(
|
425
434
|
service,
|
426
435
|
user_google_email: str,
|
@@ -495,6 +504,7 @@ async def create_task(
|
|
495
504
|
|
496
505
|
@server.tool()
|
497
506
|
@require_google_service("tasks", "tasks")
|
507
|
+
@handle_http_errors("update_task")
|
498
508
|
async def update_task(
|
499
509
|
service,
|
500
510
|
user_google_email: str,
|
@@ -576,6 +586,7 @@ async def update_task(
|
|
576
586
|
|
577
587
|
@server.tool()
|
578
588
|
@require_google_service("tasks", "tasks")
|
589
|
+
@handle_http_errors("delete_task")
|
579
590
|
async def delete_task(
|
580
591
|
service,
|
581
592
|
user_google_email: str,
|
@@ -617,6 +628,7 @@ async def delete_task(
|
|
617
628
|
|
618
629
|
@server.tool()
|
619
630
|
@require_google_service("tasks", "tasks")
|
631
|
+
@handle_http_errors("move_task")
|
620
632
|
async def move_task(
|
621
633
|
service,
|
622
634
|
user_google_email: str,
|
@@ -695,6 +707,7 @@ async def move_task(
|
|
695
707
|
|
696
708
|
@server.tool()
|
697
709
|
@require_google_service("tasks", "tasks")
|
710
|
+
@handle_http_errors("clear_completed_tasks")
|
698
711
|
async def clear_completed_tasks(
|
699
712
|
service,
|
700
713
|
user_google_email: str,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: workspace-mcp
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.7
|
4
4
|
Summary: Comprehensive, highly performant Google Workspace Streamable HTTP & SSE MCP Server for Calendar, Gmail, Docs, Sheets, Slides & Drive
|
5
5
|
Author-email: Taylor Wilsdon <taylor@taylorwilsdon.com>
|
6
6
|
License: MIT
|
@@ -47,11 +47,11 @@ Dynamic: license-file
|
|
47
47
|
[](https://opensource.org/licenses/MIT)
|
48
48
|
[](https://www.python.org/downloads/)
|
49
49
|
[](https://pypi.org/project/workspace-mcp/)
|
50
|
-
[](https://pepy.tech/projects/workspace-mcp)
|
51
51
|
[](https://workspacemcp.com)
|
52
52
|
[](https://mseep.ai/app/eebbc4a6-0f8c-41b2-ace8-038e5516dba0)
|
53
53
|
|
54
|
-
**This is the single most feature-complete Google Workspace MCP server**
|
54
|
+
**This is the single most feature-complete Google Workspace MCP server** now with 1-click Claude installation
|
55
55
|
|
56
56
|
*Full natural language control over Google Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Tasks, and Chat through all MCP clients, AI assistants and developer tools.*
|
57
57
|
|
@@ -122,11 +122,12 @@ A production-ready MCP server that integrates all major Google Workspace service
|
|
122
122
|
|
123
123
|
>
|
124
124
|
**Why DXT?**
|
125
|
-
> Desktop Extensions (`.dxt`) bundle the server, dependencies, and manifest so users go from download → working MCP in **
|
125
|
+
> Desktop Extensions (`.dxt`) bundle the server, dependencies, and manifest so users go from download → working MCP in **one click** – no terminal, no JSON editing, no version conflicts.
|
126
126
|
|
127
127
|
#### Required Configuration
|
128
128
|
<details>
|
129
129
|
<summary>Environment - you will configure these in Claude itself, see screenshot:</summary>
|
130
|
+
|
130
131
|
| Variable | Purpose |
|
131
132
|
|----------|---------|
|
132
133
|
| `GOOGLE_OAUTH_CLIENT_ID` | OAuth client ID from Google Cloud |
|
@@ -136,8 +137,10 @@ A production-ready MCP server that integrates all major Google Workspace service
|
|
136
137
|
|
137
138
|
Claude Desktop stores these securely in the OS keychain; set them once in the extension pane.
|
138
139
|
</details>
|
139
|
-
Screenshot here
|
140
140
|
|
141
|
+
<div align="center">
|
142
|
+
<video width="832" src="https://github.com/user-attachments/assets/83cca4b3-5e94-448b-acb3-6e3a27341d3a"></video>
|
143
|
+
</div>
|
141
144
|
---
|
142
145
|
|
143
146
|
### 2. Advanced / Cross-Platform Installation
|
@@ -308,8 +311,12 @@ After running the script, just restart Claude Desktop and you're ready to go.
|
|
308
311
|
"mcpServers": {
|
309
312
|
"google_workspace": {
|
310
313
|
"command": "uv",
|
311
|
-
"args": [
|
312
|
-
|
314
|
+
"args": [
|
315
|
+
"run",
|
316
|
+
"--directory",
|
317
|
+
"/path/to/repo/google_workspace_mcp",
|
318
|
+
"main.py"
|
319
|
+
],
|
313
320
|
"env": {
|
314
321
|
"GOOGLE_OAUTH_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
|
315
322
|
"GOOGLE_OAUTH_CLIENT_SECRET": "your-client-secret",
|
@@ -9,28 +9,28 @@ core/__init__.py,sha256=AHVKdPl6v4lUFm2R-KuGuAgEmCyfxseMeLGtntMcqCs,43
|
|
9
9
|
core/comments.py,sha256=vVfZYjH0kwqFyXcwvBx3m0Ko4WmfTJTkfD3dCQbucuc,11215
|
10
10
|
core/context.py,sha256=zNgPXf9EO2EMs9sQkfKiywoy6sEOksVNgOrJMA_c30Y,768
|
11
11
|
core/server.py,sha256=En_sV6Z19kWx8SO4KAnh8Qg5v2HYw8f9f_WJdEGMDSA,9301
|
12
|
-
core/utils.py,sha256=
|
12
|
+
core/utils.py,sha256=QLgyM-XNJiAqmr-ac9SLXJBWpN8VxvNurxdW0Ib2N7s,13096
|
13
13
|
gcalendar/__init__.py,sha256=D5fSdAwbeomoaj7XAdxSnIy-NVKNkpExs67175bOtfc,46
|
14
|
-
gcalendar/calendar_tools.py,sha256=
|
14
|
+
gcalendar/calendar_tools.py,sha256=mlWIn26dw7fNGqiIb8NUQNnPsP0b0RJGzp4BvvC85Fk,22193
|
15
15
|
gchat/__init__.py,sha256=XBjH4SbtULfZHgFCxk3moel5XqG599HCgZWl_veIncg,88
|
16
16
|
gchat/chat_tools.py,sha256=cIeXBBxWkFCdQNJ23BkX8IoDho6J8ZcfLsPjctUWyfA,7274
|
17
17
|
gdocs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
|
-
gdocs/docs_tools.py,sha256=
|
18
|
+
gdocs/docs_tools.py,sha256=WrCjya2-MvM7b-DwFAhoXPcV2kNxq4I0V_xaqV3a1ZI,8494
|
19
19
|
gdrive/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
20
|
-
gdrive/drive_tools.py,sha256=
|
20
|
+
gdrive/drive_tools.py,sha256=NWna_uQ7dmXV4kRPX01A0P7so0sjRfq5awWczg6sloU,15310
|
21
21
|
gforms/__init__.py,sha256=pL91XixrEp9YjpM-AYwONIEfeCP2OumkEG0Io5V4boE,37
|
22
|
-
gforms/forms_tools.py,sha256=
|
22
|
+
gforms/forms_tools.py,sha256=0zxXFd1JnHPjCHJp_d1id9UYGxbW3UCklBmVlZTRLHo,9597
|
23
23
|
gmail/__init__.py,sha256=l8PZ4_7Oet6ZE7tVu9oQ3-BaRAmI4YzAO86kf9uu6pU,60
|
24
|
-
gmail/gmail_tools.py,sha256=
|
24
|
+
gmail/gmail_tools.py,sha256=3RpnrjFX_E5d8KUKsyx_K8fWMkDdj01mxha9vZBGwn4,28825
|
25
25
|
gsheets/__init__.py,sha256=jFfhD52w_EOVw6N5guf_dIc9eP2khW_eS9UAPJg_K3k,446
|
26
|
-
gsheets/sheets_tools.py,sha256=
|
26
|
+
gsheets/sheets_tools.py,sha256=dUXtlpjxhRnPTN4Y0mklrMtW4noqezBfj8Rga2ivw74,11954
|
27
27
|
gslides/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
|
-
gslides/slides_tools.py,sha256=
|
28
|
+
gslides/slides_tools.py,sha256=m9FifqBLPFo_tdxH6mvH1-fDUarAnr_ejJ9oMlgKiYQ,10094
|
29
29
|
gtasks/__init__.py,sha256=qwOWUzQbkYLSBrdhCqEkAWPH2lEOljk1mLtrlab9YZc,107
|
30
|
-
gtasks/tasks_tools.py,sha256=
|
31
|
-
workspace_mcp-1.1.
|
32
|
-
workspace_mcp-1.1.
|
33
|
-
workspace_mcp-1.1.
|
34
|
-
workspace_mcp-1.1.
|
35
|
-
workspace_mcp-1.1.
|
36
|
-
workspace_mcp-1.1.
|
30
|
+
gtasks/tasks_tools.py,sha256=6zmZsZ-8JWUpOIDhvxuBIJsjB9bH8LrdUX0yVlsjlM8,26508
|
31
|
+
workspace_mcp-1.1.7.dist-info/licenses/LICENSE,sha256=bB8L7rIyRy5o-WHxGgvRuY8hUTzNu4h3DTkvyV8XFJo,1070
|
32
|
+
workspace_mcp-1.1.7.dist-info/METADATA,sha256=uQGTgL89fLrgbowJiorKLgmxV340TMvAjNkIFgj61nU,23544
|
33
|
+
workspace_mcp-1.1.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
34
|
+
workspace_mcp-1.1.7.dist-info/entry_points.txt,sha256=kPiEfOTuf-ptDM0Rf2OlyrFudGW7hCZGg4MCn2Foxs4,44
|
35
|
+
workspace_mcp-1.1.7.dist-info/top_level.txt,sha256=uAg7uV2mETWYRw5g80XtO1lhxVO1sY6_IihNdG_4n24,80
|
36
|
+
workspace_mcp-1.1.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|