PackageTrack
Sign in Get early access

dart_mcp

A package for making MCP servers and clients.

0.5.2 354K downloads/mo #628 most downloaded on pub.dev dart-lang/ai

What this package is like to depend on

Last release 1 months ago

29 Jun 2026

Release timing varies

gaps range from 2 weeks to 4 months

Nearly every release is documented

notes for 13 of 13 stable releases

Nothing withdrawn

no release was ever pulled

1 years old

14 releases · first in 2025

5 releases in the last 12 months

see the full history below

Release timeline

14 releases · Mar 2025 to Jun 2026
2026
Release Pre-release

Releases

latest 14
  1. 0.5.2 29 Jun 2026
    Release notes
    • Update listRoots to normalize URIs to file: scheme variants when given raw
      file paths. This fixes non-spec compliant clients.
    Open source →
    Release notes
    • Update listRoots to normalize URIs to file: scheme variants when given raw file paths. This fixes non-spec compliant clients.
    Open source →
  2. 0.5.1 28 Apr 2026
    Release notes
    • Always send a properties object for tool input schemas, see https://github.com/dart-lang/ai/issues/170.
    Open source →
  3. 0.5.0 02 Mar 2026
    Release notes
    • Initial support for protocol version 2025-11-25.
      • Added support for Icons in Implementation, Tool, Resource, ResourceTemplate, and Prompt.
      • Added support for ToolChoice in sampling CreateMessageRequest.
      • Added support for URL-based elicitations in ElicitRequest.
        • Separated ElicitationSupport into ElicitationFormSupport and ElicitationUrlSupport mixins, which will affect which capabilities your server advertises. The original ElicitationSupport mixin is now deprecated (and is an alias for ElicitationFormSupport).
        • Added onElicitationComplete extension getter to ElicitRequest, which will listen for notifications/elicitation/complete notifications.
        • If a tool call fails with the urlElicitationRequired error code, and the client supports URL based elicitations, the client will automatically handle the elicitation and retry the tool call if the elicitation succeeds.
      • Added an McpErrorCodes namespace for MCP error codes. For now only contains the urlElicitationRequired error code.
      • Added examples for URL based elicitations, including handling urlElicitationRequired errors.
      • Added description field to Implementation.
      • Does not add support for Tasks yet.
      • Added support for EnumSchema subtypes, matching the spec. This includes multi select enums and enums with titles. Validation is also supported.
      • Added Meta? meta param to ElicitRequest.
    • Added ConstSchema type for constant values, with validation.
    • BREAKING:
      • Change many fields of ResourceLink to be nullable, and their associated parameters to be optional. This brings us in line with the specification.
      • The WithElicitationHandler interface is now private and implemented by the ElicitationFormSupport and ElicitationUrlSupport mixins.
      • Added a required ServerConnection server parameter to the ElicitationSupport.handleElicitation method.
      • ElicitRequest.requestedSchema is now nullable (for url mode).
      • EnumSchema is now a union type with 4 subtypes, matching the spec changes.
    Open source →
  4. 0.4.1 13 Jan 2026
    Release notes
    • Expose various private methods on MCP server mixins as public methods, with @mustCallSuper annotations. This allows intercepting calls for logging, metrics, or other purposes.
    • Fix the resource parameter type on EmbeddedResource to be ResourceContents instead of Contents.
      • Note: This is technically breaking but the previous API would not have been possible to use in a functional manner, so it is assumed that it had no usage previously.
    • Fix the type getter on EmbeddedResource to read the actual type field.
    • Add toJson method to the CreateMessageResult of a sampling request.
    Open source →
  5. 0.4.0 12 Nov 2025
    Release notes
    • Update the tool calling example to include progress notifications.
    • Breaking: Update APIs to accept nullable parameters when the parameters are not required for that method. This is only breaking if you override these methods.
    Open source →
  6. 0.3.3 28 Jul 2025
    Release notes
    • Fix PingRequest handling when it is sent from a non-Dart client.
    • Deprecate ElicitationAction.reject and replace it with ElicitationAction.decline.
      • In the initial elicitations schema this was incorrectly listed as reject.
      • This package still allows reject and treats it as an alias fordecline.
      • The old reject enum value was replaced with a static constant equal exactly to decline, so switches are not affected.
    • Add title parameter to Prompt constructor.
    • Only execute sub-processes in a shell if they are .bat files.
    Open source →
  7. 0.3.2 17 Jul 2025
    Release notes
    • Deprecate the EnumSchema type in favor of the StringSchema with an enumValues parameter. The EnumSchema type was not MCP spec compatible.
      • Also deprecated the associated JsonType.enumeration which doesn't exist in the JSON schema spec.
    Open source →
  8. 0.3.1 17 Jul 2025
    Release notes
    • Fixes communication problem when a MCPServer is instantiated without instructions.
    • Fix the content argument to PromptMessage to be a single Content object.
    • Add new package:dart_mcp/stdio.dart library with a stdioChannel utility for creating a stream channel that separates messages by newlines.
    • Added more examples.
    • Deprecated the WithElicitationHandler interface - the method this required is now defined directly on the ElicitationSupport mixin which matches the pattern used by other mixins in this package.
    • Change the schema parameter for elicitation requests to an ObjectSchema to match the spec.
    • Deprecate the Elicitations server capability, this doesn't exist in the spec.
    Open source →
  9. 0.3.0 02 Jul 2025
    Release notes
    • Added error checking to required fields of all Request subclasses so that they will throw helpful errors when accessed and not set.
    • Added enum support to Schema.
    • Add more detail to type validation errors.
    • Remove some duplicate validation errors, errors are only reported for the leaf nodes and not all the way up the tree.
      • Deprecated a few validation error types as a part of this, including propertyNamesInvalid, propertyValueInvalid, itemInvalid and prefixItemInvalid.
    • Added a custom validation error type.
    • Breaking: Auto-validate schemas for all tools by default. This can be disabled by passing validateArguments: false to registerTool.
    • Updates to the latest MCP spec, 2025-06-08
      • Adds support for Elicitations to allow the server to ask the user questions.
      • Adds ResourceLink as a tool return content type.
      • Adds support for structured tool output.
    • Breaking: Change MCPClient.connectStdioServer signature to accept stdin and stdout streams instead of starting processes itself. This enables custom process spawning (such as using package:process), and also enables the client to run in browser environments.
    • Fixed a problem where specifying --log-file would cause the server to stop working.
    Open source →
  10. 0.2.2 18 Jun 2025
    Release notes
    • Refactor ClientImplementation and ServerImplementation to the shared Implementation type to match the spec. The old names are deprecated but will still work until the next breaking release.
    • Add clientInfo field to MCPServer, assigned during initialization.
    • Move the done future from the ServerConnection into MCPBase so it is available to the MPCServer class as well.
    Open source →
  11. 0.2.1 23 May 2025
    Release notes
    • Fix the protocolLogSink support when using MCPClient.connectStdioServer.
    • Update workflow example to show thinking spinner and input and output token usage.
    • Update file system example to support relative paths.
    • Fix a bug in notification handling where leaving off the parameters caused a type exception.
    • Added --help, --log, and --model flags to the workflow example.
    • Fixed a bug where the examples would only connect to a server with the latest protocol version.
    • Handle failed calls to listRoots in the RootsTrackingSupport mixin more gracefully. Previously this would leave the roots future hanging indefinitely, but now it will log an error and set the roots to empty.
    • Added validation for Schema extension.
    • Fixed an issue where getting the type of a Schema with a null type would throw.
    Open source →
  12. 0.2.0 05 May 2025
    Release notes
    • Support protocol version 2025-03-26.
      • Adds support for AudioContent.
      • Adds support for ToolAnnotations.
      • Adds support for ProgressNotification messages.
    • Save the ServerCapabilities object on the ServerConnection class to make it easier to check the capabilities of the server.
    • Add default version negotiation logic.
      • Save the negotiated ProtocolVersion in a protocolVersion field for both MCPServer and the ServerConnection classes.
      • Automatically disconnect from servers if version negotiation fails.
    • Added support for adding and listing ResourceTemplates.
      • Handlers have to handle their own matching of templates.
    • Added a RootsTrackingSupport server mixin which can be used to keep an updated list of the roots set by the client.
    • Added default throttling with a 500ms delay for ResourceListChangedNotifications and ResourceUpdatedNotifications. The delay can be modified by overriding ResourcesSupport.resourceUpdateThrottleDelay.
    • Add Sink<String> protocolLogSink parameters to server constructor and client connection methods, which can be used to capture protocol messages for debugging purposes.
    • Only send notifications if the peer is still connected. Fixes issues where notifications are delayed due to throttling and the client has since closed.
    • Breaking: Fixed paginated result subtypes to use nextCursor instead of cursor as the key for the next cursor.
    • Breaking: Change the ProgressNotification.progress and ProgressNotification.total types to num instead of int to align with the spec.
    • Breaking: Change the protocolVersion string to a ProtocolVersion enum, which has all supported versions and whether or not they are supported.
    • Breaking: Change InitializeRequest and InitializeResult to take a ProtocolVersion instead of a string.
    • Breaking: Change the InitializeResult's instructions to String? to reflect that not all servers return instructions.
    • Change the MCPServer.fromStreamChannel constructor to make the instructions parameter optional.
    • Breaking: Change MCPBase to accept a StreamChannel<String> instead of a Peer, and construct its own Peer.
    • Breaking: Add protocolLogSink optional parameter to connect methods on MCPClient.
    • Breaking: Move channel parameter on MCPServer.new to a positional parameter for consistency.
    Open source →
  13. 0.1.0 11 Apr 2025
    Release notes
    • Initial release, supports all major MCP functionality for both clients and servers, at protocol version 2024-11-05.
    • APIs may change frequently until the 1.0.0 release based on feedback and needs.
    Open source →
  14. 0.1.0-wip 26 Mar 2025 pre-release

    Nothing published for this version

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