MCP for Dart
A Dart SDK for building MCP servers and clients.
MCP (Model Context Protocol) for Dart
The Model Context Protocol (MCP) is a standardized protocol for communication between AI applications and external services. It enables:
- Tools: Allow AI to execute actions (API calls, computations, etc.)
- Resources: Provide context and data to AI (files, databases, APIs)
- Prompts: Pre-built prompt templates with arguments
Understanding MCP: Client, Server, and Host
MCP follows a client-server architecture with three key components:
-
MCP Host: The AI application that provides the user interface and manages connections to multiple MCP servers.
- Example: Claude Desktop, IDEs like VS Code, custom AI applications
- Manages server lifecycle, discovers capabilities, and orchestrates interactions
-
MCP Client: The protocol implementation within the host that communicates with servers.
- Handles protocol negotiation, capability discovery, and request/response flow
- Typically built into or used by the MCP host
-
MCP Server: Provides capabilities (tools, resources, prompts) that AI can use through the host.
- Example: Servers for file system access, database queries, or API integrations
- Runs as a separate process and communicates via standardized transports (stdio, StreamableHTTP)
Typical Flow: User ↔ MCP Host (with Client) ↔ MCP Protocol ↔ Your Server ↔ External Services/Data
Requirements
- Dart SDK version ^3.0.0 or higher
Ensure you have the correct Dart SDK version installed. See https://dart.dev/get-dart for installation instructions.
Installation
Add to your pubspec.yaml:
dependencies:
mcp_dart: ^2.1.0
Then install dependencies:
dart pub get
What This SDK Provides
This SDK lets you build both MCP servers and clients in Dart/Flutter.
- ✅ Build MCP Servers - Create servers that expose tools, resources, and prompts to AI hosts
- ✅ Build MCP Clients - Create AI applications that can connect to and use MCP servers
- ✅ Full MCP Protocol Support - Complete MCP specification 2025-11-25 implementation
- ✅ Multiple Transport Options - Stdio, StreamableHTTP, IOStream, or custom transports
- ✅ All Capabilities - Tools, Resources, Prompts, Sampling, Roots, Completions, Elicitation, Tasks
- ✅ Extension Support - Generic
extensionsnegotiation with typed MCP Apps helpers and TypeScript-styleregisterAppTool/registerAppResource - ✅ Latest Content/Metadata Types -
resource_link, themedicons, andannotations.lastModified - ✅ OAuth2 Support - Complete authentication with PKCE
- ✅ Transport Security Controls - DNS rebinding protection and strict Streamable HTTP validation with compatibility toggles
- ✅ Type-Safe - Comprehensive type definitions with null safety
- ✅ Cross-Platform - Works on Linux, Windows, macOS, Web, and Flutter
The goal is to make this SDK as similar as possible to the official SDKs available in other languages, ensuring a consistent developer experience across platforms.
Model Context Protocol Version
The current version of the protocol is 2025-11-25. This library is designed to be compatible with this version, and any future updates will be made to ensure continued compatibility.
It's also backward compatible with previous versions including 2025-06-18, 2025-03-26, 2024-11-05, and 2024-10-07.
Documentation
Getting Started
- 📖 Quick Start Guide - Get up and running in 5 minutes
- 🔧 Server Guide - Complete guide to building MCP servers
- 💻 Client Guide - Complete guide to building MCP clients
Core Concepts
- 🛠️ Tools Documentation - Implementing executable tools
- 🔌 Transport Options - Built-in and custom transport implementations
- 📚 Examples - Real-world usage examples
- ⚡ Quick Reference - Fast lookup guide
- 🪵 Runtime Logging - Configure and route internal SDK logs
- 🧩 MCP Apps Guide - Using
io.modelcontextprotocol/uimetadata
Advanced Features
- 🔐 OAuth Authentication - OAuth2 guides and examples
- 🔁 2025-11-25 Compatibility Migration - Backward-compatible API/runtime migration notes
- 📝 For resources, prompts, and other features, see the Server and Client guides
Quick Start with CLI
The fastest way to create an MCP server is using the mcp_dart_cli:
# Install the CLI
dart pub global activate mcp_dart_cli
# Create a new project
mcp_dart create my_server
# Navigate and run
cd my_server
mcp_dart serve
Your server is now running! Use mcp_dart inspect to test it:
mcp_dart inspect # List all capabilities
mcp_dart inspect --tool add --json-args '{"a": 1, "b": 2}' # Call a tool
CLI Commands
| Command | Description |
|---|---|
create | Scaffold a new MCP server project |
serve | Run your server (stdio or HTTP) |
doctor | Check project health and connectivity |
inspect | Test and debug server capabilities |
Connecting to AI Hosts
Configure your server with AI hosts like Claude Desktop:
{
"mcpServers": {
"my_server": {
"command": "mcp_dart",
"args": ["serve"],
"cwd": "/path/to/my_server"
}
}
}
[!TIP] For manual server implementation or advanced use cases, see the Server Guide.
Authentication
This library supports OAuth2 authentication with PKCE for both clients and servers. For complete authentication guides and examples, see the OAuth Authentication documentation.
Platform Support
| Platform | Stdio | StreamableHTTP | IOStream | Custom |
|---|---|---|---|---|
| Desktop (CLI/Server) | ✅ | ✅ | ✅ | ✅ |
| Web (Browser) | ❌ | ✅ | ✅ | ✅ |
| Flutter (Mobile/Desktop) | ✅ | ✅ | ✅ | ✅ |
Custom Transports: You can implement your own transport layer by extending the transport interfaces if you need specific communication patterns not covered by the built-in options.
More Examples
For additional examples including authentication, HTTP clients, and advanced features:
Community & Support
- Issues & Bug Reports: GitHub Issues
- Package: pub.dev/packages/mcp_dart
- API Docs: pub.dev documentation
- Changelog: CHANGELOG.md
- Protocol Spec: MCP Specification
Credits
This library is inspired by the following projects:
İlgili Sunucular
Scout Monitoring MCP
sponsorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Eterna MCP
Managed MCP server for Bybit perpetual futures trading. Isolated sub-accounts, built-in risk management, 12 trading tools.
Tuteliq
AI-powered safety tools for detecting grooming, bullying, threats, and harmful interactions in conversations. The server integrates Tuteliq’s behavioral risk detection API via the Model Context Protocol (MCP), enabling AI assistants to analyze interaction patterns rather than relying on keyword moderation. Use cases include platform safety, chat moderation, child protection, and compliance with regulations such as the EU Digital Services Act (DSA), COPPA, and KOSA.
QuantConnect
A server for local interactions with the QuantConnect API.
Unbundle OpenAPI MCP Server
A server for splitting and extracting parts of OpenAPI specifications using Redocly CLI.
Text2Sim MCP Server
A multi-paradigm simulation engine for Discrete-Event and System Dynamics, enabling natural language-based simulations via MCP.
Riza
Arbitrary code execution and tool-use platform for LLMs by Riza
stdout-mcp-server
Captures and manages stdout logs from multiple processes via a named pipe system for real-time debugging and analysis.
Notifly MCP Server
Notifly MCP Server - enabling AI agents to provide real-time, trusted Notifly documentation and SDK code examples for seamless integrations.
MCP Think Tool Server
An MCP server implementing the 'think' tool to improve Claude's complex reasoning capabilities.
Remote MCP Server (Authless)
An example of a remote MCP server without authentication, deployable on Cloudflare Workers.