TL;DR: claude-faf-mcp now reads Dart & Flutter — it knows a Flutter app from a pure-Dart CLI, and doesn't guess. The detection arrives by composition: no forked pubspec parser, just the single-source classifier from faf-cli 6.13.0. Zero-Config — one-click .mcpb, no terminal, no JSON config.
It Knows the Difference
A Dart project isn't automatically a Flutter project. The old behaviour over-read every pubspec.yaml as Flutter. v5.10.0 reads the content and tells them apart:
| Project | What FAF sees |
|---|---|
| A Flutter app | Flutter — with state (Riverpod/Bloc) and routing detected |
| A pure-Dart CLI | Dart — not mis-flagged as Flutter |
| A Dart MCP server | surfaces api_type: MCP |
| A Dart backend | surfaces the backend framework (Serverpod / Dart Frog / Shelf) |
Sourced or honestly empty — never guessed.
By Composition, Not a Fork
This is the payoff of The Sourced Edition. claude-faf-mcp doesn't carry its own detector — it composes faf-cli's Turbo-Cat. So when faf-cli 6.13.0 shipped a content-aware, pubspec-driven Dart classifier, claude-faf-mcp got it by construction. No forked parser to drift. One classifier, one source of truth, every surface.
faf-cli → Turbo-Cat (the one classifier)
↑ composed by
claude-faf-mcp grok-faf-mcp gemini-faf-mcp The fix that ships in this release is the same fix everywhere FAF detects a stack — because there's only one place it lives.
Zero-Config
Two words, because they're true: one-click .mcpb, no terminal, no JSON config. Double-click, and 35 tools are live in 10 seconds. Your project context is just there — every session.
Try It
npm install -g claude-faf-mcp The Numbers
- v5.10.0 — Released June 17, 2026
- 572 tests — 26 suites, 0 fail (+5 Dart cases)
- 35 MCP tools — unchanged (Dart is a composition change)
- 100% 🏆 — Trophy AI-readiness score
- 0 vulnerabilities — npm audit clean
- faf-cli ^6.13.0 — the composed classifier
