TL;DR: Run faf git on any Go, Rust, or Python repo and get the right project type — MCP server, CLI, service, or library — detected from native manifests (go.mod, Cargo.toml, pyproject.toml). No more type: library for everything that isn't JavaScript.

The Problem

Run faf git on github/github-mcp-server — one of the most-watched MCP repos on GitHub. Before v6.1.0:

v6.0 22% type: library
v6.1.0 41% type: mcp
faf git 60% README scan
faf go 🏆 100% one sentence

Same repo. Zero prior context. The full journey in one session — detection fix, README enrichment, then a single sentence from a human to complete the picture.

The root cause: FAF's dependency signal matching only checked package.json. Go, Rust, and Python have their own manifest formats — and FAF was ignoring them. Everything that wasn't JavaScript fell through to the default: type: library. That's wrong for almost every Go and Rust project, and wrong for most Python projects.

What's New

Go — go.mod parsing

FAF now reads go.mod for dependency matching. MCP detection, CLI detection, and service fallback all work:

  • github.com/modelcontextprotocol/go-sdktype: mcp (covers github/github-mcp-server)
  • github.com/mark3labs/mcp-gotype: mcp
  • github.com/spf13/cobra or cmd/ + main.gotype: cli
  • Go service with no CLI markers → type: service

Rust — Cargo.toml binary detection

Rust has three distinct project shapes. FAF now distinguishes them:

  • [[bin]] section or categories = ["command-line-utilities"]type: cli (covers ripgrep)
  • src/main.rs + clap / argh / lexopttype: cli
  • src/main.rs without CLI markers → type: service
  • src/lib.rs only → type: library (correct — it's a crate)

Python — pyproject.toml intent detection

  • [project.scripts] / console_scriptstype: cli
  • setup.py present → type: library
  • app.py / main.pytype: service
  • FastAPI / Django / Flask detected → type: backend (unchanged)

Better default

The fallback for unrecognised projects changed from library to service. Libraries are a specific, deliberate choice — they expose an API for other packages to import. Most projects that don't match a known pattern are services or tools, not libraries.

Live Test: github/github-mcp-server

This is a real test run against GitHub's own MCP server — no project.faf, no CLAUDE.md, rich README:

faf git https://github.com/github/github-mcp-server
type: mcp
framework: mcp-go
main_language: Go
backend: MCP Go
api_type: MCP (stdio/SSE)
hosting: Docker
cicd: GitHub Actions
score: 60% — with README enrichment (v6.2.0)

9 slots filled automatically — including project.goal from the README. The remaining 6 are human_context. Run faf go: one sentence in, sign off, 🏆.

WJTTC — TIER 4 NATIVE

12 new championship tests covering every detection path. They run on every CI push:

#TestExpected
#28Go + mark3labs/mcp-gomcp
#29Go + modelcontextprotocol/go-sdkmcp
#30Go + Cobracli
#31Go cmd/ + main.gocli
#32Go service (no CLI markers)service
#33Rust [[bin]]cli
#34Rust clap + src/main.rscli
#35Rust service (main, no clap)service
#36Rust lib onlylibrary
#37Python console_scriptscli
#38Python main.pyservice
#39Python setup.pylibrary
v6.2.0 — The One Sentence Edition

One Sentence In. Review. Sign Off.

faf go was a slot-by-slot form. Now it's an interview with a single opener:

★ In one sentence, what is this project designed to do?

You answer. The AI thinks. It infers who, what, why, where, when, how from your sentence and the detected stack. You see all 6Ws and sign off. One correction if needed. Done.

On github/github-mcp-server, the conversation went:

★ opener its so devs can have access to MCP tools for Agents work
who → developers
what → its so devs can have access to MCP tools for Agents work
where → Docker (from stack)
how → Docker, MCP (stdio/SSE) (from stack)
why → AI agents need native access to GitHub without manual workflows (corrected)
when → within next 2-3 weeks (corrected)
score: 🏆 100%

What shipped in v6.2.0

  • ★ Opener — one question replaces the entire 6Ws interview
  • AI thinking step — Claude interprets your answer into structured slots (with ANTHROPIC_API_KEY)
  • Keyword extraction — detects who from "devs", "engineers", "teams" without API key
  • 6Ws sign-off loop — review, correct by slot name, confirm
  • faf git --keep — keeps cloned repo in cwd for follow-up faf go
  • README enrichmentfaf git now extracts goal, detects build tool, sets slotignored for MCP
faf-cli v6.2.0 — pubpro checklist showing all green

Try It

npm install -g faf-cli@6.2.0

Or zero-install:

bunx faf git https://github.com/github/github-mcp-server --keep && cd github-mcp-server && bunx faf go

The Numbers

  • v6.1.0 + v6.2.0 — Both released April 14, 2026
  • 402/402 — Tests passing across 44 files
  • 12 new — WJTTC TIER 4 NATIVE tests (#28–#39)
  • 22% → 🏆 100% — github/github-mcp-server, one session
  • 51,500+ — Downloads across npm, PyPI, crates.io