mcpField
F
Fossil Mcp

Fossil Mcp

ローカル
github.com/yfedoseev開発ツール6929 週間前に更新

Fossil Mcp について

Fossil Mcpは、AIを使ったコーディング向けの静的解析ツールで、コマンドラインとMCPサーバーの両方で利用できます。呼び出しグラフを構築し、16言語のデッドコード、重複ロジック、足場コードを検出します。

主な機能

  1. 01到達不能コードと未使用エクスポートの検出
  2. 02完全・改名・構造的なクローンの検出
  3. 03TODO、プレースホルダー、一時ファイルの特定
  4. 04呼び出しグラフの構築と関数経路の追跡
  5. 0516言語のコード解析
  6. 06インクリメンタル更新とCIチェック

活用シーン

  1. 01AIによるリファクタリング後の未使用関数の整理
  2. 02ファイルをまたぐ重複実装の特定
  3. 03関数変更による影響範囲の確認
  4. 04CIでのコード品質しきい値の検査

MCP 対応

MCPサーバーとして、AIコーディングツールにスキャン、デッドコード・クローン検出、足場コード確認、呼び出しグラフの調査と追跡ツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Fossil MCP

バイブコーディング時代のコード品質ツールキット。

バイブコーディングが残していく乱れ — デッドコード、重複ロジック、足場(スキャフォールディング)の名残、接続されていない関数 — を 16 言語にわたって発見する静的解析。

fossil-mcp.com

CI Crates.io License: MIT OR Apache-2.0


問題

AI 支援コーディングは問題ありません — コードをレビューし、アーキテクチャを理解し、主導権を保ちます。バイブコーディングは違います。 欲しいものを説明すると AI が書き、あなたはすべての行を読むことなく出荷します。Claude Code、Cursor、GitHub Copilot、Windsurf といったツールは、このワークフローを高速で生産的にします。しかし何日も何週間も経つうちに、バイブコーディングされたプロジェクトには、従来のリンターでは捕捉できない特定の種類の問題が蓄積されます。

デッドコードは急速に積み上がります。 AI が関数をリファクタリングするとき、新しいバージョンを書きますが、古いものを削除するのをしばしば忘れます。diff を 1 行ずつ読んでいないので気づきません。複数のセッションを経て、未使用の関数、到達不能な分岐、孤立したユーティリティが積み上がります — コードベースは成長するのに、何も刈り込まれません。METR の研究では、開発者が AI の出力の確認とデバッグにかなりの時間を費やしていることが分かりました。デッドコードはこれを指数関数的に難しくします。

重複は静かに広がります。 AI の各セッションには限られたコンテキストウィンドウがあります。すでに別の場所に存在するユーティリティ関数を生成したり、同じ問題を 3 つ先のファイルでわずかに異なる実装で解決したりします。機能を依頼し、それが動作するので、次に進みます。従来の重複検出はコピー&ペーストに焦点を当てています — バイブコーディングの重複は構造的です。似たロジック、異なる名前、モジュール全体に散在しています。

// Phase 1、// TODO、// Step 2 — どこにでも。 AI エージェントはフェーズ単位で作業します。一時的なはずだった足場のマーカーを残します。// Phase 1: Setup、// TODO: implement error handling、pass や todo!() を使ったプレースホルダーの関数本体、process_data_v2 のようなフェーズ付きの命名などです。バイブコーディングでは、誰もこれらを片付けに戻りません。それらは恒久的なものになります。

何からも呼ばれない関数が存在します。 これがバイブコーディングの特徴です。AI はヘルパー関数を書き、それを使い、後のセッションで呼び出し側を別のアプローチを使うように書き換えます — しかしヘルパーは残ります。コールグラフがなければ、あなたも AI も、どの関数が実際にコードベースの残りの部分と接続されているかを判断できません。現在の AI コーディングツールは、関数が互いをどう呼び出すかを理解するのではなく、テキスト検索でコードをナビゲートします。

一時ファイルがリポジトリに蓄積します。 AI セッションは temp_、backup_、old_、phase_1_ というファイルやディレクトリを作成します。バイブコーディングでは、各セッションの後にファイルツリーを監査したりしません。これらの成果物はコミットをまたいで残り続けます。

解決策

Fossil MCP は、バイブコーディングされたプロジェクトのために専用に作られた静的解析ツールキットです。AI がコードの大部分を書くときに蓄積される成果物を検出します — そして開発者向けの CLI ツールとしても、AI エージェントに単なるテキスト検索ではなくコードグラフを与える MCP サーバーとしても動作します。

  ███████╗ ██████╗ ███████╗███████╗██╗██╗           ()    ()
  ██╔════╝██╔═══██╗██╔════╝██╔════╝██║██║            \    /
  █████╗  ██║   ██║███████╗███████╗██║██║             |  |
  ██╔══╝  ██║   ██║╚════██║╚════██║██║██║             |  |
  ██║     ╚██████╔╝███████║███████║██║███████╗       /    \
  ╚═╝      ╚═════╝ ╚══════╝╚══════╝╚═╝╚══════╝      ()    ()
  Dig up dead code. Unearth clones. Expose scaffolding.
Fossil が検出するもの
分析検出する内容バイブコーディングの問題
デッドコード到達不可能な関数、未使用のエクスポート、孤立したメソッドAI が呼び出し元を書き換えるが古いヘルパーの削除を忘れる — 誰も気づかない
コードクローンタイプ 1 (完全一致)、タイプ 2 (名前変更)、タイプ 3 (構造的) の重複AI の各セッションが、コードベースの他の場所にすでに存在するユーティリティを再発明する
スキャフォールディングPhase N / Step N コメント、TODO/FIXME マーカー、プレースホルダーの本体AI はフェーズ単位で作業し、決して整理されない一時的なマーカーを残す
一時ファイルtemp_*、backup_*、old_*、phase_* のファイルやディレクトリファイルツリーを誰も監査しないため残り続けるセッションの成果物
コードグラフ任意の 2 つの関数間のパスの追跡、影響範囲の分析、コールグラフの走査AI ツールはテキスト検索でナビゲートする — Fossil は関数がどのようにつながっているか、1 つを変更すると何が壊れるかを追跡できるグラフを提供します
Fossil が他と異なる点
  • バイブコーディングのために専用設計。 汎用リンターではありません — AI がコードの大半を書き、人間がレビューする割合が減ったときに蓄積する乱雑さを特に対象としています。
  • grep ではなくグラフ。 AI コーディングツールはテキストを検索してコードをナビゲートします。Fossil はコールグラフを構築し、エージェントが関数のつながりを追跡し、リファクタリング前に影響範囲を見つけ、行き止まりを発見できるようにします — すべてのファイルを読むことなく。
  • MCP ネイティブ。 MCP サーバーとして動作するため、AI エージェントが開発中に自身の出力をセルフチェックできます。
  • トークンを節約し、コストも節約。 エージェントが問題を見つけるために何度もファイルをスキャンする代わりに、Fossil はデッドコード、クローン、スキャフォールディングを 1 回のパスで特定します — LLM 推論の回数が減り、コストも下がります。
  • Rust 製。 単一バイナリで、ランタイム依存関係はありません。数千のファイルを数秒でスキャンします。設計上メモリセーフです。
  • クロスファイル分析。 インポート、バレル再エクスポート、クラス階層を解決し、モジュール境界を越えてデッドコードを見つけます。
  • フレームワーク対応。 React、Next.js、Django、Spring、Axum などを自動検出します — ライフサイクルメソッドをデッドコードとして誤検出しません。
  • 設定不要。 すぐに動作します。設定ファイルは任意です。
  • 16 言語対応。 多言語コードベースに対応する 1 つのツールです。

インストール

クイックインストール (推奨)

macOS / Linux:

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

Windows (PowerShell):

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

OS とアーキテクチャを自動検出し、最新のバイナリをダウンロードして 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/

# macOS (Intel)
curl -L https://github.com/yfedoseev/fossil-mcp/releases/latest/download/fossil-mcp-macos-x86_64.tar.gz | tar xz
mv fossil-mcp /usr/local/bin/

# Linux (x86_64)
curl -L https://github.com/yfedoseev/fossil-mcp/releases/latest/download/fossil-mcp-linux-x86_64-musl.tar.gz | tar xz
mv fossil-mcp ~/.local/bin/
プラットフォームアーキテクチャアーカイブ
Linuxx86_64 (推奨)fossil-mcp-linux-x86_64-musl
Linuxx86_64 (glibc)fossil-mcp-linux-x86_64
LinuxARM64fossil-mcp-linux-aarch64
macOSIntelfossil-mcp-macos-x86_64
macOSApple Siliconfossil-mcp-macos-aarch64
Windowsx86_64fossil-mcp-windows-x86_64
cargo-binstall

cargo-binstall をお持ちであれば、ソースからコンパイルする代わりにビルド済みバイナリをダウンロードします:

cargo binstall fossil-mcp
crates.io から
cargo install fossil-mcp

crates.io からソースをダウンロードし、ローカルでコンパイルします。Rust ツールチェーンが必要です。

ソースから
git clone https://github.com/yfedoseev/fossil-mcp.git
cd fossil-mcp
cargo build --release

バイナリは ./target/release/fossil-mcp にあります。

更新
fossil-mcp update

MCP サーバーのセットアップ

VS Code にインストール VS Code Insiders にインストール Cursor にインストール

Fossil はデフォルトで MCP サーバーとして動作します — 引数なしで fossil-mcp を実行するだけです。お使いの AI コーディングツールに接続してください:

Claude Code
claude mcp add fossil fossil-mcp
OpenAI Codex

Codex の MCP 設定に追加します:

{
  "mcpServers": {
    "fossil": {
      "command": "fossil-mcp"
    }
  }
}
Cursor

~/.cursor/mcp.json に追加します:

{
  "mcpServers": {
    "fossil": {
      "command": "fossil-mcp"
    }
  }
}

または、上記の Cursor インストールボタンをクリックします。

VS Code / VS Code Insiders

ワークスペースの .vscode/mcp.json に追加します:

{
  "mcp": {
    "servers": {
      "fossil": {
        "command": "fossil-mcp"
      }
    }
  }
}

または、上記の VS Code インストールボタンをクリックします。

Windsurf

~/.codeium/windsurf/mcp_config.json に追加します:

{
  "mcpServers": {
    "fossil": {
      "command": "fossil-mcp"
    }
  }
}
Claude Desktop

claude_desktop_config.json に追加します:

{
  "mcpServers": {
    "fossil": {
      "command": "fossil-mcp"
    }
  }
}
MCP ツール

接続すると、AI エージェントは以下のツールを利用できるようになります:

ツール説明
scan_allプロジェクトに対してすべての分析(デッドコード + クローン + スキャフォールディング)を実行します
analyze_dead_code設定可能な信頼度で到達不可能なコードを検出します
detect_clones重複コード(タイプ 1/2/3 クローン)を検出します
fossil_refreshファイル変更後の増分再分析(高速)
fossil_inspect任意の関数についてコールグラフ、データフロー、制御フロー、またはブラスト半径を検査します
fossil_trace2 つの関数間の呼び出しパスを検出します — コードがどのように接続されているかを理解できます
fossil_explain_finding特定の検出結果について豊富なコンテキストを取得します
fossil_detect_scaffoldingAI スキャフォールディング(段階的なコメント、TODO、プレースホルダー、一時ファイル)を検出します

CLI の使用方法

モード

Fossil には 4 つの動作モードがあります:

モード起動方法動作内容
インタラクティブfossil-mcp(引数なし)フルスキャンを実行し、検出結果を調査するためのインタラクティブ REPL を開きます
CLIfossil-mcp <command>特定の分析コマンドを実行します
MCP サーバーfossil-mcp mcp または標準入力経由のパイプAI コーディングツール向けの JSON-RPC サーバー
CI/CDfossil-mcp checkしきい値を超えた場合にビルドを失敗させます
インタラクティブモード

引数なしで fossil-mcp を実行する(または fossil-mcp scan . を実行する)と、現在のディレクトリをスキャンしてデッドコード、クローン、スキャフォールディングを検出し、ダッシュボードを表示した後、インタラクティブ REPL に入ります:

  FOSSIL Scanning .
  ────────────────────────────────────────────────
   ✓  1200 nodes analyzed, 42 unreachable
   ✓  380 files analyzed, 8 clone groups
   ✓  3 scaffolding artifacts

  ══════════════════════════════════════════════════
  RESULTS  53  findings across 28 files
  ══════════════════════════════════════════════════

  ▐ Dead Code     42   ██████████████░░
  ▐ Clones         8   ██░░░░░░░░░░░░░░    120 duplicated lines
  ▐ Scaffolding    3   █░░░░░░░░░░░░░░░

  fossil>
REPL コマンド

すべての探索コマンドは、オプションの件数と言語フィルターをサポートしています:command [N] [lang]

fossil> dead 10                  # Top 10 dead code findings
fossil> dead 20 typescript       # Top 20 dead code in TypeScript
fossil> clones 5 rust            # Top 5 clone groups in Rust
fossil> scaffolding              # All scaffolding findings
fossil> scaffolding 10 python    # Top 10 scaffolding in Python
fossil> hotspots                 # Files with most findings
fossil> hotspots 10 go           # Top 10 hotspot files in Go
fossil> file auth.ts             # All findings in a specific file
fossil> langs                    # Language breakdown
fossil> export sarif             # Export full SARIF report
fossil> summary                  # Re-show dashboard
fossil> q                        # Quit
コマンド
fossil-mcp scan [path]

インタラクティブダッシュボードを使用して、すべての分析(デッドコード + クローン + スキャフォールディング)を実行します。

fossil-mcp scan .
fossil-mcp scan /path/to/project --format sarif -o results.sarif
fossil-mcp scan /path/to/project --format json
fossil-mcp dead-code [path]

デッドコード検出のみを実行します。

fossil-mcp dead-code .
fossil-mcp dead-code . --min-confidence high
fossil-mcp dead-code . --min-lines 10
fossil-mcp dead-code . --language rust,python
fossil-mcp dead-code . --diff main                  # Only changed files
fossil-mcp dead-code . --stats                      # Show graph statistics
fossil-mcp dead-code . --cache-dir .fossil-cache     # Persistent cache
fossil-mcp dead-code . --cache-stats                 # Cache hit rate
フラグ説明
--min-confidence <LEVEL>信頼度でフィルター:low、medium、high、certain
--min-lines <N>検出結果に必要な最小コード行数
--language <LANGS>言語でフィルター(カンマ区切り):rust,python,go
--include-testsテスト専用のコードを結果に含めます
--diff <BRANCH>ベースブランチと比較して変更されたファイルのみを分析します
--statsグラフの基数推定値(HyperLogLog)を表示します
--cache-dir <PATH>増分分析用の永続キャッシュディレクトリ
--cache-statsキャッシュヒット率とメモリ使用量を表示します
fossil-mcp clones [path]

クローン(重複コード)検出のみを行います。

fossil-mcp clones .
fossil-mcp clones . --min-lines 10
fossil-mcp clones . --similarity 0.9
fossil-mcp clones . --language typescript
fossil-mcp clones . --types type1,type2
フラグ説明
--min-lines <N>クローンと判定する最小行数(デフォルト: 6)
--similarity <F>Type 3 クローンの類似度しきい値 0.0~1.0(デフォルト: 0.8)
--types <TYPES>検出するクローンタイプ: type1,type2,type3(デフォルト: すべて)
--language <LANGS>言語でフィルタリング(カンマ区切り)
fossil-mcp scaffolding [path]

AI が生成した足場(スキャフォールディング)の痕跡を検出します。

fossil-mcp scaffolding .
fossil-mcp scaffolding . --language rust
fossil-mcp scaffolding . --include-todos
fossil-mcp scaffolding . --format json
フラグ説明
--language <LANGS>言語でフィルタリング(カンマ区切り)
--include-todosTODO/FIXME/HACK マーカーを含める(デフォルトでは除外)

検出対象: プレースホルダーの本体(pass、todo!()、unimplemented!())、段階的なコメント(Phase 1、Step 2)、スキャフォールディングの識別子(scaffold_*、boilerplate_*)、デバッグ出力、一時ファイル(temp_*、backup_*、old_*)。

fossil-mcp check [path]

CI/CD モード — しきい値を超えるとビルドを失敗させます。詳細は CI/CD 統合 を参照してください。

fossil-mcp check
fossil-mcp check --max-dead-code 10 --max-clones 5
fossil-mcp check --diff origin/main
fossil-mcp check --diff origin/main --format sarif
fossil-mcp check --fail-on-scaffolding
フラグ説明
--max-dead-code <N>許容されるデッドコード検出の最大数
--max-clones <N>許容されるクローン検出の最大数
--max-scaffolding <N>許容されるスキャフォールディング検出の最大数
--min-confidence <LEVEL>検出をカウントする最小信頼度
--diff <BRANCH>ベースブランチと比較して変更されたファイルのみをチェック
--fail-on-scaffoldingスキャフォールディングの痕跡が1つでも見つかった場合に失敗
fossil-mcp weekly

オープンソースプロジェクト全体の週間 AI スロップランキングを表示します。

fossil-mcp weekly
fossil-mcp weekly --detailed
fossil-mcp update

fossil-mcp を最新バージョンに更新します。

fossil-mcp update
fossil-mcp update --check    # Check without installing
fossil-mcp mcp

MCP サーバーを明示的に起動します(通常はパイプされた stdin を介して自動検出されます)。

グローバルフラグ

これらのフラグはすべてのコマンドで使用できます:

フラグ説明
--format <FMT>出力形式: text、json、sarif(デフォルト: text)
-o, --output <FILE>出力を stdout ではなくファイルに書き込む
-q, --quietエラー以外のすべての出力を抑制
-v, --verboseデバッグログを有効化
-c, --config <FILE>設定ファイルへのパス

対応言語

言語拡張子
Python.py
JavaScript.js, .jsx, .mjs
TypeScript.ts, .tsx
Rust.rs
Go.go
Java.java
C#.cs
C/C++.c, .h, .cpp, .cc, .cxx, .hpp
Ruby.rb
PHP.php
Swift.swift
Kotlin.kt
Scala.scala
Bash.sh, .bash
R.r, .R

設定(任意)

Fossil はゼロ設定で動作します。すべての設定には適切なデフォルト値があります。動作をカスタマイズする必要がある場合は、プロジェクトルートに fossil.toml を作成してください:

[dead_code]
min_confidence = "high"       # low, medium, high, certain
include_tests = false
exclude_patterns = ["generated/**", "vendor/**"]

[clones]
min_lines = 6
similarity_threshold = 0.8

[entry_points]
# Mark additional functions as entry points (won't be flagged as dead)
functions = ["custom_handler", "my_entry"]
# Additional entry point attributes/decorators
attributes = ["MyFramework::route"]
# Framework presets (auto-detected by default)
presets = ["axum", "react"]
auto_detect_presets = true

設定は次のファイル名から自動検出されます: fossil.toml、.fossil.toml、fossil.yml、fossil.yaml、fossil.json。

環境変数は設定ファイルの値を上書きします:

変数効果
FOSSIL_MIN_CONFIDENCEデッドコード検出の最小信頼度
FOSSIL_MIN_LINESクローン検出の最小行数
FOSSIL_SIMILARITYType 3 クローンの類似度しきい値
FOSSIL_OUTPUT_FORMAT出力形式(text、json、sarif)
フレームワークプリセット

プリセットはプロジェクトの依存関係から自動検出されます。これらは Fossil に対して、どの関数がフレームワークのエントリーポイント (ライフサイクルフック、ルートハンドラーなど) であるかを伝え、デッドコードとして検出されないようにします:

プリセット検出条件認識されるエントリーポイント
react依存関係に reactcomponentDidMount、render、useEffect、...
nextjs依存関係に nextgetServerSideProps、getStaticProps、...
express依存関係に expressrouter.* パターン
django依存関係に djangoget、post、URL パターンハンドラー
flask依存関係に flaskapp.route パターン
spring依存関係に spring-boot@Bean、@Controller、@Service、...
axum依存関係に axum#[tokio::main]、#[debug_handler]
actix依存関係に actix-web#[actix_web::main]、#[get]、#[post]、...
angular依存関係に @angular/corengOnInit、ngOnDestroy、...

CI/CD 統合

Fossil には CI/CD パイプライン向けの check コマンドが含まれています。コード品質のしきい値を超えた場合にビルドを失敗させ、チームがコード標準を徹底し、技術的負債の蓄積を防ぐのに役立ちます。

基本的な使い方
# Check against configured thresholds
fossil-mcp check

# Override thresholds via CLI
fossil-mcp check --max-dead-code 10 --max-clones 5

# Diff-aware mode (only analyze changed files in PR)
fossil-mcp check --diff origin/main

# Generate SARIF for GitHub code scanning
fossil-mcp check --diff origin/main --format sarif

# Quiet mode (no diagnostic output)
fossil-mcp check --quiet
設定

fossil.toml に [ci] セクションを追加します:

[ci]
max_dead_code = 10           # Maximum dead code findings (0 = fail on any)
max_clones = 5               # Maximum clone findings
max_scaffolding = 3          # Maximum scaffolding findings
min_confidence = "medium"    # Minimum confidence (low|medium|high|certain)
fail_on_scaffolding = false  # Fail if any scaffolding found
GitHub Actions 統合

.github/workflows/fossil-check.yml を作成します:

name: Fossil CI Check

on:
  pull_request:
  push:
    branches: [main]

jobs:
  fossil:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install Fossil
        run: curl -fsSL fossil-mcp.com/install.sh | sh

      - name: Run Fossil check
        run: |
          fossil-mcp check \
            --diff origin/${{ github.base_ref || 'main' }} \
            --format sarif \
            > fossil-results.sarif

      - name: Upload to GitHub Security
        if: always()
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: fossil-results.sarif
仕組み
  1. scan と同じ分析エンジンを使用してプロジェクトを スキャン します
  2. 変更されたファイルのみに オプションで絞り込み ます (--diff branch 経由)
  3. 設定されたしきい値に対して 評価 します
  4. 検出結果をテキスト、JSON、または SARIF として レポート します
  5. しきい値を超えた場合はコード 1 で 終了 します (CI ビルドが失敗)
終了コード
コード意味
0すべてのしきい値を通過 ✓
1しきい値を超過 (ビルドが失敗)
2エラー (git が見つからない、無効な設定など)

完全な例については、examples/fossil.toml と examples/fossil-check.yml を参照してください。


仕組み

  1. スキャン — プロジェクトのファイルを走査し、.gitignore を尊重し、ベンダー提供/生成されたコードをスキップします
  2. パース — 各ソースファイルの tree-sitter AST を構築します (16 言語)
  3. 抽出 — AST から関数、呼び出し、インポート、属性、クラス階層を抽出します
  4. グラフ — インポート解決とバレル再エクスポートのサポートを備えたクロスファイルの CodeGraph を構築します
  5. 分析 — エントリーポイントを検出し (ヒューリスティクス + フレームワークプリセット経由)、到達可能性分析を実行し、デッドコードとクローンを特定します
  6. レポート — 検出結果をテキストダッシュボード、JSON、または SARIF として出力します

コントリビューション

コントリビューションを歓迎します!ガイドラインについては CONTRIBUTING.md を参照してください。

ライセンス

Apache License, Version 2.0 または MIT License のいずれかお好みの方の下でライセンスされています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。