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:
Dominio | Descripción |
| Analizar el código Dart en busca de errores, advertencias y pelusas |
| Compilar Dart en varios formatos (exe, instantáneas AOT/JIT, JavaScript) |
| Crear nuevos proyectos de Dart a partir de plantillas |
| Generar documentación de API para proyectos de Dart |
| Aplicar correcciones automáticas al código fuente de Dart |
| Formatear el código fuente de Dart según las pautas de estilo |
| Mostrar información de diagnóstico sobre las herramientas Dart instaladas |
| Trabajar con paquetes (obtener, agregar, actualizar, obsoletos, etc.) |
| Ejecute programas Dart con soporte para pasar argumentos |
| Ejecutar 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
Related MCP server: dbt CLI MCP Server
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 claudeUsando npx (recomendado)
El servidor se puede ejecutar directamente sin instalación usando npx:
npx @egyleader/dart-mcp-serverInstalación global
Para un acceso más fácil, puede instalar el servidor globalmente:
npm install -g @egyleader/dart-mcp-serverLuego ejecútalo usando:
dart-mcp-serverDe 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.jsIntegració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 buildManejo 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 tagsLicencia
Instituto Tecnológico de Massachusetts (MIT)