Dart MCP Server

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Integrates with Codeium IDE through the Model Context Protocol, allowing AI coding assistants to leverage Dart functionality

  • Provides seamless access to Dart SDK commands for AI-powered development, enabling analysis, compilation, project creation, documentation, fixes, formatting, package management, and testing of Dart code

  • Identifies and works with Flutter projects, providing Dart SDK commands that support Flutter development workflows

Servidor Dart MCP

Un servidor distribuible de Protocolo de Contexto de Modelo (MCP) que expone los comandos del SDK de Dart para el desarrollo basado en IA. Este servidor conecta los asistentes de programación de IA con los flujos de trabajo de desarrollo de Dart/Flutter mediante la implementación del Protocolo de Contexto de Modelo (MCP).

Características

Este servidor MCP proporciona acceso sin inconvenientes a los siguientes comandos del SDK de Dart:

DominioDescripción
dart-analyzeAnalizar el código Dart en busca de errores, advertencias y pelusas
dart-compileCompilar Dart en varios formatos (exe, instantáneas AOT/JIT, JavaScript)
dart-createCrear nuevos proyectos de Dart a partir de plantillas
dart-docGenerar documentación de API para proyectos de Dart
dart-fixAplicar correcciones automáticas al código fuente de Dart
dart-formatFormatear el código fuente de Dart según las pautas de estilo
dart-infoMostrar información de diagnóstico sobre las herramientas Dart instaladas
dart-packageTrabajar con paquetes (obtener, agregar, actualizar, obsoletos, etc.)
dart-runEjecute programas Dart con soporte para pasar argumentos
dart-testEjecutar pruebas con soporte para opciones de filtrado y generación de informes

Beneficios clave

  • Manejo inteligente de rutas : resuelve automáticamente rutas relativas a rutas absolutas, lo que garantiza que los comandos funcionen correctamente independientemente del directorio de trabajo
  • Detección automática de proyectos : identifica proyectos de Dart/Flutter en ubicaciones comunes, como directorios de inicio y espacios de trabajo.
  • Compatibilidad multiplataforma : funciona en macOS, Linux y Windows
  • Configuración cero : funciona de inmediato con valores predeterminados razonables
  • Integración con MCP : compatible con cualquier cliente MCP, incluidos Windsurf, Cline y otras implementaciones del Protocolo de contexto de modelo

Prerrequisitos

  • Node.js : 18.x o superior
  • Dart SDK : 3.0 o superior instalado y disponible en su PATH

Instalación

Instalación mediante herrería

Para instalar Dart MCP Server para Claude Desktop automáticamente a través de Smithery :

npx -y @smithery/cli install @egyleader/dart-mcp --client claude

Usando npx (recomendado)

El servidor se puede ejecutar directamente sin instalación usando npx:

npx @egyleader/dart-mcp-server

Instalación global

Para un acceso más fácil, puede instalar el servidor globalmente:

npm install -g @egyleader/dart-mcp-server

Luego ejecútalo usando:

dart-mcp-server

De la fuente

# Clone the repository git clone https://github.com/egyleader/dart-mcp-server.git cd dart-mcp-server # Install dependencies npm install # Build the project npm run build # Run the server node dist/index.js

Integración con clientes MCP

Configuración de IDE de Windsurf/Codeium

Para utilizar este servidor MCP con Windsurf o Codeium IDE, agregue lo siguiente a su archivo mcp_config.json (normalmente ubicado en ~/.codeium/windsurf/mcp_config.json ):

{ "mcpServers": { "dart": { "command": "npx", "args": [ "-y", "@egyleader/dart-mcp-server" ] } } }

Variables de entorno

  • DART_MCP_VERBOSE : Establezca cualquier valor para habilitar el registro detallado para la depuración

Ejemplos de uso de la herramienta MCP

A continuación, se muestran ejemplos de cómo usar las herramientas MCP proporcionadas por el servidor. Estos ejemplos muestran los parámetros que se pueden pasar a cada herramienta.

dardo-analizar

Analizar el código Dart en busca de errores, advertencias y pelusas:

{ "path": "lib/main.dart", "options": ["--fatal-infos", "--fatal-warnings"] }

compilación de dardos

Compilar código Dart en varios formatos:

{ "path": "lib/main.dart", "format": "exe", "output": "build/app", "options": ["--verbose"] }

Formatos compatibles: exe , aot-snapshot , jit-snapshot , kernel , js

dart-create

Crear un nuevo proyecto de Dart a partir de una plantilla:

{ "projectName": "my_awesome_app", "template": "console", "output": "projects/my_awesome_app", "options": ["--force"] }

Nota sobre el nombre del proyecto y la salida:

  • Si solo se proporciona projectName , se utiliza como el nombre del directorio donde se crea el proyecto.
  • Si se proporciona output , se utiliza como el directorio donde se crea el proyecto.
  • El nombre real del paquete/proyecto en Dart se deriva del nombre del directorio final mediante la CLI de Dart.

Plantillas compatibles: console , package , server-shelf , web

dart-doc

Generar documentación de API para un proyecto de Dart:

{ "path": ".", "output": "doc", "options": ["--exclude", "lib/generated"] }

arreglo de dardos

Aplicar correcciones automáticas al código fuente de Dart:

{ "path": "lib", "apply": true, "options": ["--pedantic"] }

formato dardo

Formatear el código fuente de Dart según las pautas de estilo:

{ "paths": ["lib/main.dart", "lib/models"], "setExitIfChanged": true, "options": ["--line-length=100"] }

información de dardos

Mostrar información de diagnóstico sobre las herramientas Dart instaladas:

{ "options": ["--verbose"] }

paquete dart

Trabajar con paquetes (comandos pub):

{ "command": "get", "workingDir": ".", "args": ["--offline"] }

Comandos admitidos: get , upgrade , outdated , add , remove , publish , deps , downgrade , cache , run , global

carrera de dardos

Ejecute programas Dart con soporte para pasar argumentos:

{ "script": "bin/server.dart", "workingDir": ".", "args": ["--port=8080", "--mode=production"] }

prueba de dardos

Ejecute pruebas con soporte para opciones de filtrado y generación de informes:

{ "path": "test", "workingDir": ".", "options": ["--name=login", "--platform=chrome"] }

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.

Referencia de la API de herramientas

dardo-analizar

Analizar el código de Dart en un directorio o archivo.

{ path?: string; // Directory or file to analyze options?: string[]; // Additional options for the dart analyze command }

Ejemplo:

{ path: "lib", options: ["--fatal-infos", "--fatal-warnings"] }

compilación de dardos

Compilar Dart en varios formatos.

{ format: 'exe' | 'aot-snapshot' | 'jit-snapshot' | 'kernel' | 'js'; // Output format path: string; // Path to the Dart file to compile output?: string; // Output file path options?: string[]; // Additional compilation options }

Ejemplo:

{ format: "exe", path: "bin/main.dart", output: "bin/app" }

dart-create

Crea un nuevo proyecto de Dart.

{ template: 'console' | 'package' | 'server-shelf' | 'web'; // Project template projectName: string; // Name of the project to create output?: string; // Directory where to create the project options?: string[]; // Additional project creation options }

Nota:

  • Si se proporciona output , el proyecto se creará en ese directorio.
  • Si solo se proporciona projectName , se utilizará como nombre del directorio.
  • El nombre real del paquete Dart se deriva del nombre del directorio final.

Ejemplo:

{ template: "package", projectName: "my_dart_library", output: "projects/my_dart_library" }

dart-doc

Generar documentación de API para proyectos de Dart.

{ path?: string; // Directory containing the Dart package to document output?: string; // Output directory for the generated documentation options?: string[]; // Additional documentation options }

Ejemplo:

{ path: ".", output: "doc/api" }

arreglo de dardos

Aplicar correcciones automatizadas al código fuente de Dart.

{ path?: string; // Directory or file to apply fixes to apply?: boolean; // Whether to apply the suggested fixes (default: true) options?: string[]; // Additional fix options }

Ejemplo:

{ path: "lib", apply: true, options: ["--pedantic"] }

formato dardo

Formatear idiomáticamente el código fuente de Dart.

{ paths: string[]; // Files or directories to format setExitIfChanged?: boolean; // Return exit code 1 if there are formatting changes (default: false) options?: string[]; // Additional format options }

Ejemplo:

{ paths: ["lib", "test"], setExitIfChanged: true, options: ["--line-length=80"] }

información de dardos

Mostrar información de diagnóstico sobre las herramientas instaladas.

{ options?: string[]; // Additional info options }

Ejemplo:

{ options: ["--verbose"] }

paquete dart

Trabajar con paquetes (comandos pub).

{ command: 'get' | 'upgrade' | 'outdated' | 'add' | 'remove' | 'publish' | 'deps' | 'downgrade' | 'cache' | 'run' | 'global'; // Pub subcommand args?: string[]; // Arguments for the pub subcommand workingDir?: string; // Working directory for the command }

Ejemplos:

// Add a package { command: "add", args: ["rxdart"], workingDir: "my_project" } // Get dependencies { command: "get", workingDir: "my_project" }

carrera de dardos

Ejecutar un programa Dart.

{ script: string; // Path to the Dart script to run args?: string[]; // Arguments to pass to the script workingDir?: string; // Working directory for the command }

Ejemplo:

{ script: "bin/main.dart", args: ["--verbose"], workingDir: "my_project" }

prueba de dardos

Ejecutar pruebas para un proyecto.

{ path?: string; // Path to the test file or directory options?: string[]; // Additional test options workingDir?: string; // Working directory for the command }

Ejemplo:

{ path: "test", options: ["--coverage", "--name=auth"], workingDir: "my_project" }

Desarrollo

# Watch mode for development pnpm run dev # Build for production pnpm run build

Manejo de errores

El servidor implementa un manejo integral de errores:

  • Los errores de ejecución de comandos se capturan y se formatean adecuadamente
  • Los problemas de resolución de ruta se informan con diagnósticos detallados
  • Manejo de tiempos de espera para operaciones de larga duración
  • Propagación adecuada del código de salida de los comandos Dart

Contribuyendo

Consulte CONTRIBUTING.md para obtener pautas de contribución detalladas.

Nuestro formato de confirmación es el siguiente:

<type>[optional scope]: [JIRA-123(optional)] <description>

Ejemplo:

feat(tools): [DART-456] add support for dart test tags

Licencia

Instituto Tecnológico de Massachusetts (MIT)

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Un servidor distribuible de Protocolo de Contexto de Modelo (MCP) que expone los comandos del SDK de Dart para el desarrollo basado en IA. Este servidor conecta los asistentes de programación de IA con los flujos de trabajo de desarrollo de Dart/Flutter mediante la implementación del Protocolo de Contexto de Modelo (MCP).

  1. Features
    1. Key Benefits
  2. Prerequisites
    1. Installation
      1. Installing via Smithery
      2. Using npx (recommended)
      3. Global Installation
      4. From Source
    2. Integration with MCP Clients
      1. Windsurf / Codeium IDE Configuration
      2. Environment Variables
    3. MCP Tool Usage Examples
      1. dart-analyze
      2. dart-compile
      3. dart-create
      4. dart-doc
      5. dart-fix
      6. dart-format
      7. dart-info
      8. dart-package
      9. dart-run
      10. dart-test
    4. License
      1. Contributing
        1. Tool API Reference
          1. dart-analyze
          2. dart-compile
          3. dart-create
          4. dart-doc
          5. dart-fix
          6. dart-format
          7. dart-info
          8. dart-package
          9. dart-run
          10. dart-test
        2. Development
          1. Error Handling
            1. Contributing
              1. License
                ID: vuwii9l5gu