TL;DR: A Google Developer Expert in Dart and Flutter searched our server's source for "Flutter", found nothing, and concluded it didn't understand Dart projects. He was right about the gap — and it's now closed. gemini-faf-mcp now understands Dart and Flutter projects.

The Grep

It started on r/google_antigravity. A Dart and Flutter Google Developer Expert — the kind of engineer who reads the source before he trusts a tool — saw gemini-faf-mcp in a showcase and did exactly that. He grepped it for Flutter. Nothing. pubspec? Nothing. Verdict: it knows nothing about Dart or Flutter.

He wasn't wrong. At that moment, you could point gemini-faf-mcp at a Flutter app and the language slot came back unset — it couldn't tell a Flutter app from a Dart CLI from a plain package. A real gap, found by a real expert, in public.

Two Things Were True

First: the gap was real, and we owned it. No spin.

Second: the grep was looking in the wrong place — and that part is worth explaining. FAF doesn't carry a hardcoded table of frameworks to match your repo against. It reads your project and writes down what's actually there. So searching the server's source for "Flutter" was never going to find a verdict — the verdict comes from your pubspec.yaml, at runtime. Run it, don't grep it.

And there's a deeper reason "Flutter" wasn't in the server at all: the detection doesn't live in the server. It lives in the SDK every FAF server is built on — one detector, composed by all of them, not five hand-maintained copies drifting apart. That's why the grep came up empty, and it's exactly the design that let us close the gap everywhere at once.

The Receipt

So we shipped it.

Detects Dart/Flutter from a pubspec.yaml — Flutter app vs package · Dart MCP / backend / CLI / library — by composing faf-python-sdk's detector, the shared engine, not a fork. Zero-Config, 12 exact tools.

The detector ships in faf-python-sdk 1.2.0, and it isn't a Python rewrite that drifts from the CLI — it's parity-tested byte-for-byte against faf-cli's engine on 20 shared fixtures. Same input, same answer, in both languages, proven by test. gemini-faf-mcp 2.5.0 composes it. And pure Dart stays Dart — it won't guess Flutter just because it saw a pubspec.

Try It

Point it at any Dart or Flutter project and run faf_auto — the .faf comes back knowing what it's looking at:

uvx gemini-faf-mcp
# or: pip3 install gemini-faf-mcp

The Receipts

  • gemini-faf-mcp 2.5.0 — The Dart Edition, live on PyPI
  • faf-python-sdk 1.2.0 — the detector, live on PyPI
  • 20 shared fixtures — faf-cli ↔ SDK parity, proven by test, not by eye
  • 12 tools — unchanged; Dart lives inside an existing tool, not a new one
  • 100% Trophy — both packages
  • 1 expert · 1 public grep · 1 real gap — closed