PackageTrack
Sign in Get early access

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.

2.0.0 codenameakshay/ai_sdk_dart

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 2026
Release Pre-release

Releases

latest 5
  1. 2.0.0 11 Aug 2026
    Release notes

    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

    Open source →
    Release notes
    • 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.

    Open source →
  2. 1.2.0 01 Jul 2026
    Release notes

    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 AiApiCallError carrying the provider's message, type, code, statusCode, raw body, and an isRetryable flag — consistently across every provider. The AiSdkError hierarchy moved into ai_sdk_provider (re-exported by ai_sdk_dart, so the public surface is unchanged).

    🧩 Shared ai_sdk_openai_compatible base (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/response HttpClientTransport; web-safe — dart:io is 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, an AiMotion motion/haptics vocabulary, and a first-class reduced-motion path. Fixed a PressableScale crash-on-dispose under reduced motion.

    ✅ Correctness

    onAbort now interrupts an in-flight streamText; stopWhen can extend the tool loop past maxSteps. Removed the unusable generateVideo / VideoModelV1 (no backing provider). OpenAI image generation no longer sends response_format to gpt-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_ui

    See each package's CHANGELOG.md for full details.

    Full Changelog: 1.1.0...1.2.0

    Open source →
    Release notes

    Breaking

    • Removed the legacy HTTP transport exports SseClientTransport and HttpClientTransport. Use StreamableHttpClientTransport for remote MCP servers.
    • The HTTP client now negotiates and enforces MCP protocol 2025-06-18. Deprecated HTTP+SSE servers that only speak 2024-11-05 are no longer a supported target.

    Transport behavior

    • StreamableHttpClientTransport speaks 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, reuses MCP-Protocol-Version on later HTTP requests, and starts the optional GET SSE listener for server-pushed notifications.
    • If the server returns Mcp-Session-Id, the transport reuses it on later POST / GET / DELETE requests, reconnects the optional listener with Last-Event-ID after disconnects, and sends DELETE on close().
    • Request timeouts send a best-effort notifications/cancelled notification before the call fails locally.
    • Custom headers and an injected http.Client are 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:io at the top level. StdioMCPTransport (which spawns a process) now lives behind a conditional import: the real dart:io implementation is used on native platforms, and a stub that throws UnsupportedError is used on web.
    • MCPTransport exposes a notifications stream for server-initiated messages. notifications/resources/updated continue to drive subscribeResource() 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 /sse endpoint.
    • 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.

    Open source →
  3. 1.1.0 15 Apr 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 1.0.0+1...1.1.0

    Open source →
    Release notes
    • Bumped ai_sdk_dart constraint to ^1.1.0.
    • No MCP client behaviour changes; version aligned with the rest of the monorepo.

    Open source →
  4. 1.0.0 17 Mar 2026
    Release notes

    First stable release. Depends on ai_sdk_dart 1.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 a ToolSet compatible with generateText / streamText.
    • callTool() — invokes a named tool with structured arguments; throws MCPException on server-side errors.
    • MCPException — typed exception with message field.

    Open source →
  5. 1.0.0+1 17 Mar 2026
    Release notes Open source →
    Release notes
    • Improved pubspec descriptions for better pub.dev discoverability.
    • Added example/example.md with usage examples and links to runnable apps.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive