Commit Graph

1566 Commits

Author SHA1 Message Date
Taylor Wilsdon
7c550e55b2 declarative dockerfile 2026-03-09 12:52:00 -04:00
Taylor Wilsdon
d3fde86296 docker py-key-value-aio[disk] 2026-03-09 12:47:40 -04:00
Taylor Wilsdon
6a2633984a Fix grammatical error in README description
Corrected a minor grammatical error in the README.
2026-03-06 11:45:54 -05:00
Taylor Wilsdon
4001e3f868 Refine README content for clarity and detail
Updated the README to enhance the description of features and capabilities, including details about OAuth 2.1 support and hosting options.
2026-03-06 11:45:39 -05:00
Taylor Wilsdon
dc4cefc17c Merge pull request #540 from mickey-mikey/feat/tasks-manage-permission
feat: add tasks:manage permission level
2026-03-05 08:54:43 -05:00
Taylor Wilsdon
c7b0afa74c readme cleanup 2026-03-05 08:52:48 -05:00
Taylor Wilsdon
bf2eb4c0c7 Merge branch 'main' of github.com:taylorwilsdon/google_workspace_mcp into feat/tasks-manage-permission 2026-03-05 08:47:35 -05:00
Taylor Wilsdon
f80f12cb54 Update README.md 2026-03-05 08:04:20 -05:00
mickey-mikey
f26c2f9e87 Merge branch 'taylorwilsdon:main' into feat/tasks-manage-permission 2026-03-05 15:13:08 +11:00
Taylor Wilsdon
c1204815cd Merge pull request #541 from taylorwilsdon/issues/511
fix: only suggest re-authentication for auth-related HTTP errors
2026-03-04 16:38:23 -05:00
Taylor Wilsdon
4cc456602f drive scope fix 2026-03-04 16:36:34 -05:00
github-actions[bot]
3faeb6d832 style: auto-fix ruff lint and format 2026-03-04 14:32:13 +00:00
Taylor Wilsdon
9de1fcb6ea fix: only suggest re-authentication for auth-related HTTP errors
When an HttpError occurs in Google Tasks tools, the error handler now checks
the HTTP status code before suggesting re-authentication. Re-auth messages are
only shown for 401 (Unauthorized) and 403 (Forbidden) errors.

This prevents misleading re-authentication suggestions for non-auth errors like
400 (Bad Request) with malformed arguments, allowing the LLM to focus on the
actual root cause instead of being misdirected by incorrect auth guidance.

The fix applies to both CLI mode (stdio legacy oauth) and MCP mode (OAuth 2.1).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-04 09:30:59 -05:00
mickey-mikey
0e7c2a2318 refactor: move test_tasks_manage_is_valid_level to TestParsePermissionsArg
Addresses CodeRabbit Review 4 nitpick: the test validates
parse_permissions_arg() so it belongs with that test class.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 16:47:29 +11:00
mickey-mikey
acc3e665d0 fix: assert cumulative readonly scope in tasks full-level test
Addresses CodeRabbit Review 3 nitpick: verify TASKS_READONLY_SCOPE is
present at full level, confirming cumulative scope expansion.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 16:40:50 +11:00
mickey-mikey
69dd5069dc fix: add test docstrings and reset fixture per CodeRabbit review
- Add docstrings to test methods for coverage threshold
- Add autouse fixture to reset permission state between tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 16:29:28 +11:00
mickey-mikey
0fce7c78b6 fix: also deny clear_completed under tasks:manage
Addresses CodeRabbit review — clear_completed is destructive and should
be blocked alongside delete at the manage permission level.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 16:21:51 +11:00
mickey-mikey
377791080c feat: add tasks:manage permission level to deny delete without blocking other writes
The consolidated manage_task tool bundles create/update/delete/move into a
single tool, making it impossible to deny just the delete action via tool
tiers or scope-based filtering.

This adds:
- A `manage` permission level for tasks (between readonly and full)
- A SERVICE_DENIED_ACTIONS registry mapping (service, level) to denied actions
- An is_action_denied() helper that tools call before executing actions
- Guards in manage_task and manage_task_list that reject denied actions

Usage: --permissions tasks:manage
Allows create, update, move. Denies delete.
tasks:full remains unchanged (all actions allowed).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:04:31 +11:00
Taylor Wilsdon
89e1974984 chore: release v1.14.2 2026-03-03 18:19:07 -05:00
Taylor Wilsdon
130ed48cc7 Merge pull request #423 from gpminsuk/feat/server-instructions-user-email
feat: Add USER_GOOGLE_EMAIL to server instructions for single-user mode
2026-03-03 17:54:12 -05:00
Taylor Wilsdon
0f941650bb Merge pull request #539 from slowpoison/feature_doc_tab
Add support for GDoc Tabs
2026-03-03 17:47:45 -05:00
Taylor Wilsdon
3d7fc02e84 refac for the better 2026-03-03 17:46:50 -05:00
Taylor Wilsdon
a5a896977f refac 2026-03-03 17:36:21 -05:00
Taylor Wilsdon
548394efbb Merge branch 'main' of github.com:taylorwilsdon/google_workspace_mcp into feature_doc_tab 2026-03-03 17:34:26 -05:00
Vishal Verma
10cdcdd7e5 Add support for GDoc Tabs 2026-03-03 09:12:31 -08:00
Taylor Wilsdon
8a856cfecd Merge pull request #538 from taylorwilsdon/issues/536
enh: better fallback logic for html in emails
2026-03-03 11:28:08 -05:00
github-actions[bot]
95120d6f26 style: auto-fix ruff lint and format 2026-03-03 15:12:33 +00:00
Taylor Wilsdon
92840ac8e8 better fallback logic for html in emails 2026-03-02 09:29:53 -05:00
Taylor Wilsdon
04b9ae027c chore: release v1.14.1 2026-03-01 18:29:25 -05:00
Taylor Wilsdon
d514c6219d Merge pull request #523 from jack-distl/claude/fix-cors-middleware-error-sPbo6
Fix TypeError: CORSMiddleware.__call__() missing 2 required positiona…
2026-03-01 18:29:10 -05:00
Taylor Wilsdon
e999982848 cache test 2026-03-01 18:21:23 -05:00
Taylor Wilsdon
5b5da3386c refac 2026-03-01 18:21:12 -05:00
Taylor Wilsdon
c9facbff3d refac 2026-03-01 17:59:45 -05:00
Taylor Wilsdon
217d727a9d Merge branch 'main' of https://github.com/taylorwilsdon/google_workspace_mcp into claude/fix-cors-middleware-error-sPbo6 2026-03-01 17:47:02 -05:00
Taylor Wilsdon
5af66ee0d2 refac 2026-03-01 17:47:00 -05:00
Taylor Wilsdon
ab5c95a5d0 Merge pull request #532 from isair/fix/pkce-code-verifier
Fix PKCE code verifier not generated for initial OAuth flow
2026-03-01 17:39:59 -05:00
Taylor Wilsdon
662383b8b2 Merge branch 'main' of https://github.com/taylorwilsdon/google_workspace_mcp into fix/pkce-code-verifier 2026-03-01 17:34:12 -05:00
Taylor Wilsdon
8463e4fd29 auth test 2026-03-01 17:34:11 -05:00
Taylor Wilsdon
ef9c6a9c69 make better 2026-03-01 17:34:02 -05:00
Taylor Wilsdon
4d17c83057 chore: release v1.14.0 2026-03-01 17:26:40 -05:00
Taylor Wilsdon
d20685cf78 Merge pull request #533 from taylorwilsdon/issues/526
enh: defusedxml
2026-03-01 17:26:06 -05:00
Taylor Wilsdon
d8567f2beb defusedxml 2026-03-01 17:22:34 -05:00
Taylor Wilsdon
4e48fd2bb5 Merge pull request #531 from taylorwilsdon/tool_consolidation
enh: Tool Consolidation
2026-03-01 17:09:02 -05:00
github-actions[bot]
985a5a780f style: auto-fix ruff lint and format 2026-03-01 22:07:23 +00:00
Taylor Wilsdon
ce296ded29 Merge branch 'tool_consolidation' of https://github.com/taylorwilsdon/google_workspace_mcp into tool_consolidation 2026-03-01 17:07:07 -05:00
Taylor Wilsdon
2c26338296 pr feedback 2026-03-01 17:06:55 -05:00
Taylor Wilsdon
c077b4b4b4 Update gappsscript/apps_script_tools.py
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-03-01 17:04:35 -05:00
Taylor Wilsdon
49073995c9 refac 2026-03-01 16:00:39 -05:00
Baris Sencan
3361ed29e6 Fix PKCE code verifier not being generated for initial OAuth flow
When `create_oauth_flow()` is called without an explicit `code_verifier`
(i.e. during the initial auth flow in `start_auth_flow()`), the function
never sets `autogenerate_code_verifier=True` on the Flow constructor.

oauthlib 3.2+ automatically adds `code_challenge` to the authorization
URL at the session level, so Google expects a matching `code_verifier`
during the token exchange. However, since `Flow.code_verifier` remains
`None`, that `None` gets stored in the session store and later passed
back during the callback — causing Google to reject the token exchange
with `(invalid_grant) Missing code verifier`.

The fix adds `autogenerate_code_verifier=True` in the else branch so
the Flow object generates and exposes a proper PKCE code verifier that
gets stored and reused during the callback token exchange.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-01 18:38:29 +00:00
github-actions[bot]
1f34a8b8cc style: auto-fix ruff lint and format 2026-03-01 18:26:42 +00:00