Commit Graph

187 Commits

Author SHA1 Message Date
Taylor Wilsdon
b95a87e15a add memory and disk storage backends, readme 2025-12-27 12:06:20 -08:00
Jackson Cooper
97284a3522 Merge branch 'main' of github.com:taylorwilsdon/google_workspace_mcp into feature/google-drive-permissions 2025-12-19 19:24:36 +11:00
Jackson Cooper
32347d9543 Merge origin/main 2025-12-16 07:13:03 +11:00
Taylor Wilsdon
31a46348b5 package updates 2025-12-14 15:34:49 -05:00
Jackson Cooper
70bdaece23 Add Google Drive sharing and permission tools
New tools: share_drive_file, batch_share_drive_file, get_drive_shareable_link,
get_drive_file_permissions, update_drive_permission, remove_drive_permission,
transfer_drive_ownership

share_drive_file supports user/group/domain/anyone types, so there's no need
for a separate make_drive_file_public tool.
2025-12-14 18:03:04 +11:00
Taylor Wilsdon
5ee1c19871 Update README.md
Add claude code docs
2025-12-08 09:54:51 -05:00
Rob Sherman
541677388b feat(drive): implement update_drive_file function with OAuth scope fix
- Added comprehensive update_drive_file function to modify Google Drive file metadata
- Fixed OAuth scope issue by using 'drive_file' instead of non-existent 'drive_write'
- Supports moving files, renaming, updating descriptions, managing sharing permissions
- Includes support for custom properties and file status (starred/trashed)
- Updated README.md and tool_tiers.yaml documentation
- Successfully tested with all parameters

Fixes #220 (OAuth stdio mode authentication issues)
2025-11-05 22:58:44 -08:00
Taylor Wilsdon
332bc9c9ae Update README.md 2025-11-04 11:17:00 -05:00
Taylor Wilsdon
7ac9087939 Update README.md 2025-11-03 12:21:20 -05:00
Taylor Wilsdon
2fc133ec5a Update README.md 2025-11-03 12:20:42 -05:00
Taylor Wilsdon
39bea59f40 Merge branch 'main' of github.com:taylorwilsdon/google_workspace_mcp into yairwein/main 2025-11-02 08:03:32 -05:00
Taylor Wilsdon
c45ddeba7e Update README.md 2025-11-01 19:59:49 -04:00
Yair Weinberger
241f0987ae feat: add external OAuth 2.1 provider mode for bearer token authentication
Add support for external OAuth 2.1 provider mode where authentication
is handled by external systems that issue Google OAuth access tokens.

**Changes:**

1. **New Environment Variable: `EXTERNAL_OAUTH21_PROVIDER`**
   - Enables external OAuth mode when set to `true`
   - Requires `MCP_ENABLE_OAUTH21=true`
   - Disables protocol-level auth (MCP handshake/tools list work without auth)
   - Requires bearer tokens in Authorization headers for tool calls

2. **New File: `auth/external_oauth_provider.py`**
   - Custom provider extending FastMCP's GoogleProvider
   - Handles ya29.* Google OAuth access tokens
   - Validates tokens via google-auth library + userinfo API
   - Returns properly formatted AccessToken objects

3. **Modified: `auth/oauth_config.py`**
   - Add `external_oauth21_provider` config option
   - Validation that external mode requires OAuth 2.1
   - Helper methods for checking external provider mode

4. **Modified: `core/server.py`**
   - Use ExternalOAuthProvider when external mode enabled
   - Use standard GoogleProvider otherwise
   - Set server.auth = None for external mode (no protocol auth)

5. **Modified: `README.md`**
   - New "External OAuth 2.1 Provider Mode" section
   - Usage examples and configuration
   - Added to environment variables table

**How It Works:**
- MCP handshake and tools/list do NOT require authentication
- Tool calls require `Authorization: Bearer ya29.xxx` headers
- Tokens validated by calling Google's userinfo API
- Multi-user support via per-request authentication
- Stateless-compatible for containerized deployments

**Use Cases:**
- Integrating with existing authentication systems
- Custom OAuth flows managed by your application
- API gateways handling authentication upstream
- Multi-tenant SaaS with centralized auth
- Mobile/web apps with their own OAuth implementation

**Example Configuration:**
```bash
export MCP_ENABLE_OAUTH21=true
export EXTERNAL_OAUTH21_PROVIDER=true
export GOOGLE_OAUTH_CLIENT_ID=your_client_id
export GOOGLE_OAUTH_CLIENT_SECRET=your_client_secret
export WORKSPACE_MCP_STATELESS_MODE=true  # Optional
```

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-24 15:43:29 +03:00
Taylor Wilsdon
95d5c8b4ad remove mcpo 2025-10-19 16:18:42 -04:00
Taylor Wilsdon
b8703d229a refactor pyproject.toml to best practices, chunk out runtime dependencies from dev dependencies 2025-10-07 09:50:23 -04:00
Taylor Wilsdon
923df7eca5 refactor oauth2.1 support to fastmcp native 2025-10-05 18:00:10 -04:00
Taylor Wilsdon
d82c3baa25 Update README.md
Closes #207
2025-09-18 16:32:54 -04:00
Taylor Wilsdon
bf061293cf Merge pull request #206 from emanuilo/update-readme
chore: update readme with export_doc_to_pdf tool
2025-09-18 16:24:53 -04:00
Taylor Wilsdon
b64b950548 Update README.md 2025-09-14 08:43:15 -04:00
Emanuilo Jovanovic
353b9133bf chore: update readme with export_doc_to_pdf tool 2025-09-08 11:34:16 +02:00
Taylor Wilsdon
8f9a46e55b implement WORKSPACE_MCP_STATELESS_MODE 2025-08-23 11:12:21 -04:00
Taylor Wilsdon
f1b06446bc WORKSPACE_EXTERNAL_URL - add an document usage 2025-08-22 09:51:49 -04:00
Taylor Wilsdon
8702415c96 docker tools flag 2025-08-19 16:31:08 -04:00
Taylor Wilsdon
b7b53d6684 Update README.md 2025-08-19 12:23:51 -04:00
Taylor Wilsdon
03cb54a2e1 Merge branch 'main' of https://github.com/taylorwilsdon/google_workspace_mcp into credential-provider 2025-08-18 13:04:36 -04:00
Taylor Wilsdon
8d2167222f Update README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-18 13:04:02 -04:00
Shawn Zhu
13d0d66f4e doc: how to use credential store 2025-08-17 17:41:23 -04:00
Taylor Wilsdon
33907b4776 more fmt 2025-08-17 11:40:56 -04:00
Taylor Wilsdon
ce0838f230 Merge branch 'main' of github.com:taylorwilsdon/google_workspace_mcp into tool_tiers 2025-08-17 11:39:58 -04:00
Taylor Wilsdon
45ea1eb0b5 more fmt 2025-08-17 11:39:54 -04:00
Taylor Wilsdon
f58036cafc better tool tiers 2025-08-17 11:27:23 -04:00
Taylor Wilsdon
f4f73478ba more readme 2025-08-17 11:06:53 -04:00
Taylor Wilsdon
9a60dbeb7d more readme 2025-08-17 11:06:40 -04:00
Taylor Wilsdon
ce0314d361 more readme 2025-08-17 11:05:00 -04:00
Taylor Wilsdon
d5b9ba17dd rearrange table 2025-08-17 11:03:43 -04:00
Taylor Wilsdon
206b0314aa rearrange table 2025-08-17 11:01:58 -04:00
Taylor Wilsdon
811585da2e rearrange table 2025-08-17 10:41:08 -04:00
Taylor Wilsdon
1821c061aa rearrange table 2025-08-17 10:40:11 -04:00
Taylor Wilsdon
942538938b rearrange table 2025-08-17 10:39:47 -04:00
Taylor Wilsdon
cedef24158 rearrange table 2025-08-17 10:38:43 -04:00
Taylor Wilsdon
629958892f rearrange table 2025-08-17 10:37:44 -04:00
Taylor Wilsdon
9113500566 rearrange table 2025-08-17 10:36:49 -04:00
Taylor Wilsdon
8149c6b106 more readme 2025-08-17 10:02:02 -04:00
Taylor Wilsdon
3f5a248dcd more readme 2025-08-17 09:49:41 -04:00
Taylor Wilsdon
62365bbaf5 Update README.md 2025-08-16 20:42:58 -04:00
Taylor Wilsdon
98a8f0673c readme love 2025-08-16 18:50:58 -04:00
Taylor Wilsdon
308d089126 emojis for adults 2025-08-16 18:48:13 -04:00
Taylor Wilsdon
e853de10f5 fix ruff check 2025-08-16 18:10:39 -04:00
Taylor Wilsdon
531fb3b3f9 emojis for adults 2025-08-16 18:03:06 -04:00
Taylor Wilsdon
1e938e81dd overhaul the readme 2025-08-16 17:14:14 -04:00