프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Fagan

제작자: motock버전 0.9.0i★ –i–
레지스트리 이름io.github.motock/fagan

설치

개요

제작자가 쓴 설명(영어 원문)

Autonomous coding pipeline: frontier models plan and review, open-weight models write the code.

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: –
  • 전송 방식:
  • 카테고리: 개발자 도구

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 레지스트리에 입력해야 할 키가 나와 있지 않아요.

제작자가 레지스트리에 설치 정보를 올리지 않았어요. 아래 제작자의 README를 확인하세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 motock 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

개발자 도구 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 4906개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 4906개 중 91%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 4906개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Fagan, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.9.0)은 3일 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: GitHub, Desktop Commander, Cloudflare MCP

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

GitHub

제작자: github

Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

컴퓨터 또는 클라우드★ 34,245MIT4일 전 업데이트
설치

Desktop Commander

제작자: wonderwhy-er

MCP server for terminal commands, file operations, and process management

내 컴퓨터에서 실행★ 10,225MIT16일 전 업데이트
설치

Cloudflare MCP

제작자: cloudflare

Cloudflare MCP servers

클라우드에서 실행★ 4,446Apache-2.014개월 전 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

Fagan

Spend tokens on judgment, not typing.

*A real story (STE-1, PR #986) crossing the board: implemented by an open-weight model, sent back once by review, merged. 14 minutes, time-lapsed.*

Try it (macOS; Linux via Ollama or LM Studio), then see the Quickstart:

curl -fsSL https://raw.githubusercontent.com/motock/fagan/master/scripts/remote-install.sh | bash

Frontier models cost money per token and are excellent at judgment. Local models run free and are adequate at typing. This pipeline splits software engineering along exactly that line: a frontier model decomposes the work, plans it, reviews the diff, and adjudicates anything risky — while a local model writes the implementation at no marginal cost.

What makes the cheap half trustworthy is inspection. In Michael Fagan's 1976 IBM study, formal inspection found 82% of the defects in the released product — 38 per KLOC, against 8 per KLOC for unit testing. Quality lives in the gate, not in the author. So this project spends its budget on gates: TDD enforced before implementation, an independent review pass, acceptance-oracle grading, a risk-tiered overlord that stops for a human on anything irreversible, and a merge gate that re-runs the suite against the rebased branch before anything lands.

The goal is narrow and specific: enterprise-grade engineering discipline — decomposition, TDD, code review, dependency-ordered delivery — on a $20/month budget.

For detailed reference material, see REFERENCE.md.

Before you start: read Reliability & limitations below. This is an autonomous coding pipeline with real, documented failure modes — it is not a hands-off "describe a feature, get a PR" tool yet.

Platform support

Developed and run day-to-day on macOS. The core (MCP server, dashboard, Claude-backend dispatch/review, the full test suite) is plain Python and CI tests it on Ubuntu across Python 3.11–3.14 on every pull request and push, plus macOS on 3.14 on every push to master and nightly. Two pieces are macOS-only:

  • **launchd/*.plist** — the scheduler/MLX-supervisor/usage-poller are packaged as launchd jobs on macOS. On Linux, render the systemd equivalent with scripts/generate_systemd_units.sh (see Scheduler below) instead of hand-rolling init files, or run the entry points directly in a foreground terminal/tmux session.
  • MLX (PIPELINE_LOCAL_PROVIDER=mlx) — Apple Silicon only. Local dispatch works fine on Linux via Ollama or LM Studio instead (PIPELINE_LOCAL_PROVIDER=ollama / lmstudio).

Windows is untested.

Quickstart

One-line install
curl -fsSL https://raw.githubusercontent.com/motock/fagan/master/scripts/remote-install.sh | bash

This clones the repo to ~/.fagan (override the location with FAGAN_INSTALL_DIR, and the source URL with FAGAN_REPO_URL) and runs scripts/install.sh inside it -- equivalent to the manual clone-and-run steps below, minus the typing. Re-running it later updates the existing checkout (git pull --ff-only) instead of re-cloning.

Piping a remote script into bash means trusting whatever that URL serves at fetch time. If you'd rather read it first:

curl -fsSL https://raw.githubusercontent.com/motock/fagan/master/scripts/remote-install.sh -o remote-install.sh

less remote-install.sh # or open it in an editor bash remote-install.sh

Either way, cd into the install directory it reports (~/.fagan by default); it has already done steps 1–3 below, so restart Claude Code (step 5). Prefer a manual clone? Use the steps below instead.

This gets the MCP server registered and a first plan running end-to-end. A first run needs no local model at all: with nothing configured, dispatch and review fall back to the claude backend, which shells out to the Claude Code CLI. That fallback is the *starting* configuration, not the intended one — the cost split described above only happens once you deliberately route the implementation role to a local model, which is why the shipped registry ships no roles block of its own: see Provider selection & authorization below for how to make that choice when you're ready.

# 1. Clone and install the Python environment

git clone https://github.com/motock/fagan.git cd fagan scripts/install.sh # creates .venv, installs requirements.txt

2. Register the MCP server with Claude Code (adjust the path to where you cloned it)

claude mcp add -s user pipeline "$(pwd)/.venv/bin/python3" "$(pwd)/app/pipeline_mcp_server.py"

3. Copy the persona subagents and decision policy into place

(cp -n skips any file you already have — e.g. a customized code-reviewer.md —

instead of silently overwriting it; diff before removing -n if you do want the update)

mkdir -p ~/.claude/agents cp -n agents/*.md ~/.claude/agents/ cp -n overlord-policy.md ~/.claude/overlord-policy.md

4. (Optional) Install the global rules bundle for your agent CLIs

scripts/install_global_rules.py --tools=claude,codex,opencode

Opt-in: nothing is written unless --tools is passed. It writes the bundle into

~/.claude/CLAUDE.md, ~/.codex/AGENTS.md and ~/.config/opencode/AGENTS.md, copies

the rule files into the sibling fagan-rules/ directory, and backs up an existing

file as .fagan-bak- . Re-running refreshes only the fenced

block between the fagan:begin and fagan:end markers.

5. Restart Claude Code (or start a new session) so it picks up the MCP server

scripts/install.sh creates the .venv, installs requirements.txt and requirements-dashboard.txt (the dashboard's fastapi/uvicorn deps, installed on every run; a --dev install uses requirements-dev.txt, which already includes the dashboard deps), and reports on the tools the pipeline shells out to — required: git, gh, and the claude CLI; optional: ollama and docker — with graceful-degradation messaging, and is safe to re-run. It does not register the MCP server, set environment variables, or install the persona subagents — steps 2–3 above cover those. With nothing but the claude backend configured, ollama/docker being absent is expected, not an error.

From a Claude Code session in the project you want the pipeline to work on:

  1. Ask the product-analyst subagent to turn a goal into epics/stories, or hand-write a plan per the schema.
  2. mcp__pipeline__save_plan (or ingest_plan) with that plan and a repo_root pointing at the target project — not this pipeline repo.
  3. mcp__pipeline__list_ready_stories to see what's unblocked, then mcp__pipeline__dispatch_story to claim and start one.
  4. Watch progress with the dashboard: scripts/dashboard.sh start, then open http://localhost:8000.
  5. For unattended operation, run the scheduler so ready stories advance without you calling advance_pipeline by hand: .venv/bin/python3 -m pipeline.scheduler_daemon (foreground, or under launchd/systemd/tmux — see Scheduler below).

Start with PIPELINE_AUTONOMY=dry-run (plans and logs only, nothing is dispatched or merged) until you've watched one plan run and trust the gates — see Autonomy levels.

Only using the `claude` backend? The PIPELINE_LOCAL_* and PIPELINE_BACKEND_*=ollama/lmstudio/mlx variables, and Ollama/MLX/LM Studio setup, only matter if you opt a role into local-model dispatch — but provider selection itself is still a required setup step (the shipped registry routes nothing; see Provider selection & authorization below), and even the claude path needs two credentials before the first dispatch: gh auth login (the pipeline opens and merges PRs through the GitHub CLI) and the Claude Code CLI's own login. See Minimal configuration for the handful of variables actually worth setting on day one, versus the ~100 that exist purely for tuning.

Provider selection & authorization

Provider selection is a required setup step. The shipped model_registry.json deliberately declares which models exist per provider but ships no `roles` routing: this project decouples from any single provider, so the operator chooses. There are two supported ways to select a provider per role, checked in this order by resolve_role:

  1. Plan role config — a plan's per-role provider/model beats everything below.
  2. A `roles` block in a registry file — the single source of truth for role routing; see below.
  3. `PIPELINE_BACKEND_ ` environment variables — consulted only when the registry has no entry for the role (the empty-state path, so a fresh clone still boots); e.g. PIPELINE_BACKEND_DISPATCH=ollama opts the dispatch role into Ollama.
  4. The caller's own fallback — for dispatch/review this is the claude backend.

For an interactive alternative to editing registry JSON by hand, run the picker: .venv/bin/python scripts/choose_providers.py. It walks through all nine roles one at a time, showing each role's current provider/model and where that setting came from, and lets you switch it by typing an option number — each of the nine roles is configured independently, and every change is validated against the registry before it is written. It is safe to re-run any time: re-running just re-reads the current routing, and pressing Enter keeps a role's existing setting.

The same two registry files work for both selection styles:

  • `PIPELINE_MODEL_REGISTRY_PATH` points the pipeline at any registry JSON you like.
  • `model_registry.local.json` (repo root) is the convention for a personal registry: it is gitignored, so your per-role routing stays out of the repo. Point PIPELINE_MODEL_REGISTRY_PATH at it, or copy it over model_registry.json locally if you prefer not to set the variable.

A roles block names a provider and a *friendly* model name per role; the friendly name must exist under that provider's models in the same file, and the concrete tag is resolved from there. A typo raises an error rather than silently falling back.

Authorization matrix. Selecting a provider also selects which credentials you must establish first — scripts/install_checks.py probes these and reports unauthorized (remedy: a login, not an install) where it can:

Provider / toolCredential neededHow to establish it
git / ghGitHub auth (the pipeline opens and merges PRs through gh)gh auth login
claude backendClaude Code CLI's own loginclaude auth login (check: claude auth status)
any :cloud ollama tagAn ollama.com account, signed into the local daemonollama signin
litellm backendPer-vendor API keysSee docs/specs/LITELLM_PROVIDER.md
on-device ollama / lmstudio / mlx tagNothing extra—

On the :cloud rows: those calls are proxied through https://ollama.com by the local ollama daemon, which sends its own credential — the pipeline sends no credential of its own. :cloud tags ar

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기