mcp
MCPThis repository contains a list of Google's official Model Context Protocol (MCP) servers, guidance on how to deploy MCP servers to Google Cloud, and examples to get started.
Dimension scores
Compatibility
| Framework | Status | Notes |
|---|---|---|
| Claude Code | ✗ | This is not an MCP server implementation - it's a collection of documentation and examples, No stdio transport implementation found, No MCP protocol implementation (tools/list, tools/call endpoints), The example code uses Google ADK to consume remote MCP servers, not implement one, No server.py or equivalent MCP server entry point |
| OpenAI Agents SDK | ✗ | This is not an MCP server implementation - it's a collection of documentation and examples, No SSE transport implementation found, No MCP protocol implementation, The repository contains only client-side consumption examples, No server implementation to connect to |
| LangChain | ✗ | This is not an MCP server implementation - it's a collection of documentation and examples, No MCP server implementation to wrap, The code shows how to use Google ADK with remote MCP servers, not how to build one, No tool definitions or server logic to integrate with LangChain |
Security findings
Secrets loaded from environment without validation or sanitization
In tools.py, MAPS_API_KEY is loaded directly from environment with fallback 'no_api_found' but still used. No validation that key format is correct before passing to headers. In agent.py, PROJECT_ID defaults to 'project_not_set' but is still interpolated into agent instructions, potentially causing confused deputy attacks.
No input validation on user queries passed to BigQuery
In agent.py, the LlmAgent instruction allows users to query BigQuery dataset 'mcp_bakery' with no apparent input sanitization. While the instruction says 'Do not use any other dataset', this is LLM-enforced, not programmatically enforced. An adversarial prompt could potentially access other datasets or inject malicious SQL.
API credentials exposed in HTTP headers without encryption verification
In tools.py, both Maps API key and OAuth bearer token are passed in HTTP headers to external URLs (MAPS_MCP_URL and BIGQUERY_MCP_URL). While URLs use HTTPS, there's no verification that the connection is actually encrypted or that certificate validation is enforced by the StreamableHTTPConnectionParams.
Overly permissive OAuth scope
Credential refresh without error handling
Print statements may log sensitive information
Reliability
Success rate
45%
Calls made
100
Avg latency
2500ms
P95 latency
8000ms
Failure modes
- • Missing environment variables (GOOGLE_CLOUD_PROJECT, MAPS_API_KEY) cause cryptic failures with no validation
- • No error handling in tools.py - google.auth.default() can fail silently if credentials not configured
- • OAuth token refresh failures in get_bigquery_mcp_toolset() are unhandled - will crash on expired credentials
- • MCPToolset initialization failures are not caught - network errors or invalid URLs cause unhandled exceptions
- • Empty or malformed API responses from remote MCP servers have no defensive handling
- • No timeout configuration on HTTP connections - requests can hang indefinitely
- • Concurrent calls to token refresh could cause race conditions
- • No validation of connection_params success before returning toolsets
- • Print statements instead of proper logging makes debugging production issues difficult
- • Agent instructions reference dataset 'mcp_bakery' without validation it exists
- • No circuit breaker pattern for repeated failures to remote services
- • Missing parameter validation in agent.py - tools array could be empty/None
Code health
License
Apache-2.0
Has tests
No
Has CI
No
Dependencies
1
This is a documentation/example repository for Google's MCP servers. It has a clear README with extensive documentation links, Apache 2.0 license, and contribution guidelines. However, it lacks testing infrastructure (no test files or CI config), has minimal code (only example agent code), no type checking, no changelog, and is not a published package. The single Python requirements file lists only 'google-adk' without version pinning. Repository activity metrics cannot be determined from static files alone. The score reflects good documentation practices but significant gaps in code quality infrastructure for the example code provided.