MCP server for Flutter development tools integration, providing tools for project management, device control, build operations, debugging, and git operations
49 tools with basic verb-noun naming (get_, list_, run_, etc.) and short descriptions (10-50 chars). All tools have input schemas with typed parameters. However, descriptions are uniformly terse and lack LLM-optimized context (WHEN to use, prerequisites, dependencies). Parameter descriptions are minimal or absent. No output schemas documented. Error handling is generic ('error' category with no recovery guidance). No tool annotations (readOnlyHint, destructiveHint). Composition is reasonable (single responsibility per tool), but many tools lack the depth needed for confident LLM selection.
Add a new terminal tab
Clean the project and run pub get
Clear all application logs
Get application logs with optional filtering
Get Flutter and Dart SDK information
Get current workspace status including project path, devices, and capability flags
Get the current state of the integrated terminal
Descriptions uniformly terse (10-50 chars). Lack LLM-optimized context: WHEN to use, prerequisites, dependencies, and how to distinguish from similar tools. E.g., 'Run the Flutter app on the selected device' does not explain when to call run vs hot_reload vs hot_restart.
No output schemas documented. LLMs cannot infer what fields to expect from responses (e.g., get_logs returns what structure? list_devices returns what fields?). Breaks downstream tool chaining.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes. git_discard and git_delete_branch are marked DESTRUCTIVE but lack annotation hints to guide agent caution.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
List all git branches
Commit staged changes
Create a new branch
Delete a branch (requires confirmation)
Show git diff for a file
Discard changes to files (requires confirmation)
Fetch from remote repository
Pull from remote repository
Push to remote repository
Rebase current branch onto another branch
Stage files for commit
Stage all changes
Get the current git status of the project
Switch to a different branch
Unstage files
Perform a hot reload of the running Flutter app
Perform a hot restart of the running Flutter app
Kill all running emulators
Kill a running emulator by ID
Launch an emulator by ID
List available physical devices and emulators
List available emulators
List recent Flutter projects with their paths and display names
List active Flutter app sessions
Open Flutter DevTools, optionally to a specific page
Open the iOS Simulator
Open and validate a Flutter project by path
Open the Flutter widget previewer
Run pub get to fetch dependencies
Refresh the list of available devices
Remove a project from the recent projects list
Restart the Flutter daemon
Run the Flutter app on the selected device
Run a custom Flutter CLI command
Select a build configuration (Debug, Release, Profile)
Select a device for running the Flutter app
Select the log channel (output or console)
Select a project as the active workspace project
Select an active session for debugging
Send text to the integrated terminal
Stop the running Flutter app
Toggle the visibility of the integrated terminal
Generic error handling. McpToolResult.error() returns bare error strings with no recovery guidance. E.g., 'Failed' or 'ArgumentError: Missing path' tells LLM nothing about what to do next (retry? lookup? ask user?).
Tool 'clean_and_pub_get' violates single-responsibility principle. Combines two distinct operations (clean + pub_get). Should split into separate tools so agent can compose as needed.