Google Agent Development Kit: Five Languages, One Architecture

Google‘s Agent Development Kit (ADK) now covers five languages — Python, Go, TypeScript, Java, and Kotlin — removing the assumption that agent frameworks require a Python-only stack. Each language version is built natively for its own runtime and type system while sharing a unified architecture and interoperating through open protocols. ADK ships a Model Context Protocol (MCP) client in every language, so a custom tool exposed as an MCP server can be called from any of them. For multi-agent systems, the Agent2Agent (A2A) protocol lets agents communicate over HTTP, making agents written in different languages or frameworks interoperable.

Getting started is agent-first: a one-time setup command checks Google Cloud authentication, installs the CLI, and sets up first-party ADK skills in coding agents such as Antigravity, Claude Code, or Codex. The Python and Kotlin repositories also ship agent builder skills, and the adk.dev/llms.txt resource gives coding agents on-demand API documentation across all five languages. Coding-agent skills scaffold a project while MCP and A2A connect the language runtimes.

Python is ADK‘s reference implementation, with the broadest set of Google Cloud integrations (BigQuery, Spanner, Bigtable) and model adapters (Gemini, Anthropic, OpenAI, LiteLLM). It needs no decorator or schema builder: a plain function passed to the tools parameter is inspected at startup to build the tool declaration and Pydantic schema from its signature, type hints, and docstring. Its eval tooling scores agent trajectories against golden datasets in CI, even when the production service runs in another language.

Go targets production backend engineering. A Go tool function takes agent.Context and a strongly typed input struct; functiontool.New uses generics to infer input and output schemas from struct tags, so the compiler verifies the function contract before the binary runs. Go was the first language after Python to ship the ADK 2.0 Graph Workflow runtime, and it stands out on Cloud Run and GKE: a compiled agent packages onto a roughly 2 MiB distroless static base image, with no VM or heavy dependency tree. Goroutines (2 KB stacks) let a single instance multiplex thousands of concurrent streaming requests and tool calls. ADK for Go also includes built-in A2A server handlers and OpenTelemetry tracing.

TypeScript pairs with Zod because runtime reflection is unavailable after compilation. A z.object schema passed to FunctionTool provides runtime input validation, the JSON Schema sent to the model, and IDE autocomplete in the execute callback from one source of truth. TypeScript runs on the ADK 2.0 Graph Workflow engine and ships a standalone browser bundle, so agents can run in a browser tab using WebMCP and Chrome’s on-device Prompt API.

Java targets teams standardized on Maven, Gradle, and Spring Boot. Developers add @Schema annotations to parameters and assemble agents with a fluent LlmAgent.builder() API. The runner streams agent events reactively through RxJava, and there is a Maven Dev UI plugin plus first-party bridges for Spring AI and LangChain4j.

Kotlin emphasizes build-time safety. Its KSP compiler plugin reads @Tool and @Param annotations at build time and emits the tool schema directly into bytecode, so unsupported types or default values on non-nullable parameters fail the Gradle build instead of breaking in production. Because .generatedTools() uses zero runtime reflection, it survives Android R8 shrinking. That design allows the entire agent loop to run locally on Android, with LiteRT-LM for tool calling, ML Kit (Gemini Nano) for text generation, Room and AppSearch for local state, and Android AppFunctions for OS-level actions — all without a network connection.

The takeaway is choice without compromise: every ADK version speaks MCP and A2A, so each component of a system can use the language that fits it best.

One Agent Development Kit, five languages

View Original