본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 24. 19:31

yfedoseev/fossil-mcp

요약

바이브 코딩(vibe coding) 시대에 발생하는 데드 코드, 중복 로직, 스캐폴딩 아티팩트 등의 문제를 해결하기 위한 정적 분석 도구인 fossil-mcp를 소개합니다. AI 보조 코딩 과정에서 발생하는 구조적 결함을 탐지하여 코드 품질을 유지하도록 돕습니다.

핵심 포인트

  • AI 코딩 시 발생하는 데드 코드 및 미사용 함수 누적 문제 해결
  • 컨텍스트 제한으로 인한 구조적 코드 중복 탐지
  • AI 에이전트가 남기는 TODO, Phase 마커 등 스캐폴딩 아티팩트 정리
  • 16개 언어를 지원하는 정적 분석 기반의 코드 품질 관리

바이브 코딩 (vibe coding) 시대를 위한 코드 품질 툴킷.

16개 언어에 걸쳐 바이브 코딩 (vibe coding)이 남기는 혼란 — 데드 코드 (dead code), 중복 로직 (duplicated logic), 스캐폴딩 아티팩트 (scaffolding artifacts), 그리고 연결되지 않은 함수들 — 을 찾아내는 정적 분석 (Static analysis) 도구입니다.

AI 보조 코딩 (AI-assisted coding)은 괜찮습니다. 당신이 코드를 리뷰하고, 아키텍처를 이해하며, 통제권을 유지하면 됩니다. 바이브 코딩 (vibe coding)은 다릅니다. 당신은 원하는 것을 설명하고, AI가 이를 작성하며, 당신은 모든 줄을 읽지 않고 바로 배포합니다. Claude Code, Cursor, GitHub Copilot, Windsurf와 같은 도구들은 이러한 워크플로우를 빠르고 생산적으로 만듭니다. 하지만 며칠, 몇 주가 지나면서 바이브 코딩 (vibe coding)으로 작성된 프로젝트에는 기존의 린터 (linters)가 잡아내지 못하는 특정한 종류의 문제들이 쌓이게 됩니다:

데드 코드 (Dead code)가 빠르게 쌓입니다. AI가 함수를 리팩터링 (refactor)할 때, 새로운 버전을 작성하지만 기존 버전을 삭제하는 것은 종종 잊어버립니다. 당신은 차이점 (diff)을 한 줄씩 읽지 않았기 때문에 이를 알아차리지 못합니다. 여러 세션에 걸쳐 사용되지 않는 함수, 도달할 수 없는 분기 (unreachable branches), 그리고 고립된 유틸리티 (orphaned utilities)들이 쌓여갑니다. 코드베이스는 커지지만 아무것도 정리되지 않습니다. METR 연구에 따르면 개발자들은 AI 출력물을 확인하고 디버깅 (debugging)하는 데 상당한 시간을 소비합니다. 데드 코드 (Dead code)는 이 과정을 기하급수적으로 더 어렵게 만듭니다.

중복 (Duplication)이 조용히 퍼집니다. 각 AI 세션은 제한된 컨텍스트 윈도우 (context window)를 가집니다. AI는 이미 다른 곳에 존재하는 유틸리티 함수를 생성하거나, 세 파일 떨어진 곳에서 약간 다른 구현 방식으로 동일한 문제를 해결합니다. 당신은 기능을 요청했고, 그것이 작동하니 다음 단계로 넘어갑니다. 전통적인 중복 탐지는 복사-붙여넣기 (copy-paste)에 집중하지만, 바이브 코딩 (vibe coding)의 중복은 구조적입니다: 유사한 로직, 다른 이름, 모듈 전반에 흩어져 있는 형태를 띱니다.

// Phase 1, // TODO, // Step 2 — 어디에나 존재합니다. AI 에이전트 (AI agents)는 단계별로 작업합니다. 이들은 일시적이었어야 할 스캐폴딩 마커 (scaffolding markers)를 남깁니다:

// Phase 1: Setup

, // TODO: implement error handling

, pass 또는 todo!()가 포함된 플레이스홀더 (placeholder) 함수 본문

, 그리고 process_data_v2와 같은 단계별 명명 규칙 등이 그 예입니다.

바이브 코딩 (vibe coding)에서는 아무도 이를 정리하기 위해 되돌아가지 않습니다. 그것들은 영구적인 구성 요소가 됩니다. 아무도 호출하지 않는 함수들이 존재하게 됩니다. 이것이 바이브 코딩의 특징입니다. AI가 헬퍼 함수 (helper function)를 작성하고 이를 사용한 뒤, 다음 세션에서 호출부 (caller)를 다른 방식으로 작동하도록 다시 작성하지만, 헬퍼 함수는 그대로 남습니다. 호출 그래프 (call graph)가 없다면, 당신도 AI도 어떤 함수가 코드베이스의 나머지 부분과 실제로 연결되어 있는지 알 수 없습니다. 현재의 AI 코딩 도구들은 함수가 서로를 어떻게 호출하는지 이해하는 방식이 아니라, 텍스트 검색을 통해 코드를 탐색합니다.

레포지토리 (repo)에 임시 파일들이 쌓입니다. AI 세션은 temp_, backup_, old_, phase_1_ 파일과 디렉토리를 생성합니다. 바이브 코딩에서는 매 세션이 끝난 후 파일 트리 (file tree)를 감사 (audit)하지 않습니다. 이러한 아티팩트 (artifacts)들은 커밋 (commit)을 거치며 계속 남아있게 됩니다.

Fossil MCP는 바이브 코딩된 프로젝트를 위해 특별히 제작된 정적 분석 (static analysis) 툴킷입니다. 이는 AI가 코드의 대부분을 작성할 때 쌓이는 아티팩트들을 탐지하며, 개발자를 위한 **CLI 도구 (CLI tool)**이자 AI 에이전트에게 단순한 텍스트 검색 대신 코드 그래프 (code graph)를 제공하는 **MCP 서버 (MCP server)**로서 작동합니다.

███████╗ ██████╗ ███████╗███████╗██╗██╗ () ()
██╔════╝██╔═══██╗██╔════╝██╔════╝██║██║ \ / 
█████╗ ██║ ██║███████╗███████╗██║██║ | |
...
분석 항목발견 내용바이브 코딩 (vibe coding) 문제점
데드 코드 (Dead Code)도달 불가능한 함수, 사용되지 않는 export, 고립된 메서드AI가 호출부(caller)는 다시 작성하지만 기존 헬퍼 함수를 삭제하는 것을 잊어버림 — 아무도 알아차리지 못함
코드 클론 (Code Clones)Type 1 (정확히 일치), Type 2 (이름 변경), Type 3 (구조적) 중복각 AI 세션이 코드베이스 내 다른 곳에 이미 존재하는 유틸리티를 매번 새로 만듦
스캐폴딩 (Scaffolding)Phase N / Step N 주석, TODO / FIXME 마커, 플레이스홀더(placeholder) 본문AI가 단계별로 작업하며 남긴 임시 마커들이 전혀 정리되지 않은 채 남겨짐
임시 파일 (Temp Files)temp_*, backup_*, old_*, phase_* 파일 및 디렉토리파일 트리를 아무도 감사(audit)하지 않기 때문에 지속적으로 남게 되는 세션 결과물
코드 그래프 (Code Graph)임의의 두 함수 간 경로 추적, 영향 범위(blast radius) 분석, 호출 그래프(call graph) 순회AI 도구들은 텍스트 검색으로 코드를 탐색함 — Fossil은 함수들이 어떻게 연결되는지, 하나를 변경했을 때 무엇이 깨지는지를 추적할 수 있는 그래프를 제공함

바이브 코딩 (vibe coding)을 위해 특화 설계되었습니다. 일반적인 린터(linter)가 아닙니다. AI가 대부분의 코드를 작성하고 인간의 리뷰는 줄어들 때 축적되는 혼란을 구체적으로 타겟팅합니다.

Grep이 아닌 그래프(Graph) 방식입니다. AI 코딩 도구들은 텍스트를 검색하여 코드를 탐색합니다. Fossil은 호출 그래프(call graph)를 구축하여, 에이전트가 모든 파일을 읽지 않고도 함수 간의 연결성을 추적하고, 리팩토링 전 영향 범위(blast radius)를 파악하며, 막다른 길을 발견할 수 있게 합니다.

MCP 네이티브(MCP-native). MCP 서버로 실행되므로 AI 에이전트가 개발 과정 중에 자신의 출력물을 스스로 점검할 수 있습니다.

토큰 절약, 비용 절감. 에이전트가 문제를 찾기 위해 파일을 반복해서 스캔하는 대신, Fossil은 단 한 번의 패스(pass)로 데드 코드, 클론, 스캐폴딩을 식별합니다. 이는 LLM 추론(inference) 횟수를 줄여 비용을 낮춰줍니다.

Rust로 구축되었습니다. 단일 바이너리로 제공되며 별도의 런타임 의존성이 없습니다. 수천 개의 파일을 단 몇 초 만에 스캔합니다.

설계 단계부터 메모리 안전성 (Memory-safe) 보장.

파일 간 분석 (Cross-file analysis).
모듈 경계를 가로질러 데드 코드 (Dead code)를 찾기 위해 임포트 (Imports), 배럴 재내보내기 (Barrel re-exports), 클래스 계층 구조 (Class hierarchies)를 분석합니다.

프레임워크 인식 (Framework-aware).
React, Next.js, Django, Spring, Axum 등을 자동으로 감지하며, 라이프사이클 메서드 (Lifecycle methods)를 데드 코드로 잘못 표시하지 않습니다.

설정 불필요 (Zero configuration).
즉시 사용 가능합니다. 설정 파일은 선택 사항입니다.

16개 언어 지원.
다국어 코드베이스 (Polyglot codebases)를 위한 단 하나의 도구입니다.

macOS / Linux:

curl -fsSL fossil-mcp.com/install.sh | sh

Windows (PowerShell):

irm fossil-mcp.com/install.ps1 | iex

운영체제 (OS)와 아키텍처 (Architecture)를 자동으로 감지하여 최신 바이너리를 다운로드하고 PATH에 추가합니다.

GitHub Releases에서 사용 중인 플랫폼에 맞는 최신 바이너리를 다운로드하세요:

# macOS (Apple Silicon)
curl -L https://github.com/yfedoseev/fossil-mcp/releases/latest/download/fossil-mcp-macos-aarch64.tar.gz | tar xz
mv fossil-mcp /usr/local/bin/
...
플랫폼 (Platform)아키텍처 (Architecture)아카이브 (Archive)
Linuxx86_64 (권장)fossil-mcp-linux-x86_64-musl
...

cargo-binstall이 설치되어 있다면, 소스 코드를 컴파일하는 대신 미리 빌드된 바이너리를 다운로드합니다:

cargo binstall fossil-mcp

cargo install fossil-mcp

이 명령은 crates.io에서 소스를 다운로드하여 로컬에서 컴파일합니다. Rust 툴체인 (Toolchain)이 필요합니다.

git clone https://github.com/yfedoseev/fossil-mcp.git
cd fossil-mcp
cargo build --release

바이너리는 ./target/release/fossil-mcp에 위치합니다.

.

fossil-mcp update

Fossil은 기본적으로 MCP 서버로 실행됩니다. 인자 없이 fossil-mcp를 실행하기만 하면 됩니다.

이를 AI 코딩 도구에 연결하세요:

Claude Code

claude mcp add fossil fossil-mcp

OpenAI Codex

Codex MCP 설정에 추가하세요:

{
"mcpServers": {
"fossil": {
...

Cursor

~/.cursor/mcp.json에 추가하세요:

{
"mcpServers": {
"fossil": {
...

또는 위의 Cursor 설치 버튼을 클릭하세요.

VS Code / VS Code Insiders

워크스페이스의 .vscode/mcp.json에 추가하세요:

{
"mcp": {
"servers": {
...

또는 위의 VS Code 설치 버튼을 클릭하세요.

Windsurf

~/.codeium/windsurf/mcp_config.json에 추가

:

{
"mcpServers": {
"fossil": {
...

Claude Desktop

claude_desktop_config.json에 추가

:

{
"mcpServers": {
"fossil": {
...

연결되면, AI 에이전트가 다음 도구들에 접근할 수 있습니다:

도구설명
scan_all프로젝트에 대해 모든 분석(데드 코드 (dead code) + 클론 (clones) + 스캐폴딩 (scaffolding))을 실행
analyze_dead_code설정 가능한 신뢰도(confidence)로 도달 불가능한 코드 탐지
detect_clones중복 코드 탐지 (Type 1/2/3 클론)
fossil_refresh파일 변경 후 증분 재분석 (빠름)
fossil_inspect임의의 함수에 대한 호출 그래프 (call graph), 데이터 흐름 (data flow), 제어 흐름 (control flow) 또는 영향 범위 (blast radius) 조사
fossil_trace두 함수 사이의 호출 경로 (call paths) 탐색 — 코드가 어떻게 연결되는지 이해
fossil_explain_finding특정 탐지 결과에 대한 풍부한 컨텍스트 확보
fossil_detect_scaffoldingAI 스캐폴딩 탐지: 단계별 주석 (phased comments), TODO, 플레이스홀더 (placeholders) 및 임시 파일

Fossil에는 네 가지 작동 모드가 있습니다:

모드호출 방법기능
Interactive (대화형)fossil-mcp (인자 없음)전체 스캔 실행 + 탐지 결과를 탐색하기 위한 대화형 REPL 오픈
CLIfossil-mcp <command>특정 분석 명령 실행
MCP Serverfossil-mcp mcp 또는 파이프 stdinAI 코딩 도구를 위한 JSON-RPC 서버
CI/CDfossil-mcp check임계값 초과 시 빌드 실패 처리

fossil-mcp 실행

인자 없이 실행하거나 (fossil-mcp scan .)

현재 디렉토리에서 데드 코드, 클론, 스캐폴딩을 스캔하고 대시보드를 보여준 뒤, 대화형 REPL로 진입합니다:

FOSSIL Scanning .
────────────────────────────────────────────────
✓ 1200 nodes analyzed, 42 unreachable
...

모든 탐색 명령은 선택적인 개수(count) 및 언어 필터(language filter)를 지원합니다: command [N] [lang]

fossil> dead 10 # 상위 10개의 데드 코드 탐지 결과
fossil> dead 20 typescript # TypeScript에서의 상위 20개 데드 코드
fossil> clones 5 rust # Rust에서의 상위 5개 클론 그룹
...

대화형 대시보드와 함께 모든 분석(데드 코드 (dead code) + 클론 (clones) + 스캐폴딩 (scaffolding))을 실행합니다.

fossil-mcp scan .
fossil-mcp scan /path/to/project --format sarif -o results.sarif
fossil-mcp scan /path/to/project --format json

데드 코드 (Dead code) 탐지만 수행합니다.

fossil-mcp dead-code .
fossil-mcp dead-code . --min-confidence high
fossil-mcp dead-code . --min-lines 10
...
플래그 (Flag)설명 (Description)
--min-confidence <LEVEL>신뢰도에 따라 필터링: low, medium, high, certain
--min-lines <N>탐지 결과에 대한 최소 코드 라인 수
--language <LANGS>언어별 필터링 (쉼표로 구분): rust,python,go
--include-tests결과에 테스트 전용 코드를 포함
--diff <BRANCH>베이스 브랜치(base branch) 대비 변경된 파일만 분석
--stats그래프 카디널리티(graph cardinality) 추정치 출력 (HyperLogLog)
--cache-dir <PATH>증분 분석 (incremental analysis)을 위한 지속성 캐시 디렉토리
--cache-stats캐시 적중률 (cache hit rate) 및 메모리 사용량 출력

클론 (Clone, 중복 코드) 탐지만 수행합니다.

fossil-mcp clones .
fossil-mcp clones . --min-lines 10
fossil-mcp clones . --similarity 0.9
...
플래그 (Flag)설명 (Description)
--min-lines <N>클론의 최소 라인 수 (기본값: 6)
--similarity <F>Type 3 클론에 대한 유사도 임계값 0.0–1.0 (기본값: 0.8)
--types <TYPES>탐지할 클론 유형: type1,type2,type3 (기본값: all)
--language <LANGS>언어별 필터링 (쉼표로 구분)

AI가 생성한 스캐폴딩 (scaffolding) 아티팩트를 탐지합니다.

fossil-mcp scaffolding .
fossil-mcp scaffolding . --language rust
fossil-mcp scaffolding . --include-todos
...
플래그 (Flag)설명 (Description)
--language <LANGS>언어별 필터링 (쉼표로 구분)
--include-todosTODO/FIXME/HACK 마커 포함 (기본적으로 제외됨)

탐지 대상: 플레이스홀더 본문 (pass, todo!(), unimplemented!()), 단계별 주석 (Phase 1, Step 2), 스캐폴딩 식별자 (scaffold_*, boilerplate_*), 디버그 출력 (debug prints), 그리고 임시 파일 (temp_*, backup_*, old_*).

CI/CD 모드 — 임계값(thresholds)을 초과할 경우 빌드를 실패 처리합니다. 자세한 내용은 CI/CD 통합(CI/CD Integration) 섹션을 참조하세요.

fossil-mcp check
fossil-mcp check --max-dead-code 10 --max-clones 5
fossil-mcp check --diff origin/main
...
플래그 (Flag)설명 (Description)
--max-dead-code <N>허용되는 최대 데드 코드 (dead code) 탐지 수
--max-clones <N>허용되는 최대 클론 (clone) 탐지 수
--max-scaffolding <N>허용되는 최대 스캐폴딩 (scaffolding) 탐지 수
--min-confidence <LEVEL>탐지 결과 산출을 위한 최소 신뢰도 (confidence)
--diff <BRANCH>베이스 브랜치(base branch) 대비 변경된 파일만 검사
--fail-on-scaffolding스캐폴딩 아티팩트(scaffolding artifacts)가 발견되면 실패 처리

오픈 소스 프로젝트 전반에 걸친 주간 AI 슬롭 (AI slop) 순위를 보여줍니다.

fossil-mcp weekly
fossil-mcp weekly --detailed

fossil-mcp를 최신 버전으로 업데이트합니다.

fossil-mcp update
fossil-mcp update --check # 설치 없이 확인만 수행

MCP 서버를 명시적으로 시작합니다 (일반적으로 파이프를 통한 표준 입력(stdin)으로 자동 감지됨).

다음 플래그들은 모든 명령에서 작동합니다:

플래그 (Flag)설명 (Description)
--format <FMT>출력 형식 (Output format): text, json, sarif (기본값: text)
-o, --output <FILE>출력을 표준 출력(stdout) 대신 파일에 기록
-q, --quiet에러 이외의 모든 출력을 억제
-v, --verbose디버그 로깅 (debug logging) 활성화
-c, --config <FILE>설정 파일 (config file) 경로
언어 (Language)확장자 (Extensions)
Python.py
...

Fossil은 설정 없이도 작동합니다. 모든 설정에는 합리적인 기본값(defaults)이 적용되어 있습니다. 동작을 커스텀해야 하는 경우, 프로젝트 루트에 fossil.toml 파일을 생성하세요:

[dead_code]
min_confidence = "high" # low, medium, high, certain
include_tests = false
...

설정은 다음 파일명들을 통해 자동으로 탐지됩니다: fossil.toml, .fossil.toml, fossil.yml, fossil.yaml, fossil.json.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0