MCP for Dart

Un SDK de Dart para construir servidores y clientes MCP.

Documentación

MCP (Model Context Protocol) para Dart

Coverage Stable package likes

mcp_dart es un SDK de Dart y Flutter de doble era para clientes, servidores y hosts de IA de MCP. Implementa la superficie de cable completa del núcleo cliente/servidor de la especificación MCP 2026-07-28 bloqueada, conserva el conjunto de funciones de MCP 2025-11-25 y negocia especificaciones anteriores basadas en inicialización compatibles.

Aquí, núcleo significa los requisitos normativos de cable asignados a los roles de cliente y servidor por la especificación final fijada. Excluye extensiones opcionales de MCP, comportamiento de UI del host, una implementación de servidor de autorización, resolución de referencias externas de JSON Schema y vocabularios personalizados de JSON Schema.

[!IMPORTANT] Esta versión es mcp_dart 2.4.2. La CLI estable versionada por separado sigue siendo mcp_dart_cli 0.2.1, que requiere mcp_dart ^2.4.2. El código fuente actual pasa cada requisito puntuado en los conjuntos oficiales de cliente y servidor alpha.11 de MCP 2025-11-25 y 2026-07-28, incluidos los 25 escenarios de autorización 2026 requeridos, más la interoperabilidad bidireccional publicada con TypeScript SDK 2.0.0 y Python SDK 2.1.1.

Objetivo de Nivel 1 del SDK

El proyecto está buscando MCP SDK Tier 1. El Nivel 1 aún no se reclama ni se asigna. La línea base técnica está en verde; los pasos restantes de auditoría oficial, gobernanza del repositorio y del Grupo de Trabajo del SDK se rastrean en la hoja de ruta y en el inventario de cobertura de 48 funciones.

El contrato público de mantenimiento está documentado en la guía de contribución, política de seguridad, política de dependencias y política de versionado.

Requisitos

PaqueteDart SDK mínimo
mcp_dart 2.4.23.4
mcp_dart_cli 0.2.13.12

Los proyectos generados solo con SDK conservan el mínimo de Dart 3.4 del SDK. Los proyectos de CLI usan Dart 3.12 porque la CLI y su cadena de herramientas apuntan a esa versión.

Instala Dart desde dart.dev.

Instalación

Canal de producción

Usa el paquete estable más reciente para proyectos de producción:

dart pub add mcp_dart

Fijar la versión estable del SDK

Fija explícitamente la línea estable 2.4 cuando la resolución reproducible de dependencias sea importante:

dependencies:
  mcp_dart: ^2.4.2

Los fragmentos a continuación usan la línea estable actual del SDK. Las versiones de paquetes permanecen separadas de los perfiles de protocolo: McpProtocol.stable nombra la política de compatibilidad predeterminada del SDK.

El SDK y la CLI se versionan de forma independiente. La restricción ^2.4.2 de la CLI estable acepta versiones del SDK desde 2.4.2 hasta, sin incluir, 3.0.0.

Habilidades de agentes de IA

mcp_dart incluye habilidades de agente para construir servidores, construir clientes y servir o conectar a través de HTTP Streamable. Instálalas en el directorio de habilidades de tu agente de codificación desde la raíz de tu aplicación:

dart run skills@ get

Para integración directa del SDK, comienza con la guía de inicio. La CLI a continuación es opcional y proporciona comandos de andamiaje, inspección y conformidad.

Qué proporciona el SDK

  • Servidores, clientes e integraciones de host de MCP con APIs de Dart null-safe.
  • APIs de herramientas, recursos, indicaciones, finalización, elicitación, suscripciones, registro, raíces y muestreo con comportamiento seleccionado para la era de protocolo negociada. El registro de MCP 2026-07-28 se conserva por compatibilidad pero está obsoleto upstream.
  • Transportes Stdio, HTTP Streamable, flujo de IO y personalizados.
  • Hooks de descubrimiento/PKCE de cliente OAuth, callbacks de autenticación de servidor, protección contra rebinding de DNS y validación estricta de HTTP Streamable.
  • Una implementación experimental de la extensión Tasks, ayudantes de metadatos de MCP Apps y negociación genérica de extensiones. Las extensiones están separadas de la cobertura del protocolo central; Tasks no es una extensión oficial ni parte de la afirmación de conformidad central del SDK.
  • Conformidad automatizada de MCP 2025-11-25 y MCP 2026-07-28, interoperabilidad bidireccional publicada con TypeScript SDK 2.0.0, interoperabilidad bidireccional con Python SDK 2.1.1, pruebas de transporte en navegador real, una integración real de servicio Flutter Web en Chrome, pruebas de widgets deterministas y una compuerta independiente del conjunto de pruebas JSON Schema fijado.
  • mcp_dart 2.4.2 limita los mensajes entrantes de stdio y flujo de IO a 10 MiB de forma predeterminada, con límites configurables para mensajes más grandes. Consulta la guía de transporte antes de actualizar integraciones que intercambien marcos más grandes.
  • Acceso HTTP Streamable endurecido y diagnósticos de errores JSON-RPC, además del cliente heredado HTTP+SSE obsoleto y opcional con enrutamiento de mismo origen e interoperabilidad bidireccional contra pares oficiales de TypeScript SDK 1.30.0 y Python SDK 2.1.1.

MCP tiene tres roles: un host posee la experiencia del usuario, un cliente conecta ese host a un servidor, y un servidor expone herramientas, recursos e indicaciones. Un host puede gestionar múltiples clientes y servidores.

Perfiles de protocolo

PerfilComportamiento del protocolo
McpProtocol.stablePerfil predeterminado de doble era: prefiere MCP 2026-07-28, luego retrocede a especificaciones MCP basadas en inicialización; las sondas de descubrimiento solo de cuerpo están limitadas a 5 segundos
McpProtocol.legacyPerfil de era de inicialización: negocia la especificación MCP 2025-11-25, MCP 2025-06-18, MCP 2025-03-26, MCP 2024-11-05 o MCP 2024-10-07
McpProtocol.require2026Requiere MCP 2026-07-28 y rechaza la inicialización heredada

Usa stableProtocolVersion o defaultProtocolVersion para MCP 2026-07-28. previewProtocolVersion permanece como un alias obsoleto para aplicaciones construidas contra una versión preliminar 2.3. latestInitializationProtocolVersion permanece 2025-11-25 cuando el perfil predeterminado retrocede al ciclo de vida heredado. Por compatibilidad, latestProtocolVersion y supportedProtocolVersions conservan sus valores de la era de inicialización de mcp_dart 2.2; usa allSupportedProtocolVersions para la lista de doble era.

Selecciona un perfil solo cuando necesites restringir la negociación:

final legacyClient = McpClient(
  const Implementation(name: 'my-client', version: '1.0.0'),
  options: const McpClientOptions(protocol: McpProtocol.legacy),
);

final strict2026Server = McpServer(
  const Implementation(name: 'my-server', version: '1.0.0'),
  options: const McpServerOptions(protocol: McpProtocol.require2026),
);

Consulta la guía de transición a MCP 2026-07-28 para reglas de retroceso y APIs específicas de MCP 2026-07-28, o ejecuta el ejemplo estricto de MCP 2026-07-28. Las aplicaciones que actualicen desde la línea estable 2.2 también deben seguir la guía de migración de 2.2 a 2.3.

Inicio rápido con la CLI

Instala la CLI estable correspondiente:

dart pub global activate mcp_dart_cli 0.2.1
mcp_dart create my_server
cd my_server
mcp_dart inspect

La CLI 0.2.1 crea un proyecto con mcp_dart: ^2.4.2. El inspector inicia el servidor stdio generado por sí mismo. Después de salir del inspector interactivo, puedes ejecutar una sola herramienta directamente:

mcp_dart inspect --tool add --json-args '{"a": 1, "b": 2}'

Comandos útiles:

ComandoPropósito
createCrear un servidor MCP de Dart usando el canal del SDK emparejado con la CLI
serveEjecutar un servidor generado sobre stdio o HTTP
doctorVerificar la salud y conectividad del proyecto
inspectUsar interactivamente las capacidades de un servidor
inspect-serverProducir un informe estructurado para un servidor en vivo
inspect-clientEjecutar un arnés stdio que inspecciona un cliente conectado
traceProxy y grabación de una sesión stdio real
conformanceEjecutar los fixtures de regresión de protocolo integrados del repositorio

Consulta la documentación de la CLI para opciones de comandos y alcance.

Documentación

Los ejemplos de integración independientes pueden declarar requisitos más nuevos de Dart SDK; consulta el README de cada ejemplo antes de ejecutarlo.

Autenticación

StreamableHttpClientTransport admite OAuthClientProvider y descubrimiento opcional de código de autorización. Los servidores pueden usar authenticator o authenticationHandler y publicar metadatos de recursos protegidos.

Los ejemplos de OAuth incluidos almacenan tokens en archivos de texto plano para el aprendizaje local. Las aplicaciones de producción deben usar almacenamiento seguro de plataforma o un servicio de credenciales cifrado. Consulta los ejemplos de OAuth y autenticación de HTTP Streamable.

No expongas los servidores HTTP de ejemplo directamente a redes no confiables. Los despliegues de producción deben usar TLS, autenticar solicitudes y configurar las protecciones de Host y Origin documentadas.

Soporte de plataformas

ObjetivoStdioHTTP StreamableHTTP+SSE heredadoFlujo IO/personalizado
VM de Dart / servidor de escritorioSíCliente y servidorCliente y servidorSí
Navegador / Flutter WebSin generación de procesosClienteClienteSí
Flutter móvilSolo ayudantes nativos gestionados por la appCliente remotoCliente remotoSí
Flutter de escritorioProcesos auxiliares localesCliente y servidorCliente y servidorSí

HTTP+SSE heredado está obsoleto bajo MCP SEP-2596 y se conserva solo para compatibilidad explícita. Usa HTTP Streamable para nuevas integraciones remotas.

Consulta recetas de host y cliente de Flutter para orientación sobre ciclo de vida y almacenamiento seguro.

Elegir un paquete MCP de Dart

El equipo de Dart mantiene dart_mcp en dart-lang/ai. Elígelo cuando prefieras las APIs del equipo de Dart. Elige mcp_dart cuando necesites la superficie de transporte, seguridad, compatibilidad, extensión e inspección de este SDK. Vuelve a verificar las versiones actuales de ambos paquetes antes de una decisión de producción.

Soporte