ai_sdk_mcp
MCP (Model Context Protocol) client for AI SDK Dart. Connect to MCP servers via Streamable HTTP or stdio, discover tools, and use them with any LLM provider.
What this package is like to depend on
Last release 12 days ago
11 Aug 2026
Ships fairly regularly
a new release about every 6 weeks
Nearly every release is documented
notes for 5 of 5 stable releases
Nothing withdrawn
no release was ever pulled
5 months old
5 releases · first in 2026
5 releases in the last 12 months
see the full history below
Release timeline
5 releases · Mar 2026 to Aug 2026Releases
latest 5-
2.0.011 Aug 2026Release notes
Open source →AI SDK Dart 2.0 is a coordinated major release across all 13 packages.
Highlights
- V4 is now the only language-model provider contract.
- Generation and streaming gain scoped timeouts, provider-backed cancellation, stable runtime context and telemetry APIs, structured output improvements, and safer streamed tool execution.
- Provider usage reports nested input/output token details, including cache reads and writes where available.
- Flutter UI gains polished tool approval, source citation, reasoning, streaming, error, and long-history experiences.
- MCP transports and lifecycle handling are substantially hardened.
Breaking changes
Upgrade every ai_sdk package together. The obsolete V3 language-model contract, experimental API names, video surface, and old provider call fields were removed without compatibility shims.
Read the 2.0 migration guide before upgrading.
Packages
All 13 packages are published on pub.dev.
What's Changed
- fix(openai): surface reasoning/thinking deltas on streaming + non-streaming paths (fixes #3) by @codenameakshay in #7
- chore: add SessionStart hook to provision Flutter via FVM on the web by @codenameakshay in #5
- feat(usage): map provider cache tokens into inputTokenDetails by @codenameakshay in #9
- Prepare the next release with V4 providers and hardened UX by @codenameakshay in #10
- Prepare the coordinated 2.0.0 release by @codenameakshay in #11
Full Changelog: 1.2.0...2.0.0
Release notes
Open source →- Hardened Streamable HTTP reconnection, session cleanup, cancellation notifications, response trust boundaries, and concurrent shutdown.
- Removed stdio lifecycle races and prevented cleanup from suppressing unexpected MCP client errors.
- Stdio JSON frames are capped at 1 MiB and terminate safely on overflow.
-
1.2.001 Jul 2026Release notes
Open source →Coordinated 1.2.0 release across all 13 packages — now live on pub.dev. A v6 hardening pass that makes the AI SDK Dart port more complete, honest, and tested.
Highlights
🚨 Typed provider API errors (new)
Non-2xx provider responses now throw a typed
AiApiCallErrorcarrying the provider'smessage,type,code,statusCode, raw body, and anisRetryableflag — consistently across every provider. TheAiSdkErrorhierarchy moved intoai_sdk_provider(re-exported byai_sdk_dart, so the public surface is unchanged).🧩 Shared
ai_sdk_openai_compatiblebase (new package)A shared OpenAI Chat Completions implementation now powers OpenAI / Azure / Groq / Mistral. All 8 providers support tool use + multimodal image input; Cohere & Ollama gained them natively.
🔌 MCP
Real Server-Sent-Events streaming transport (
SseClientTransport) plus a plain request/responseHttpClientTransport; web-safe —dart:iois isolated behind conditional imports, so the client runs on Flutter web.📱 Flutter UI hub
19 prebuilt, themeable Material widgets plus hardened controllers (
ObjectStreamController.submit,ChatController.isStreaming, streaming-error surfacing). A restrained Material 3 redesign — bubbleless assistant transcript, anAiMotionmotion/haptics vocabulary, and a first-class reduced-motion path. Fixed aPressableScalecrash-on-dispose under reduced motion.✅ Correctness
onAbortnow interrupts an in-flightstreamText;stopWhencan extend the tool loop pastmaxSteps. Removed the unusablegenerateVideo/VideoModelV1(no backing provider). OpenAI image generation no longer sendsresponse_formattogpt-image-1.🧪 Quality
1,057 tests (924 Dart + 133 Flutter), 99.9% line coverage (11 of 12 packages at 100%), enforced by a CI coverage gate.
Packages (all published at 1.2.0)
ai_sdk_provider·ai_sdk_dart·ai_sdk_openai_compatible·ai_sdk_openai·ai_sdk_anthropic·ai_sdk_google·ai_sdk_azure·ai_sdk_cohere·ai_sdk_groq·ai_sdk_mistral·ai_sdk_ollama·ai_sdk_mcp·ai_sdk_flutter_uiSee each package's
CHANGELOG.mdfor full details.Full Changelog: 1.1.0...1.2.0
Release notes
Open source →Breaking
- Removed the legacy HTTP transport exports
SseClientTransportandHttpClientTransport. UseStreamableHttpClientTransportfor remote MCP servers. - The HTTP client now negotiates and enforces MCP protocol
2025-06-18. Deprecated HTTP+SSE servers that only speak2024-11-05are no longer a supported target.
Transport behavior
StreamableHttpClientTransportspeaks the Streamable HTTP transport against a single MCP endpoint.- Each client message is sent as an HTTP
POST, and the server may answer with either JSON or SSE for that request. - After initialize succeeds, the client sends
notifications/initialized, reusesMCP-Protocol-Versionon later HTTP requests, and starts the optionalGETSSE listener for server-pushed notifications. - If the server returns
Mcp-Session-Id, the transport reuses it on laterPOST/GET/DELETErequests, reconnects the optional listener withLast-Event-IDafter disconnects, and sendsDELETEonclose(). - Request timeouts send a best-effort
notifications/cancellednotification before the call fails locally. - Custom headers and an injected
http.Clientare supported. Injected clients remain caller-owned; the transport closes only the client it creates.
Web / native
- Flutter-web compatible. The package no longer imports
dart:ioat the top level.StdioMCPTransport(which spawns a process) now lives behind a conditional import: the realdart:ioimplementation is used on native platforms, and a stub that throwsUnsupportedErroris used on web. MCPTransportexposes anotificationsstream for server-initiated messages.notifications/resources/updatedcontinue to drivesubscribeResource()listeners automatically.
Migration
Replace remote transport construction like this:
final transport = StreamableHttpClientTransport( url: Uri.parse('https://mcp.example.com/mcp'), headers: {'Authorization': 'Bearer <token>'}, );Notes:
- Point the transport at the MCP endpoint itself, not a legacy
/sseendpoint. - Keep required credential headers in
headers, but avoid embedding long-lived secrets inside distributed browser or mobile clients. - If you need a shared
http.Client, inject it and close it yourself after the MCP client shuts down.
- Removed the legacy HTTP transport exports
-
1.1.015 Apr 2026Release notes
Open source →What's Changed
- Development environment setup: fix dependency conflict + add AGENTS.md by @codenameakshay in #1
- feat: update v1.1.0 by @codenameakshay in #2
New Contributors
- @codenameakshay made their first contribution in #1
Full Changelog: 1.0.0+1...1.1.0
Release notes
Open source →- Bumped
ai_sdk_dartconstraint to^1.1.0. - No MCP client behaviour changes; version aligned with the rest of the monorepo.
-
1.0.017 Mar 2026Release notes
Open source →First stable release. Depends on
ai_sdk_dart1.0.0.MCPClient— manages a session with any MCP server via pluggable transport.SseClientTransport— HTTP SSE transport for remote MCP servers; supports custom headers and separate POST URL.StdioMCPTransport— stdio transport that spawns a local process and communicates via stdin/stdout.initialize()— MCP protocol 2024-11-05 handshake with idempotency guard.tools()— discovers available tools and returns aToolSetcompatible withgenerateText/streamText.callTool()— invokes a named tool with structured arguments; throwsMCPExceptionon server-side errors.MCPException— typed exception withmessagefield.
-
1.0.0+117 Mar 2026Release notes
Open source →Full Changelog: https://github.com/codenameakshay/ai_sdk_dart/commits/1.0.0+1
Release notes
Open source →- Improved pubspec descriptions for better pub.dev discoverability.
- Added
example/example.mdwith usage examples and links to runnable apps.