adk_mcp
adk_mcp provides MCP (Model Context Protocol) client primitives for Dart.
It includes:
- Streamable HTTP MCP client (
McpRemoteClient) - stdio MCP client (
McpStdioClient) - MCP constants, method names, protocol version handling, and JSON-RPC helpers
Platform Support Matrix (Current)
Status legend:
YSupportedPartialPartially supported / environment dependentNNot supported
| Feature / Surface | Dart VM / CLI | Flutter (Android/iOS/Linux/macOS/Windows) | Flutter Web | Notes |
|---|---|---|---|---|
McpRemoteClient (Streamable HTTP transport) |
Y | Y | Y | HTTP/HTTPS only (StreamableHTTPConnectionParams). |
| Protocol negotiation + JSON-RPC helper methods | Y | Y | Y | Same protocol behavior across transports/platforms. |
Server message/read loop (readServerMessagesOnce) |
Y | Y | Y | Web requires CORS-compatible MCP endpoint for browser access. |
McpStdioClient transport |
Y | Partial | N | Web uses a stub that throws UnsupportedError; non-web requires local process support. |
StdioConnectionParams process spawn (Process.start) |
Y | Partial | N | Environment-dependent on Flutter runtime/sandbox policies. |
HTTP session termination (terminateSession) |
Y | Y | Y | Uses MCP Streamable HTTP DELETE termination flow. |
| Built-in credential/token lifecycle manager | N | N | N | Headers/tokens are caller-managed. |
Feature Support Matrix (Current)
Status legend:
YSupportedPartialPartial / integration requiredNNot supported yet
Supported / Working
| Area | Feature | Status | Notes |
|---|---|---|---|
| Transport | Streamable HTTP MCP client | Y | JSON-RPC call/notify with initialize handshake support. |
| Transport | stdio MCP client | Y | Child-process based JSON-RPC transport. |
| Protocol | MCP protocol version negotiation | Y | Supports 2025-03-26, 2025-06-18, 2025-11-25. |
| RPC helpers | Tools/resources/prompts/tasks/logging/sampling/roots/elicitation method helpers | Y | High-level helper methods are provided for client calls. |
| Paging | Cursor-based pagination helper (collectPaginatedMaps) |
Y | Works for both HTTP and stdio clients. |
| Server events | Server notification/request callback hooks | Y | onServerMessage / onServerRequest are supported. |
| Session | HTTP session termination helper | Y | terminateSession() sends MCP DELETE termination request. |
Partial / Not Yet Supported
| Area | Feature | Status | Notes |
|---|---|---|---|
| Package scope | MCP server implementation | N | adk_mcp is client-only. |
| Transport | WebSocket/other non-HTTP non-stdio transports | N | Only streamable HTTP and stdio are implemented. |
| Server request handling | Built-in business handlers for server-initiated requests | Partial | Without onServerRequest, only ping is implicitly accepted. |
| Streaming lifecycle | Long-lived managed background subscription API | Partial | readServerMessagesOnce() provides one SSE read pass; lifecycle orchestration is app-managed. |
| Auth | Built-in OAuth/token lifecycle manager | N | Caller supplies headers/tokens; credential lifecycle is out of scope. |
| ADK integration | Runner/tool wiring for ADK agents | N | Integration lives in adk_dart, not in adk_mcp. |
ADK 2.0 Compatibility
This package is fully aligned with ADK 2.0, supporting remote MCP server integration, Managed Agent configurations, and GCP Managed Agents Interactions API for hybrid agent execution.
Install
dart pub add adk_mcp
Usage
import 'package:adk_mcp/adk_mcp.dart';
final McpRemoteClient client = McpRemoteClient(
clientInfoName: 'example_client',
clientInfoVersion: '1.0.0',
);
final connection = StreamableHTTPConnectionParams(
url: 'http://localhost:8000/mcp',
);
final Object? result = await client.call(
connectionParams: connection,
method: 'tools/list',
params: const <String, Object?>{},
);
Repository
License
Apache-2.0
Libraries
- adk_mcp
- APIs for connecting to and interacting with Model Context Protocol servers.