Dart MCP Server

Dart MCP Server

一个可分发的模型上下文协议(MCP)服务器,它公开 Dart SDK 命令,用于 AI 驱动的开发。该服务器通过实现模型上下文协议(MCP),弥合了 AI 编码助手与 Dart/Flutter 开发工作流程之间的差距。

Git管理工具
数据与应用分析
访问服务器

Tools

dart-analyze

dart-compile

dart-create

dart-run

dart-doc

dart-fix

dart-format

dart-info

dart-package

dart-test

README

Dart MCP 服务器

npm version License: MIT smithery badge

一个可分发的模型上下文协议 (MCP) 服务器,它公开 Dart SDK 命令以支持 AI 驱动的开发。该服务器通过实现模型上下文协议 (MCP),弥合了 AI 编码助手与 Dart/Flutter 开发工作流程之间的差距。

<a href="https://glama.ai/mcp/servers/vuwii9l5gu"> <img width="380" height="200" src="https://glama.ai/mcp/servers/vuwii9l5gu/badge" alt="Dart Server MCP server" /> </a>

特性

此 MCP 服务器提供对以下 Dart SDK 命令的无缝访问:

命令 描述
dart-analyze 分析 Dart 代码中的错误、警告和 lint
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 使用包(get、add、upgrade、outdated 等)
dart-run 运行 Dart 程序,支持传递参数
dart-test 运行测试,支持过滤和报告选项

主要优势

  • 智能路径处理:自动将相对路径解析为绝对路径,确保命令无论工作目录如何都能正确运行
  • 项目自动检测:识别常见位置(如主目录和工作区)中的 Dart/Flutter 项目
  • 跨平台支持:可在 macOS、Linux 和 Windows 上运行
  • 零配置:开箱即用,具有合理的默认设置
  • MCP 集成:与任何 MCP 客户端兼容,包括 Windsurf、Cline 和其他模型上下文协议实现

前提条件

  • Node.js:18.x 或更高版本
  • Dart SDK:已安装 3.0 或更高版本,并且在您的 PATH 中可用

安装

通过 Smithery 安装

要通过 Smithery 为 Claude Desktop 自动安装 Dart MCP Server:

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

使用 npx (推荐)

无需安装即可直接使用 npx 运行服务器:

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

与 MCP 客户端集成

Windsurf / Codeium IDE 配置

要将此 MCP 服务器与 Windsurf 或 Codeium IDE 一起使用,请将以下内容添加到您的 mcp_config.json 文件(通常位于 ~/.codeium/windsurf/mcp_config.json):

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

环境变量

  • DART_MCP_VERBOSE:设置为任何值以启用详细日志记录以进行调试

MCP 工具使用示例

以下是如何使用服务器提供的 MCP 工具的示例。这些示例显示了可以传递给每个工具的参数。

dart-analyze

分析 Dart 代码中的错误、警告和 lint:

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

dart-compile

将 Dart 代码编译为各种格式:

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

支持的格式:exeaot-snapshotjit-snapshotkerneljs

dart-create

从模板创建新的 Dart 项目:

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

关于 projectName 和 output 的说明:

  • 如果仅提供 projectName,则将其用作创建项目的目录名称。
  • 如果提供了 output,则将其用作创建项目的目录。
  • Dart 中的实际包/项目名称是从 Dart CLI 的最终目录名称派生的。

支持的模板:consolepackageserver-shelfweb

dart-doc

为 Dart 项目生成 API 文档:

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

dart-fix

将自动修复应用于 Dart 源代码:

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

dart-format

根据样式指南格式化 Dart 源代码:

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

dart-info

显示有关已安装 Dart 工具的诊断信息:

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

dart-package

使用包(pub 命令):

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

支持的命令:getupgradeoutdatedaddremovepublishdepsdowngradecacherunglobal

dart-run

运行 Dart 程序,支持传递参数:

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

dart-test

运行测试,支持过滤和报告选项:

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

许可证

此项目已获得 MIT 许可证的许可 - 有关详细信息,请参阅 LICENSE 文件。

贡献

欢迎贡献!请随时提交 Pull Request。

工具 API 参考

dart-analyze

分析目录或文件中的 Dart 代码。

{
  path?: string;       // 要分析的目录或文件
  options?: string[];  // dart analyze 命令的附加选项
}

示例:

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

dart-compile

将 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-create

创建一个新的 Dart 项目。

{
  template: 'console' | 'package' | 'server-shelf' | 'web'; // 项目模板
  projectName: string; // 要创建的项目的名称
  output?: string;     // 在其中创建项目的目录
  options?: string[];  // 附加项目创建选项
}

注意:

  • 如果提供了 output,则将在该目录中创建项目。
  • 如果仅提供 projectName,则将其用作目录名称。
  • 实际的 Dart 包名称是从最终目录名称派生的。

示例:

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

dart-doc

为 Dart 项目生成 API 文档。

{
  path?: string;       // 包含要记录的 Dart 包的目录
  output?: string;     // 生成的文档的输出目录
  options?: string[];  // 附加文档选项
}

示例:

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

dart-fix

将自动修复应用于 Dart 源代码。

{
  path?: string;       // 要应用修复的目录或文件
  apply?: boolean;     // 是否应用建议的修复(默认值:true)
  options?: string[];  // 附加修复选项
}

示例:

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

dart-format

以惯用方式格式化 Dart 源代码。

{
  paths: string[];     // 要格式化的文件或目录
  setExitIfChanged?: boolean; // 如果存在格式更改,则返回退出代码 1(默认值:false)
  options?: string[];  // 附加格式选项
}

示例:

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

dart-info

显示有关已安装工具的诊断信息。

{
  options?: string[];  // 附加信息选项
}

示例:

{
  options: ["--verbose"]
}

dart-package

使用包(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-run

运行 Dart 程序。

{
  script: string;      // 要运行的 Dart 脚本的路径
  args?: string[];     // 传递给脚本的参数
  workingDir?: string; // 命令的工作目录
}

示例:

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

dart-test

运行项目的测试。

{
  path?: string;       // 测试文件或目录的路径
  options?: string[];  // 附加测试选项
  workingDir?: string; // 命令的工作目录
}

示例:

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

开发

# 用于开发的监视模式
pnpm run dev

# 构建用于生产
pnpm run build

错误处理

服务器实现了全面的错误处理:

  • 命令执行错误被捕获并以适当的格式显示
  • 路径解析问题会报告详细的诊断信息
  • 长时间运行的操作的超时处理
  • 从 Dart 命令正确传播退出代码

贡献

请参阅 CONTRIBUTING.md 以获取详细的贡献指南。

我们的提交格式如下:

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

示例:

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

许可证

MIT

推荐服务器

VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
AIO-MCP Server

AIO-MCP Server

🚀 All-in-one MCP server with AI search, RAG, and multi-service integrations (GitLab/Jira/Confluence/YouTube) for AI-enhanced development workflows. Folk from

精选
本地
Hyperbrowser

Hyperbrowser

欢迎来到 Hyperbrowser,人工智能的互联网。Hyperbrowser 是下一代平台,旨在增强人工智能代理的能力,并实现轻松、可扩展的浏览器自动化。它专为人工智能开发者打造,消除了本地基础设施和性能瓶颈带来的麻烦,让您能够:

精选
本地
https://github.com/Streen9/react-mcp

https://github.com/Streen9/react-mcp

react-mcp 与 Claude Desktop 集成,能够根据用户提示创建和修改 React 应用程序。

精选
本地
BigQuery MCP Server

BigQuery MCP Server

这是一个服务器,可以让你的大型语言模型(LLM,比如Claude)直接与你的BigQuery数据对话!可以把它想象成一个友好的翻译器,它位于你的AI助手和数据库之间,确保它们可以安全高效地进行交流。

精选
mcp-perplexity

mcp-perplexity

Perplexity API 的 MCP 服务器。

精选
MCP Web Research Server

MCP Web Research Server

一个模型上下文协议服务器,使 Claude 能够通过集成 Google 搜索、提取网页内容和捕获屏幕截图来进行网络研究。

精选
MySQL MCP Server

MySQL MCP Server

允许人工智能助手通过受控界面列出表格、读取数据和执行 SQL 查询,从而使数据库探索和分析更安全、更有条理。

精选
mcp-codex-keeper

mcp-codex-keeper

作为开发知识的守护者,为 AI 助手提供精心策划的最新文档和最佳实践访问权限。

精选
MCP Etherscan Server

MCP Etherscan Server

通过 Etherscan 的 API 促进与以太坊区块链数据的交互,提供对余额、交易、代币转移、合约 ABI、gas 价格和 ENS 名称解析的实时访问。

精选