Flutter/Dart MCP 服务器

项目简介

本项目实现了一个 Model Context Protocol (MCP) 服务器,旨在为大型语言模型(LLM)客户端提供 Flutter 和 Dart 开发工具。通过此服务器,LLM 可以调用各种 Flutter 和 Dart CLI 命令,例如运行 Flutter 应用、构建不同平台的安装包、进行代码分析和运行测试等。这使得 LLM 能够理解和操作 Flutter/Dart 项目,从而实现更智能的开发辅助功能。

主要功能点

  • 工具注册与发现: 服务器注册并声明了一系列 Flutter 和 Dart 开发工具,LLM 客户端可以通过 MCP 协议发现这些工具。
  • 工具执行: 服务器能够接收 LLM 客户端的工具调用请求,并执行相应的 Flutter 或 Dart CLI 命令。
  • 标准化接口: 基于 MCP 协议,提供标准的 JSON-RPC 接口与 LLM 客户端通信。
  • Stdio 传输: 使用 Stdio 作为默认的传输协议,方便集成和部署。

安装步骤

  1. 安装 Node.js 和 npm: 确保你的系统已安装 Node.js 和 npm (或 yarn)。

  2. 安装依赖: 由于仓库中只提供了 'src/index.ts' 文件,没有 'package.json' 等项目描述文件,你需要手动创建一个 'package.json' 文件,并添加 '@modelcontextprotocol/sdk' 和 'zod' 作为依赖。一个简单的 'package.json' 文件示例如下:

    {
      "name": "mcp-flutter-server",
      "version": "1.0.0",
      "description": "MCP server for Flutter and Dart development tools",
      "main": "src/index.ts",
      "dependencies": {
        "@modelcontextprotocol/sdk": "latest",
        "zod": "latest"
      },
      "bin": {
        "mcp-flutter-server": "src/index.ts"
      },
      "scripts": {
        "start": "node src/index.ts"
      },
      "type": "module"
    }

    将以上内容保存为 'package.json' 文件,并放在与 'src/index.ts' 同级的目录下。然后在该目录下运行 'npm install' 或 'yarn install' 安装依赖。

  3. 编译 (如果需要): 虽然代码是 TypeScript,但直接使用 'node src/index.ts' 也可以运行。如果需要先编译成 JavaScript,可以配置 TypeScript 编译,例如添加 'tsconfig.json' 文件并运行 'tsc' 命令。但对于基本使用,可以跳过编译步骤。

  4. 使脚本可执行: 确保 'src/index.ts' 文件具有执行权限 ('chmod +x src/index.ts')。

服务器配置

MCP 客户端需要配置以下信息以连接到此 MCP 服务器:

{
  "serverName": "flutter-dart-server",
  "command": "mcp-flutter-server",
  "args": ["<你的Flutter项目根目录的绝对路径>"]
}

参数说明:

  • 'serverName': 服务器名称,设置为 'flutter-dart-server'。
  • 'command': 启动服务器的命令。 如果你将 'package.json' 中的 'bin' 字段配置正确,并使用 'npm install -g' 全局安装了此包,可以直接使用 'mcp-flutter-server' 命令。否则,你可能需要使用 'node src/index.ts' 或者 'npm run start' (如果使用 'npm run start',command 配置为 'npm', args 配置为 '["run", "start", "<你的Flutter项目根目录的绝对路径>"]'),具体取决于你的安装和运行方式。
  • 'args': 传递给服务器的参数列表。 第一个参数 必须是你的 Flutter 项目根目录的绝对路径。 例如,如果你的 Flutter 项目位于 '/Users/yourname/dev/my_flutter_app',则 'args' 应该配置为 '["/Users/yourname/dev/my_flutter_app"]'。

注意: 请将 '<你的Flutter项目根目录的绝对路径>' 替换为你实际的 Flutter 项目根目录的绝对路径。

基本使用方法

  1. 启动 MCP 服务器: 在终端中,导航到包含 'src/index.ts' 和 'package.json' 的目录,然后根据你的配置运行服务器。 例如,如果配置了 'bin' 字段并全局安装,可以直接运行 'mcp-flutter-server <你的Flutter项目根目录的绝对路径>'。

  2. 配置 MCP 客户端: 在你的 MCP 客户端 (如实现了 MCP 协议的 LLM 应用或客户端工具) 中,配置上述 “服务器配置” 部分的 JSON 信息,确保 'command' 和 'args' 配置正确,指向你启动的 Flutter/Dart MCP 服务器。

  3. LLM 客户端调用工具: 配置完成后,LLM 客户端应该能够通过 MCP 协议连接到此服务器,并发现和调用已注册的 Flutter 和 Dart 工具。例如,LLM 可以请求服务器列出可用工具,然后调用 'flutter_run' 工具来运行 Flutter 应用,或者调用 'flutter_build' 工具来构建 APK 包等。 具体的工具调用方式和参数需要参考 LLM 客户端的文档。

示例:使用 'flutter_run' 工具运行 Flutter 应用

假设 LLM 客户端需要调用 'flutter_run' 工具运行 Flutter 应用,客户端会向 MCP 服务器发送一个 'CallToolRequest' 请求,请求内容可能如下 (简化示例):

{
  "jsonrpc": "2.0",
  "method": "MCP.CallTool",
  "params": {
    "name": "flutter_run",
    "arguments": {
      "target": "lib/main.dart"
    }
  },
  "id": "123"
}

服务器收到请求后,会执行 'flutter run lib/main.dart' 命令,并将执行结果通过 JSON-RPC 响应返回给客户端。

信息

分类

开发者工具