workspace-mcp 1.1.3__tar.gz → 1.1.4__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.
- {workspace_mcp-1.1.3/workspace_mcp.egg-info → workspace_mcp-1.1.4}/PKG-INFO +29 -9
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/README.md +28 -8
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/auth/scopes.py +10 -1
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/auth/service_decorator.py +8 -2
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/core/server.py +3 -0
- workspace_mcp-1.1.4/gTasks/__init__.py +5 -0
- workspace_mcp-1.1.4/gTasks/tasks_tools.py +732 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/main.py +6 -4
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/pyproject.toml +2 -2
- workspace_mcp-1.1.4/tests/test_oauth_callback_server.py +41 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4/workspace_mcp.egg-info}/PKG-INFO +29 -9
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/workspace_mcp.egg-info/SOURCES.txt +5 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/workspace_mcp.egg-info/top_level.txt +1 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/LICENSE +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/auth/__init__.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/auth/google_auth.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/auth/oauth_callback_server.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/auth/oauth_responses.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/core/__init__.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/core/comments.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/core/context.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/core/utils.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gcalendar/__init__.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gcalendar/calendar_tools.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gchat/__init__.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gchat/chat_tools.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gdocs/__init__.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gdocs/docs_tools.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gdrive/__init__.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gdrive/drive_tools.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gforms/__init__.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gforms/forms_tools.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gmail/__init__.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gmail/gmail_tools.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gsheets/__init__.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gsheets/sheets_tools.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gslides/__init__.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/gslides/slides_tools.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/setup.cfg +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/tests/test_auth.py +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/workspace_mcp.egg-info/dependency_links.txt +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/workspace_mcp.egg-info/entry_points.txt +0 -0
- {workspace_mcp-1.1.3 → workspace_mcp-1.1.4}/workspace_mcp.egg-info/requires.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: workspace-mcp
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.4
|
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
|
@@ -53,7 +53,9 @@ Dynamic: license-file
|
|
53
53
|
|
54
54
|
**This is the single most feature-complete Google Workspace MCP server**
|
55
55
|
|
56
|
-
*Full natural language control over Google Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, and Chat through all MCP clients, AI assistants and developer tools
|
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
|
+
|
58
|
+
###### Support for all free Google accounts (Gmail, Docs, Drive etc) & Google Workspace plans (Starter, Standard, Plus, Enterprise, Non Profit etc) with their expanded app options like Chat & Spaces.
|
57
59
|
|
58
60
|
</div>
|
59
61
|
|
@@ -85,11 +87,11 @@ Dynamic: license-file
|
|
85
87
|
> In this case, Sonnet 4 took a pass & a human (me) verified them 6/28/25.
|
86
88
|
|
87
89
|
|
88
|
-
##
|
90
|
+
## Overview
|
89
91
|
|
90
92
|
A production-ready MCP server that integrates all major Google Workspace services with AI assistants. Built with FastMCP for optimal performance, featuring advanced authentication handling, service caching, and streamlined development patterns.
|
91
93
|
|
92
|
-
##
|
94
|
+
## Features
|
93
95
|
|
94
96
|
- **🔐 Advanced OAuth 2.0**: Secure authentication with automatic token refresh, transport-aware callback handling, session management, and centralized scope management
|
95
97
|
- **📅 Google Calendar**: Full calendar management with event CRUD operations
|
@@ -99,6 +101,7 @@ A production-ready MCP server that integrates all major Google Workspace service
|
|
99
101
|
- **📊 Google Sheets**: Comprehensive spreadsheet management with flexible cell operations and comment management
|
100
102
|
- **🖼️ Google Slides**: Presentation management with slide creation, updates, content manipulation, and comment management
|
101
103
|
- **📝 Google Forms**: Form creation, retrieval, publish settings, and response management
|
104
|
+
- **✓ Google Tasks**: Complete task and task list management with hierarchy, due dates, and status tracking
|
102
105
|
- **💬 Google Chat**: Space management and messaging capabilities
|
103
106
|
- **🔄 Multiple Transports**: HTTP with SSE fallback, OpenAPI compatibility via `mcpo`
|
104
107
|
- **⚡ High Performance**: Service caching, thread-safe sessions, FastMCP integration
|
@@ -121,7 +124,7 @@ export GOOGLE_OAUTH_CLIENT_SECRET="your-client-secret"
|
|
121
124
|
uvx workspace-mcp
|
122
125
|
|
123
126
|
# Start with specific tools only
|
124
|
-
uvx workspace-mcp --tools gmail drive calendar
|
127
|
+
uvx workspace-mcp --tools gmail drive calendar tasks
|
125
128
|
|
126
129
|
# Start in HTTP mode for debugging
|
127
130
|
uvx workspace-mcp --transport streamable-http
|
@@ -149,7 +152,7 @@ uv run main.py
|
|
149
152
|
|
150
153
|
1. **Google Cloud Setup**:
|
151
154
|
- Create OAuth 2.0 credentials (web application) in [Google Cloud Console](https://console.cloud.google.com/)
|
152
|
-
- Enable APIs: Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Chat
|
155
|
+
- Enable APIs: Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Tasks, Chat
|
153
156
|
- Add redirect URI: `http://localhost:8000/oauth2callback`
|
154
157
|
- Configure credentials using one of these methods:
|
155
158
|
|
@@ -201,7 +204,7 @@ uv run main.py --transport streamable-http
|
|
201
204
|
uv run main.py --single-user
|
202
205
|
|
203
206
|
# Selective tool registration (only register specific tools)
|
204
|
-
uv run main.py --tools gmail drive calendar
|
207
|
+
uv run main.py --tools gmail drive calendar tasks
|
205
208
|
uv run main.py --tools sheets docs
|
206
209
|
uv run main.py --single-user --tools gmail # Can combine with other flags
|
207
210
|
|
@@ -210,7 +213,7 @@ docker build -t workspace-mcp .
|
|
210
213
|
docker run -p 8000:8000 -v $(pwd):/app workspace-mcp --transport streamable-http
|
211
214
|
```
|
212
215
|
|
213
|
-
**Available Tools for `--tools` flag**: `gmail`, `drive`, `calendar`, `docs`, `sheets`, `forms`, `chat`
|
216
|
+
**Available Tools for `--tools` flag**: `gmail`, `drive`, `calendar`, `docs`, `sheets`, `forms`, `tasks`, `chat`
|
214
217
|
|
215
218
|
### Connect to Claude Desktop
|
216
219
|
|
@@ -254,7 +257,7 @@ After running the script, just restart Claude Desktop and you're ready to go.
|
|
254
257
|
|
255
258
|
**Get Google OAuth Credentials** (if you don't have them):
|
256
259
|
- Go to [Google Cloud Console](https://console.cloud.google.com/)
|
257
|
-
- Create a new project and enable APIs: Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Chat
|
260
|
+
- Create a new project and enable APIs: Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Tasks, Chat
|
258
261
|
- Create OAuth 2.0 Client ID (Web application) with redirect URI: `http://localhost:8000/oauth2callback`
|
259
262
|
|
260
263
|
**Development Installation (For Contributors)**:
|
@@ -392,6 +395,23 @@ When calling a tool:
|
|
392
395
|
| `get_form_response` | Get individual form response details |
|
393
396
|
| `list_form_responses` | List all responses to a form with pagination |
|
394
397
|
|
398
|
+
### ✓ Google Tasks ([`tasks_tools.py`](gtasks/tasks_tools.py))
|
399
|
+
|
400
|
+
| Tool | Description |
|
401
|
+
|------|-------------|
|
402
|
+
| `list_task_lists` | List all task lists with pagination support |
|
403
|
+
| `get_task_list` | Retrieve details of a specific task list |
|
404
|
+
| `create_task_list` | Create new task lists with custom titles |
|
405
|
+
| `update_task_list` | Modify existing task list titles |
|
406
|
+
| `delete_task_list` | Remove task lists and all contained tasks |
|
407
|
+
| `list_tasks` | List tasks in a specific list with filtering options |
|
408
|
+
| `get_task` | Retrieve detailed information about a specific task |
|
409
|
+
| `create_task` | Create new tasks with title, notes, due dates, and hierarchy |
|
410
|
+
| `update_task` | Modify task properties including title, notes, status, and due dates |
|
411
|
+
| `delete_task` | Remove tasks from task lists |
|
412
|
+
| `move_task` | Reposition tasks within lists or move between lists |
|
413
|
+
| `clear_completed_tasks` | Hide all completed tasks from a list |
|
414
|
+
|
395
415
|
### 💬 Google Chat ([`chat_tools.py`](gchat/chat_tools.py))
|
396
416
|
|
397
417
|
| Tool | Description |
|
@@ -11,7 +11,9 @@
|
|
11
11
|
|
12
12
|
**This is the single most feature-complete Google Workspace MCP server**
|
13
13
|
|
14
|
-
*Full natural language control over Google Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, and Chat through all MCP clients, AI assistants and developer tools
|
14
|
+
*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.*
|
15
|
+
|
16
|
+
###### Support for all free Google accounts (Gmail, Docs, Drive etc) & Google Workspace plans (Starter, Standard, Plus, Enterprise, Non Profit etc) with their expanded app options like Chat & Spaces.
|
15
17
|
|
16
18
|
</div>
|
17
19
|
|
@@ -43,11 +45,11 @@
|
|
43
45
|
> In this case, Sonnet 4 took a pass & a human (me) verified them 6/28/25.
|
44
46
|
|
45
47
|
|
46
|
-
##
|
48
|
+
## Overview
|
47
49
|
|
48
50
|
A production-ready MCP server that integrates all major Google Workspace services with AI assistants. Built with FastMCP for optimal performance, featuring advanced authentication handling, service caching, and streamlined development patterns.
|
49
51
|
|
50
|
-
##
|
52
|
+
## Features
|
51
53
|
|
52
54
|
- **🔐 Advanced OAuth 2.0**: Secure authentication with automatic token refresh, transport-aware callback handling, session management, and centralized scope management
|
53
55
|
- **📅 Google Calendar**: Full calendar management with event CRUD operations
|
@@ -57,6 +59,7 @@ A production-ready MCP server that integrates all major Google Workspace service
|
|
57
59
|
- **📊 Google Sheets**: Comprehensive spreadsheet management with flexible cell operations and comment management
|
58
60
|
- **🖼️ Google Slides**: Presentation management with slide creation, updates, content manipulation, and comment management
|
59
61
|
- **📝 Google Forms**: Form creation, retrieval, publish settings, and response management
|
62
|
+
- **✓ Google Tasks**: Complete task and task list management with hierarchy, due dates, and status tracking
|
60
63
|
- **💬 Google Chat**: Space management and messaging capabilities
|
61
64
|
- **🔄 Multiple Transports**: HTTP with SSE fallback, OpenAPI compatibility via `mcpo`
|
62
65
|
- **⚡ High Performance**: Service caching, thread-safe sessions, FastMCP integration
|
@@ -79,7 +82,7 @@ export GOOGLE_OAUTH_CLIENT_SECRET="your-client-secret"
|
|
79
82
|
uvx workspace-mcp
|
80
83
|
|
81
84
|
# Start with specific tools only
|
82
|
-
uvx workspace-mcp --tools gmail drive calendar
|
85
|
+
uvx workspace-mcp --tools gmail drive calendar tasks
|
83
86
|
|
84
87
|
# Start in HTTP mode for debugging
|
85
88
|
uvx workspace-mcp --transport streamable-http
|
@@ -107,7 +110,7 @@ uv run main.py
|
|
107
110
|
|
108
111
|
1. **Google Cloud Setup**:
|
109
112
|
- Create OAuth 2.0 credentials (web application) in [Google Cloud Console](https://console.cloud.google.com/)
|
110
|
-
- Enable APIs: Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Chat
|
113
|
+
- Enable APIs: Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Tasks, Chat
|
111
114
|
- Add redirect URI: `http://localhost:8000/oauth2callback`
|
112
115
|
- Configure credentials using one of these methods:
|
113
116
|
|
@@ -159,7 +162,7 @@ uv run main.py --transport streamable-http
|
|
159
162
|
uv run main.py --single-user
|
160
163
|
|
161
164
|
# Selective tool registration (only register specific tools)
|
162
|
-
uv run main.py --tools gmail drive calendar
|
165
|
+
uv run main.py --tools gmail drive calendar tasks
|
163
166
|
uv run main.py --tools sheets docs
|
164
167
|
uv run main.py --single-user --tools gmail # Can combine with other flags
|
165
168
|
|
@@ -168,7 +171,7 @@ docker build -t workspace-mcp .
|
|
168
171
|
docker run -p 8000:8000 -v $(pwd):/app workspace-mcp --transport streamable-http
|
169
172
|
```
|
170
173
|
|
171
|
-
**Available Tools for `--tools` flag**: `gmail`, `drive`, `calendar`, `docs`, `sheets`, `forms`, `chat`
|
174
|
+
**Available Tools for `--tools` flag**: `gmail`, `drive`, `calendar`, `docs`, `sheets`, `forms`, `tasks`, `chat`
|
172
175
|
|
173
176
|
### Connect to Claude Desktop
|
174
177
|
|
@@ -212,7 +215,7 @@ After running the script, just restart Claude Desktop and you're ready to go.
|
|
212
215
|
|
213
216
|
**Get Google OAuth Credentials** (if you don't have them):
|
214
217
|
- Go to [Google Cloud Console](https://console.cloud.google.com/)
|
215
|
-
- Create a new project and enable APIs: Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Chat
|
218
|
+
- Create a new project and enable APIs: Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Tasks, Chat
|
216
219
|
- Create OAuth 2.0 Client ID (Web application) with redirect URI: `http://localhost:8000/oauth2callback`
|
217
220
|
|
218
221
|
**Development Installation (For Contributors)**:
|
@@ -350,6 +353,23 @@ When calling a tool:
|
|
350
353
|
| `get_form_response` | Get individual form response details |
|
351
354
|
| `list_form_responses` | List all responses to a form with pagination |
|
352
355
|
|
356
|
+
### ✓ Google Tasks ([`tasks_tools.py`](gtasks/tasks_tools.py))
|
357
|
+
|
358
|
+
| Tool | Description |
|
359
|
+
|------|-------------|
|
360
|
+
| `list_task_lists` | List all task lists with pagination support |
|
361
|
+
| `get_task_list` | Retrieve details of a specific task list |
|
362
|
+
| `create_task_list` | Create new task lists with custom titles |
|
363
|
+
| `update_task_list` | Modify existing task list titles |
|
364
|
+
| `delete_task_list` | Remove task lists and all contained tasks |
|
365
|
+
| `list_tasks` | List tasks in a specific list with filtering options |
|
366
|
+
| `get_task` | Retrieve detailed information about a specific task |
|
367
|
+
| `create_task` | Create new tasks with title, notes, due dates, and hierarchy |
|
368
|
+
| `update_task` | Modify task properties including title, notes, status, and due dates |
|
369
|
+
| `delete_task` | Remove tasks from task lists |
|
370
|
+
| `move_task` | Reposition tasks within lists or move between lists |
|
371
|
+
| `clear_completed_tasks` | Hide all completed tasks from a list |
|
372
|
+
|
353
373
|
### 💬 Google Chat ([`chat_tools.py`](gchat/chat_tools.py))
|
354
374
|
|
355
375
|
| Tool | Description |
|
@@ -52,6 +52,10 @@ FORMS_RESPONSES_READONLY_SCOPE = 'https://www.googleapis.com/auth/forms.response
|
|
52
52
|
SLIDES_SCOPE = 'https://www.googleapis.com/auth/presentations'
|
53
53
|
SLIDES_READONLY_SCOPE = 'https://www.googleapis.com/auth/presentations.readonly'
|
54
54
|
|
55
|
+
# Google Tasks API scopes
|
56
|
+
TASKS_SCOPE = 'https://www.googleapis.com/auth/tasks'
|
57
|
+
TASKS_READONLY_SCOPE = 'https://www.googleapis.com/auth/tasks.readonly'
|
58
|
+
|
55
59
|
# Base OAuth scopes required for user identification
|
56
60
|
BASE_SCOPES = [
|
57
61
|
USERINFO_EMAIL_SCOPE,
|
@@ -104,5 +108,10 @@ SLIDES_SCOPES = [
|
|
104
108
|
SLIDES_READONLY_SCOPE
|
105
109
|
]
|
106
110
|
|
111
|
+
TASKS_SCOPES = [
|
112
|
+
TASKS_SCOPE,
|
113
|
+
TASKS_READONLY_SCOPE
|
114
|
+
]
|
115
|
+
|
107
116
|
# Combined scopes for all supported Google Workspace operations
|
108
|
-
SCOPES = list(set(BASE_SCOPES + CALENDAR_SCOPES + DRIVE_SCOPES + GMAIL_SCOPES + DOCS_SCOPES + CHAT_SCOPES + SHEETS_SCOPES + FORMS_SCOPES + SLIDES_SCOPES))
|
117
|
+
SCOPES = list(set(BASE_SCOPES + CALENDAR_SCOPES + DRIVE_SCOPES + GMAIL_SCOPES + DOCS_SCOPES + CHAT_SCOPES + SHEETS_SCOPES + FORMS_SCOPES + SLIDES_SCOPES + TASKS_SCOPES))
|
@@ -18,7 +18,8 @@ from auth.scopes import (
|
|
18
18
|
SHEETS_READONLY_SCOPE, SHEETS_WRITE_SCOPE,
|
19
19
|
CHAT_READONLY_SCOPE, CHAT_WRITE_SCOPE, CHAT_SPACES_SCOPE,
|
20
20
|
FORMS_BODY_SCOPE, FORMS_BODY_READONLY_SCOPE, FORMS_RESPONSES_READONLY_SCOPE,
|
21
|
-
SLIDES_SCOPE, SLIDES_READONLY_SCOPE
|
21
|
+
SLIDES_SCOPE, SLIDES_READONLY_SCOPE,
|
22
|
+
TASKS_SCOPE, TASKS_READONLY_SCOPE
|
22
23
|
)
|
23
24
|
|
24
25
|
# Service configuration mapping
|
@@ -30,7 +31,8 @@ SERVICE_CONFIGS = {
|
|
30
31
|
"sheets": {"service": "sheets", "version": "v4"},
|
31
32
|
"chat": {"service": "chat", "version": "v1"},
|
32
33
|
"forms": {"service": "forms", "version": "v1"},
|
33
|
-
"slides": {"service": "slides", "version": "v1"}
|
34
|
+
"slides": {"service": "slides", "version": "v1"},
|
35
|
+
"tasks": {"service": "tasks", "version": "v1"}
|
34
36
|
}
|
35
37
|
|
36
38
|
|
@@ -72,6 +74,10 @@ SCOPE_GROUPS = {
|
|
72
74
|
# Slides scopes
|
73
75
|
"slides": SLIDES_SCOPE,
|
74
76
|
"slides_read": SLIDES_READONLY_SCOPE,
|
77
|
+
|
78
|
+
# Tasks scopes
|
79
|
+
"tasks": TASKS_SCOPE,
|
80
|
+
"tasks_read": TASKS_READONLY_SCOPE,
|
75
81
|
}
|
76
82
|
|
77
83
|
# Service cache: {cache_key: (service, cached_time, user_email)}
|