一个可分发的模型上下文协议(MCP)服务器,它暴露了用于AI驱动开发的Dart SDK命令。该服务器通过实现模型上下文协议(MCP),弥合了AI编码助手与Dart/Flutter开发工作流程之间的差距。
<a href="https://glama.ai/mcp/servers/vuwii9l5gu"> <img width="380" height="200" src="https://gips2.baidu.com/it/u=2543825125,1541572191&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Dart Server MCP 服务器" /> </a>此MCP服务器提供了对以下Dart SDK命令的无缝访问:
| 命令 | 描述 |
|---|---|
dart-analyze | 分析Dart代码中的错误、警告和lints |
dart-compile | 将Dart编译成各种格式(exe,AOT/JIT快照,JavaScript) |
dart-create | 使用模板创建新的Dart项目 |
dart-doc | 为Dart项目生成API文档 |
dart-fix | 对Dart源代码应用自动修复 |
dart-format | 根据样式指南格式化Dart源代码 |
dart-info | 显示关于已安装Dart工具的诊断信息 |
dart-package | 操作包(获取、添加、升级、过时等) |
dart-run | 运行Dart程序并支持传递参数 |
dart-test | 运行测试并支持过滤和报告选项 |
要通过Smithery自动安装Dart MCP服务器:
npx -y @smithery/cli install @egyleader/dart-mcp --client claude
无需安装即可直接运行服务器:
npx @egyleader/dart-mcp-server
为了更方便地访问,可以全局安装服务器:
npm install -g @egyleader/dart-mcp-server
然后使用以下命令运行:
dart-mcp-server
# 克隆仓库
git clone https://github.com/egyleader/dart-mcp-server.git
cd dart-mcp-server
# 安装依赖
npm install
# 构建项目
npm run build
# 运行服务器
node dist/index.js
要在Windsurf或Codeium IDE中使用此MCP服务器,请在您的mcp_config.json文件中添加以下内容(通常位于~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"dart": {
"command": "npx",
"args": [
"-y",
"@egyleader/dart-mcp-server"
]
}
}
}
DART_MCP_VERBOSE:设置任意值以启用调试的详细日志记录这里有一些如何使用服务器提供的MCP工具的例子。这些例子展示了可以传递给每个工具的参数。
分析Dart代码中的错误、警告和lints:
{
"path": "lib/main.dart",
"options": ["--fatal-infos", "--fatal-warnings"]
}
将Dart代码编译成各种格式:
{
"path": "lib/main.dart",
"format": "exe",
"output": "build/app",
"options": ["--verbose"]
}
支持的格式:exe,aot-snapshot,jit-snapshot,kernel,js
使用模板创建一个新的Dart项目:
{
"projectName": "my_awesome_app",
"template": "console",
"output": "projects/my_awesome_app",
"options": ["--force"]
}
关于projectName和output的说明:
projectName,则将其用作创建项目的目录名称。output,则将其用作创建项目的目录。支持的模板:console,package,server-shelf,web
为Dart项目生成API文档:
{
"path": ".",
"output": "doc",
"options": ["--exclude", "lib/generated"]
}
对Dart源代码应用自动修复:
{
"path": "lib",
"apply": true,
"options": ["--pedantic"]
}
根据样式指南格式化Dart源代码:
{
"paths": ["lib/main.dart", "lib/models"],
"setExitIfChanged": true,
"options": ["--line-length=100"]
}
显示关于已安装Dart工具的诊断信息:
{
"options": ["--verbose"]
}
操作包(pub命令):
{
"command": "get",
"workingDir": ".",
"args": ["--offline"]
}
支持的命令:get,upgrade,outdated,add,remove,publish,deps,downgrade,cache,run,global
运行Dart程序并支持传递参数:
{
"script": "bin/server.dart",
"workingDir": ".",
"args": ["--port=8080", "--mode=production"]
}
运行测试并支持过滤和报告选项:
{
"path": "test",
"workingDir": ".",
"options": ["--name=login", "--platform=chrome"]
}
本项目采用MIT许可证 - 详情见LICENSE文件。
欢迎贡献!请随时提交Pull Request。
分析目录或文件中的Dart代码。
{
path?: string; // 要分析的目录或文件
options?: string[]; // dart analyze命令的附加选项
}
示例:
{
path: "lib",
options: ["--fatal-infos", "--fatal-warnings"]
}
将Dart编译成各种格式。
{
format: 'exe' | 'aot-snapshot' | 'jit-snapshot' | 'kernel' | 'js'; // 输出格式
path: string; // 要编译的Dart文件路径
output?: string; // 输出文件路径
options?: string[]; // 附加编译选项
}
示例:
{
format: "exe",
path: "bin/main.dart",
output: "bin/app"
}
创建一个新的Dart项目。
{
template: 'console' | 'package' | 'server-shelf' | 'web'; // 项目模板
projectName: string; // 要创建的项目名称
output?: string; // 创建项目的目录
options?: string[]; // 附加项目创建选项
}
注意:
output,项目将在该目录中创建。projectName,则将其用作目录名称。示例:
{
template: "package",
projectName: "my_dart_library",
output: "projects/my_dart_library"
}
为Dart项目生成API文档。
{
path?: string; // 包含要生成文档的Dart包的目录
output?: string; // 生成文档的输出目录
options?: string[]; // 附加文档选项
}
示例:
{
path: ".",
output: "doc/api"
}
对Dart源代码应用自动修复。
{
path?: string; // 要应用修复的目录或文件
apply?: boolean; // 是否应用建议的修复(默认:true)
options?: string[]; // 附加修复选项
}
示例:
{
path: "lib",
apply: true,
options: ["--pedantic"]
}
根据习惯用法格式化Dart源代码。
{
paths: string[]; // 要格式化的文件或目录
setExitIfChanged?: boolean; // 如果有格式化更改,则返回退出码1(默认:false)
options?: string[]; // 附加格式化选项
}
示例:
{
paths: ["lib", "test"],
setExitIfChanged: true,
options: ["--line-length=80"]
}
显示关于已安装工具的诊断信息。
{
options?: string[]; // 附加信息选项
}
示例:
{
options: ["--verbose"]
}
操作包(pub命令)。
{
command: 'get' | 'upgrade' | 'outdated' | 'add' | 'remove' | 'publish' | 'deps' | 'downgrade' | 'cache' | 'run' | 'global'; // pub子命令
args?: string[]; // pub子命令的参数
workingDir?: string; // 命令的工作目录
}
示例:
// 添加一个包
{
command: "add",
args: ["rxdart"],
workingDir: "my_project"
}
// 获取依赖项
{
command: "get",
workingDir: "my_project"
}
运行一个Dart程序。
{
script: string; // 要运行的Dart脚本路径
args?: string[]; // 要传递给脚本的参数
workingDir?: string; // 命令的工作目录
}
示例:
{
script: "bin/main.dart",
args: ["--verbose"],
workingDir: "my_project"
}
运行项目的测试。
{
path?: string; // 测试文件或目录的路径
options?: string[]; // 附加测试选项
workingDir?: string; // 命令的工作目录
}
示例:
{
path: "test",
options: ["--coverage", "--name=auth"],
workingDir: "my_project"
}
# 开发模式监视
pnpm run dev
# 生产构建
pnpm run build
服务器实现了全面的错误处理:
请参阅CONTRIBUTING.md以获取详细的贡献指南。
我们的提交格式遵循:
<类型>[可选范围]: [JIRA-123(可选)] <描述>
示例:
feat(tools): [DART-456] 添加对dart test标签的支持
MIT