Overview
The Google Agent Development Kit (ADK) supports MCP servers as external tool sources viaMCPToolset. Connect it to an ezForge Ready MCP server to give Gemini agents access to a business’s data and capabilities.
Prerequisites
- An ezForge Ready business with a deployed MCP server
- Your MCP server URL (format:
https://<slug>.mcp.ezforge.ai) google-adkPython package installed (pip install google-adk)- A Google AI Studio API key or Vertex AI project
Connecting via the Google ADK
<slug> with your business slug.
Transport: StreamableHTTP
ezForge Ready servers use the StreamableHTTP transport for Gemini ADK connections. The/.well-known/mcp-server-metadata endpoint advertises this via:
StreamableHTTPServerParams — do not append /sse.
OAuth 2.1 Authentication
ezForge Ready servers require OAuth 2.1 with PKCE. The ADKMCPToolset performs discovery and token acquisition automatically.
Discovery chain:
GET https://<slug>.mcp.ezforge.ai/.well-known/oauth-protected-resource→ authorization server URL (RFC 9728)GET <authorization-server>/.well-known/oauth-authorization-server→ token and authorization endpoints (RFC 8414)
headers parameter of StreamableHTTPServerParams:
Tool Schema Mapping
The Google ADK automatically converts MCP JSON Schema tool definitions to GeminiFunctionDeclaration format. The type mapping is:
| JSON Schema type | Gemini type |
|---|---|
string | STRING |
number | NUMBER |
integer | INTEGER |
boolean | BOOLEAN |
array | ARRAY |
object | OBJECT |
Agent Discovery
Discover Ready businesses via the ezForge directory and construct theStreamableHTTPServerParams dynamically:
Available Tools
See the Claude Integration Guide for the full tool reference. All tools work identically across Claude, ChatGPT, and Gemini — the MCP protocol is agent-agnostic.Troubleshooting
MCPToolset import error — ensure you are on google-adk >= 0.2.0. Earlier versions did not include MCP support.
Connection timeout — ezForge Ready servers have a 30-minute session TTL. If your ADK session is idle for longer, reconnect by calling MCPToolset.from_server() again.
Tool call returns null result — check that the business’s vertical template is deployed and that the requested tool exists for that vertical. Use get_business_info to confirm the server is reachable before calling vertical-specific tools.
OAuth discovery fails — ensure EZFORGE_MCP_PUBLIC_URL is reachable from the network where the ADK is running. The ADK fetches /.well-known/oauth-protected-resource during initialization; if this URL is blocked, authentication will fail silently.