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 作为默认的传输协议,方便集成和部署。
安装步骤
-
安装 Node.js 和 npm: 确保你的系统已安装 Node.js 和 npm (或 yarn)。
-
安装依赖: 由于仓库中只提供了 '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' 安装依赖。
-
编译 (如果需要): 虽然代码是 TypeScript,但直接使用 'node src/index.ts' 也可以运行。如果需要先编译成 JavaScript,可以配置 TypeScript 编译,例如添加 'tsconfig.json' 文件并运行 'tsc' 命令。但对于基本使用,可以跳过编译步骤。
-
使脚本可执行: 确保 '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 项目根目录的绝对路径。
基本使用方法
-
启动 MCP 服务器: 在终端中,导航到包含 'src/index.ts' 和 'package.json' 的目录,然后根据你的配置运行服务器。 例如,如果配置了 'bin' 字段并全局安装,可以直接运行 'mcp-flutter-server <你的Flutter项目根目录的绝对路径>'。
-
配置 MCP 客户端: 在你的 MCP 客户端 (如实现了 MCP 协议的 LLM 应用或客户端工具) 中,配置上述 “服务器配置” 部分的 JSON 信息,确保 'command' 和 'args' 配置正确,指向你启动的 Flutter/Dart MCP 服务器。
-
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 响应返回给客户端。
信息
分类
开发者工具