MCP for Dart

Um SDK Dart para construir servidores e clientes MCP.

Documentação

MCP (Model Context Protocol) para Dart

Coverage Stable package likes

mcp_dart é um SDK Dart e Flutter de dupla era para clientes, servidores e hosts de IA MCP. Ele implementa a superfície de wire completa do núcleo cliente/servidor da especificação MCP 2026-07-28 bloqueada, mantém o conjunto de recursos MCP 2025-11-25 e negocia especificações anteriores suportadas baseadas em inicialização.

Aqui, núcleo significa os requisitos normativos de wire atribuídos aos papéis de cliente e servidor pela especificação final fixada. Isso exclui extensões MCP opcionais, comportamento de UI do host, uma implementação de servidor de autorização, resolução de referência externa JSON Schema e vocabulários JSON Schema personalizados.

[!IMPORTANT] Os pacotes estáveis atuais são mcp_dart 2.4.0 e mcp_dart_cli 0.2.0; a restrição de SDK ^2.3.0 da CLI aceita 2.4. O código-fonte atual passa em todos os requisitos pontuados nos conjuntos oficiais de cliente e servidor alpha.11 MCP 2025-11-25 e 2026-07-28, incluindo todos os 25 cenários de autorização 2026 exigidos, além de interoperabilidade bidirecional com o SDK TypeScript 2.0.0 e o SDK Python 2.0.0 publicados.

Meta do SDK Nível 1

O projeto está buscando MCP SDK Nível 1. O Nível 1 ainda não é reivindicado ou atribuído. A linha de base técnica está verde; as etapas restantes de auditoria oficial, governança de repositório e Grupo de Trabalho do SDK são rastreadas no roteiro e no inventário de cobertura de 48 recursos.

O contrato público de manutenção está documentado no guia de contribuição, política de segurança, política de dependências e política de versionamento.

Requisitos

PacoteSDK Dart mínimo
mcp_dart 2.4.03.4
mcp_dart_cli 0.2.03.12

Projetos gerados apenas com SDK mantêm o mínimo Dart 3.4 do SDK. Projetos CLI usam Dart 3.12 porque a CLI e sua cadeia de ferramentas têm como alvo essa versão.

Instale o Dart em dart.dev.

Instalação

Canal de produção

Use o pacote estável mais recente para projetos de produção:

dart pub add mcp_dart

Fixar a versão estável do SDK

Fixe explicitamente a linha estável 2.4 quando a resolução reprodutível de dependências for importante:

dependencies:
  mcp_dart: ^2.4.0

Os trechos abaixo usam a linha estável atual do SDK. As versões dos pacotes permanecem separadas dos perfis de protocolo: McpProtocol.stable nomeia a política de compatibilidade padrão do SDK.

O SDK e a CLI são versionados de forma independente. A restrição ^2.3.0 da CLI estável permanece compatível com o SDK 2.4.

Para integração direta com o SDK, comece com o guia de introdução. A CLI abaixo é opcional e fornece comandos de scaffolding, inspeção e conformidade.

O que o SDK oferece

  • Servidores, clientes e integrações de host MCP com APIs Dart null-safe.
  • APIs principais de ferramentas, recursos, prompts, conclusão, elicitação, assinaturas, logging, raízes e amostragem com comportamento selecionado para a era de protocolo negociada. O logging MCP 2026-07-28 é mantido para compatibilidade, mas está obsoleto upstream.
  • Transports Stdio, Streamable HTTP, fluxo de IO e personalizados.
  • Hooks de descoberta/PKCE de cliente OAuth, callbacks de autenticação de servidor, proteção contra rebinding de DNS e validação estrita de Streamable HTTP.
  • Uma implementação experimental de extensão Tasks, auxiliares de metadados MCP Apps e negociação genérica de extensões. As extensões são separadas da cobertura principal do protocolo; Tasks não é uma extensão oficial nem parte da reivindicação de conformidade principal do SDK.
  • Conformidade automatizada MCP 2025-11-25 e MCP 2026-07-28, interoperabilidade bidirecional com o SDK TypeScript 2.0.0 publicado, interoperabilidade bidirecional com o SDK Python 2.0.0, testes de transporte em navegador real, uma integração real de serviço Flutter Web no Chrome, testes de widget determinísticos e um portão independente do Test Suite JSON Schema fixado.
  • mcp_dart 2.4.0 adiciona um cliente legado HTTP+SSE obsoleto e opcional com roteamento de mesma origem e interoperabilidade bidirecional contra pares oficiais do SDK TypeScript 1.30.0 e SDK Python 2.0.0.

O MCP tem três papéis: um host possui a experiência do usuário, um cliente conecta esse host a um servidor, e um servidor expõe ferramentas, recursos e prompts. Um host pode gerenciar vários clientes e servidores.

Perfis de protocolo

PerfilComportamento do protocolo
McpProtocol.stablePerfil padrão de dupla era: prefira MCP 2026-07-28, depois volte para especificações MCP baseadas em inicialização; sondas de descoberta somente com corpo são limitadas a 5 segundos
McpProtocol.legacyPerfil da era de inicialização: negocie a especificação MCP 2025-11-25, MCP 2025-06-18, MCP 2025-03-26, MCP 2024-11-05 ou MCP 2024-10-07
McpProtocol.require2026Exija MCP 2026-07-28 e rejeite inicialização legada

Use stableProtocolVersion ou defaultProtocolVersion para MCP 2026-07-28. previewProtocolVersion permanece como um alias obsoleto para aplicativos construídos contra um pré-lançamento 2.3. latestInitializationProtocolVersion permanece 2025-11-25 quando o perfil padrão volta para o ciclo de vida legado. Para compatibilidade, latestProtocolVersion e supportedProtocolVersions mantêm seus valores da era de inicialização mcp_dart 2.2; use allSupportedProtocolVersions para a lista de dupla era.

Selecione um perfil somente quando precisar restringir a negociação:

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),
);

Consulte o guia de transição MCP 2026-07-28 para regras de fallback e APIs específicas do MCP 2026-07-28, ou execute o exemplo estrito MCP 2026-07-28. Aplicativos que atualizam da linha estável 2.2 também devem seguir o guia de migração 2.2 para 2.3.

Início rápido com a CLI

Instale a CLI estável correspondente:

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

A CLI 0.2.0 cria um projeto com mcp_dart: ^2.3.0. O inspetor inicia o servidor stdio gerado por conta própria. Depois de sair do inspetor interativo, você pode executar uma única ferramenta diretamente:

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

Comandos úteis:

ComandoFinalidade
createCriar um servidor MCP Dart usando o canal SDK emparelhado com a CLI
serveExecutar um servidor gerado via stdio ou HTTP
doctorVerificar a saúde e a conectividade do projeto
inspectUsar interativamente os recursos de um servidor
inspect-serverProduzir um relatório estruturado para um servidor ativo
inspect-clientExecutar um harness stdio que inspeciona um cliente conectado
traceFazer proxy e registrar uma sessão stdio real
conformanceExecutar os fixtures de regressão de protocolo integrados do repositório

Consulte a documentação da CLI para opções de comando e escopo.

Documentação

Exemplos de integração independentes podem declarar requisitos mais novos de SDK Dart; verifique o README de cada exemplo antes de executá-lo.

Autenticação

StreamableHttpClientTransport suporta OAuthClientProvider e descoberta opcional de código de autorização. Servidores podem usar authenticator ou authenticationHandler e publicar metadados de recursos protegidos.

Os exemplos OAuth verificados armazenam tokens em arquivos de texto simples para aprendizado local. Aplicativos de produção devem usar armazenamento seguro da plataforma ou um serviço de credenciais criptografado. Consulte os exemplos OAuth e autenticação Streamable HTTP.

Não exponha servidores HTTP de exemplo diretamente a redes não confiáveis. Implantações de produção devem usar TLS, autenticar solicitações e configurar as proteções de Host e Origem documentadas.

Suporte de plataforma

AlvoStdioStreamable HTTPHTTP+SSE legadoFluxo IO/personalizado
VM Dart / servidor desktopSimCliente e servidorCliente e servidorSim
Navegador / Flutter WebSem spawn de processoClienteClienteSim
Flutter mobileSomente auxiliares nativos gerenciados pelo aplicativoCliente remotoCliente remotoSim
Flutter desktopProcessos auxiliares locaisCliente e servidorCliente e servidorSim

HTTP+SSE legado está obsoleto sob MCP SEP-2596 e é mantido apenas para compatibilidade explícita. Use Streamable HTTP para novas integrações remotas.

Consulte receitas de host e cliente Flutter para orientação sobre ciclo de vida e armazenamento seguro.

Escolhendo um pacote MCP Dart

A equipe Dart mantém dart_mcp em dart-lang/ai. Escolha-o quando preferir as APIs da equipe Dart. Escolha mcp_dart quando precisar da superfície de transporte, segurança, compatibilidade, extensão e inspeção deste SDK. Verifique novamente as versões atuais de ambos os pacotes antes de uma decisão de produção.

Suporte