adk_mcp 2026.3.1
adk_mcp: ^2026.3.1 copied to clipboard
MCP protocol client primitives for ADK Dart packages.
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
Feature Support Matrix (Current) #
Status legend:
✅Supported⚠️Partial / integration required❌Not supported yet
Supported / Working #
| Area | Feature | Status | Notes |
|---|---|---|---|
| Transport | Streamable HTTP MCP client | ✅ | JSON-RPC call/notify with initialize handshake support. |
| Transport | stdio MCP client | ✅ | Child-process based JSON-RPC transport. |
| Protocol | MCP protocol version negotiation | ✅ | Supports 2025-03-26, 2025-06-18, 2025-11-25. |
| RPC helpers | Tools/resources/prompts/tasks/logging/sampling/roots/elicitation method helpers | ✅ | High-level helper methods are provided for client calls. |
| Paging | Cursor-based pagination helper (collectPaginatedMaps) |
✅ | Works for both HTTP and stdio clients. |
| Server events | Server notification/request callback hooks | ✅ | onServerMessage / onServerRequest are supported. |
| Session | HTTP session termination helper | ✅ | terminateSession() sends MCP DELETE termination request. |
Partial / Not Yet Supported #
| Area | Feature | Status | Notes |
|---|---|---|---|
| Package scope | MCP server implementation | ❌ | adk_mcp is client-only. |
| Transport | WebSocket/other non-HTTP non-stdio transports | ❌ | Only streamable HTTP and stdio are implemented. |
| Server request handling | Built-in business handlers for server-initiated requests | ⚠️ | Without onServerRequest, only ping is implicitly accepted. |
| Streaming lifecycle | Long-lived managed background subscription API | ⚠️ | readServerMessagesOnce() provides one SSE read pass; lifecycle orchestration is app-managed. |
| Auth | Built-in OAuth/token lifecycle manager | ❌ | Caller supplies headers/tokens; credential lifecycle is out of scope. |
| ADK integration | Runner/tool wiring for ADK agents | ❌ | Integration lives in adk_dart, not in adk_mcp. |
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