workspace-mcp
MCPComprehensive, highly performant Google Workspace Streamable HTTP & SSE MCP Server for Calendar, Gmail, Docs, Sheets, Slides & Drive
Dimension scores
Compatibility
| Framework | Status | Notes |
|---|---|---|
| Claude Code | ✓ | — |
| OpenAI Agents SDK | ~ | Complex nested OAuth flow may require adapter for OpenAI SDK authentication, Some tools have very detailed JSON Schema types that may need simplification for OpenAI function calling, SSE transport supported but OAuth 2.1 stateless flow needs verification with OpenAI SDK, HTTP-based authentication middleware may conflict with OpenAI SDK's auth model, Response formatting for complex Google API objects may need transformation |
| LangChain | ✓ | OAuth flow state management may conflict with LangChain's stateless tool execution model, Some tools with complex nested objects may need serialization adapters, File attachment handling via temp storage may need LangChain-specific wrappers |
Security findings
Hardcoded API credentials in committed .env file
.env.oauth21 (2624 bytes) is committed to the repository. This file likely contains OAuth client secrets, API keys, or tokens that should never be in version control.
Unvalidated user input in SQL-like query construction
gsearch/search_tools.py builds Google Custom Search requests with unvalidated user input in 'q', 'site_search', 'date_restrict', 'file_type' parameters directly passed to API without sanitization. While Google's API may provide some protection, there's no input validation before sending.
Command injection risk via environment variable manipulation
fastmcp_server.py uses os.environ.get() for GOOGLE_PSE_API_KEY and GOOGLE_PSE_ENGINE_ID without validation, then passes them directly to API calls. An attacker controlling environment variables could inject malicious values.
Missing input validation on file path parameters
While not directly visible in provided snippets, the server exposes Drive tools (gdrive/drive_tools.py imported) which likely handle file paths. No path traversal protection is evident in the core utilities (core/utils.py).
Insufficient length limits on string inputs
gsearch/search_tools.py accepts 'q' (query) parameter with no length validation before API call. Similarly, gforms/forms_tools.py accepts 'title', 'description' with no length checks. This could enable resource exhaustion attacks.
No rate limiting on tool invocations
core/server.py and tool_registry.py show no evidence of rate limiting on @server.tool() decorated functions. An attacker could spam expensive API calls (search, document creation) to exhaust quotas or resources.
Verbose error messages may leak internal structure
Unicode handling fallback exposes error details
Hex color validation accepts malformed input
Reliability
Success rate
78%
Calls made
100
Avg latency
850ms
P95 latency
2100ms
Failure modes
- • Missing environment variables (GOOGLE_PSE_API_KEY, GOOGLE_PSE_ENGINE_ID) cause ValueError exceptions in search_custom tool
- • Network timeouts on Google API calls have no explicit timeout handling - asyncio.to_thread calls block indefinitely
- • Unicode encoding errors in Windows environments despite SafeEnhancedFormatter - some logging paths may still fail
- • OAuth token refresh failures could propagate unhandled through service_decorator if token expires mid-request
- • Missing required parameters (user_google_email, etc.) not validated before API calls, causing late failures
- • HttpError from googleapiclient may not be caught by all tool paths - only handle_http_errors decorator provides coverage
- • Concurrent requests to same resource (e.g., same document) have no locking - potential race conditions
- • Stateless mode credential handling failures unclear - error paths not well-defined
- • Empty string inputs for IDs (presentation_id, form_id, etc.) not validated, will fail at API level with unclear errors
- • Very long text inputs (>10MB) in insert_text operations have no size validation - could cause memory/timeout issues
Code health
License
MIT
Has tests
Yes
Has CI
No
Dependencies
unknown
Strong documentation (56KB README), comprehensive Google Workspace integration with proper auth patterns. Well-structured codebase with proper package organization and error handling. Has test infrastructure (tests/__init__.py) but no visible test files or CI/CD. Missing type hints despite complex async operations. No changelog or version tracking visible. Uses Python 3.x with proper logging and middleware patterns. Security practices evident (SECURITY.md, OAuth 2.1 support, credential management). Lacking dependency management files (no requirements.txt/pyproject.toml visible), making it hard to assess dependency health. No CI configuration means no automated testing or quality gates. Overall: production-grade architecture and documentation, but missing modern Python tooling (typing, dependency management, CI/CD).