Skip to main content
Glama
Otrivinish

fenrir-mcp

by Otrivinish

fenrir-mcp

MCPサーバー。DFIR-FENRIR v2 REST APIをラップします。stdioを介してClaude Codeと通信します。 Python。stdioのみ。待受ポートなし。

使い方 — 初回実行

一度だけ実行します。https://HOST をFENRIRブラウザのURLに置き換えてください。VPNを接続してください。

# 1. get code + deps
git clone <repo> dfir-fenrir-mcp
cd dfir-fenrir-mcp
uv sync

# 2. get the internal CA onto this machine
scp deploy-host:/path/dfir-fenrir-v2/certs/ca.crt ~/ca.crt

# 3. verify the CA matches the live server (expect: {"needs_setup":false})
curl --cacert ~/ca.crt https://HOST/api/auth/setup-check

# 4. write deployment config
mkdir -p ~/.config/fenrir-mcp && chmod 700 ~/.config/fenrir-mcp
printf 'FENRIR_URL=https://HOST\nFENRIR_CA_CERT=%s/ca.crt\n' "$HOME" > ~/.config/fenrir-mcp/env
chmod 600 ~/.config/fenrir-mcp/env

# 5. mint a token (asks user + pass + TOTP, then role cap: analyst for standard)
.venv/bin/fenrir-mcp login

# 6. register with Claude Code (run from the project dir you want the tools in)
claude mcp add-json fenrir '{"type":"stdio","command":"'"$PWD"'/.venv/bin/fenrir-mcp","env":{"FENRIR_MCP_MODE":"standard","FENRIR_MCP_UPLOAD_DIRS":"'"$HOME"'/cases"}}'

または手順4〜6を省略する場合: ./install.sh を実行します(すべてをプロンプトで尋ねられ、CAの取得とピン留めも可能)。

確認: claude を起動し、/mcp を実行して fenrir ✔ connected を確認し、run fenrir_whoami を実行するよう依頼してください。

Related MCP server: SIFTGuard

使い方 — 運用

# start of day: mint fresh 8 h token
.venv/bin/fenrir-mcp login

# check state any time
.venv/bin/fenrir-mcp status         # user, token role, mode, live server check

# work: in Claude Code, plain language. examples:
#   "triage INC-0006"               (loads the SOC skill)
#   "list open critical incidents"
#   "analyze ~/cases/x.eml into INC-0006 and promote the IOCs"
#   "verify the custody chain on INC-0006"
#   "write up findings and close INC-0006"

# end of day: revoke
.venv/bin/fenrir-mcp logout
  • ツールから401が返る = トークンが期限切れ。login を再実行してください。セッション内で修正する方法はありません。

  • 書き込みで403 = モードに対してトークン上限が低すぎる。login を再実行し、より高い上限を選択してください。

  • モードやアップロードディレクトリを変更する場合 = .mcp.json の登録を編集し、claude を再起動してください。

  • サーバーコードを更新した場合(git pull)= claude を再起動してください(editable installのため再インストールは不要)。

内容

  • FENRIR APIに対する52ツール。モード別: readonly 22、standard +25、full +5。

  • 厳選された51ツール + 1つのエスケープハッチ(fenrir_api、OpenAPI検証済み)。

  • 認証 = FENRIRベアラートークン。パスワード + TOTPの後にCLIが発行。TTLは8時間。

  • インシデント/タイムライン/IOC/エンティティ/証拠の読み取り。所見の書き込み。.eml/pcap/アーティファクトの アップロード。分析の実行。CoCの管理。インシデントのクローズ。

必要条件

  • Python >= 3.12

  • uv

  • claude CLI

  • FENRIRへのネットワーク経路(VPN)

  • FENRIR内部CAファイル(デプロイホスト上の certs/ca.crt

インストール

git clone <repo> dfir-fenrir-mcp
cd dfir-fenrir-mcp
./install.sh          # prompts: URL, CA, mode, upload dirs, register, skill

手動インストール:

uv sync
mkdir -p ~/.config/fenrir-mcp && chmod 700 ~/.config/fenrir-mcp
printf 'FENRIR_URL=https://HOST\nFENRIR_CA_CERT=/abs/ca.crt\n' > ~/.config/fenrir-mcp/env
chmod 600 ~/.config/fenrir-mcp/env
claude mcp add-json fenrir '{"type":"stdio","command":"/abs/dfir-fenrir-mcp/.venv/bin/fenrir-mcp","env":{"FENRIR_MCP_MODE":"standard"}}'

フラグ形式の add ではなく add-json を使用してください(-e を誤って解析するため)。

認証

.venv/bin/fenrir-mcp login     # user + pass + TOTP, then pick role cap
.venv/bin/fenrir-mcp status    # token meta + live check
.venv/bin/fenrir-mcp logout    # revoke server-side + wipe local
  • トークンのロール上限はログイン時に選択。FENRIRアカウントのロールを超えることはできません。

  • リクエストごとの実効ロール = min(アカウントのロール、トークン上限)。FENRIRによって強制されます。

  • トークンはOSキーリングに保存され、ない場合は0600権限のファイルに保存。環境変数やリポジトリには決して保存されません。

  • クライアントTTLは8時間。毎日再ログインしてください。401 = 期限切れ。

設定

環境変数、または ~/.config/fenrir-mcp/env(実際の環境変数が優先されます)。

変数

必須

意味

FENRIR_URL

必須

httpsベースURL

FENRIR_CA_CERT

推奨

内部CAパス。唯一のトラストアンカーになります

FENRIR_MCP_MODE

任意

readonly(デフォルト)/ standard / full

FENRIR_MCP_UPLOAD_DIRS

アップロード時

コロン区切りの許可リスト。未設定 = アップロード無効

FENRIR_MCP_REQUIRE_KEYRING

任意

1 = 0600ファイルへのトークン代替保存を拒否

FENRIR_MCP_SLIM

任意

0 = 生のレスポンス(デフォルトはnull/空を除去)

URL + CA = デプロイ環境の情報なので、envファイルに記載します。モード + アップロードディレクトリ = プロジェクトごとの設定なので、 .mcp.json の登録に記載します。

モード vs ロール

モード

ツール

必要なトークン上限

readonly

読み取り

viewer

standard

+ 書き込み、アップロード

analyst

full

+ 削除、管理者

analyst(管理者ツールにはadminが必要)

モードを超えるツールは登録されません。GUIの管理者権限 != トークン上限。書き込みで403 = トークン上限が低すぎるため、より高い上限で再ログインしてください。

セキュリティルール(コードで強制)

  • バイトデータはFENRIRへの方向にのみ流れます。証拠/エクスポート/写真/レポートのバイトデータをディスクに保存しません。 厳格な拒否リストを、厳選ツールとエスケープハッチの両方に、全モードで適用。テキストエクスポートはインライン表示のみ。

  • MCPはトークンを発行しません。POST /api/tokens は拒否リスト登録済み。ログインはCLIのみ。

  • /api/auth/* は拒否リスト登録済み。

  • TLS 1.3以上。CAピン留め。verifyをオフにすることはありません。リダイレクトは無効。 (CAピン留めパスではRFC 5280の厳密な形式チェックのみ緩和されます — generate-certs.sh のCAにはkeyUsageがないため。チェーンとホスト名は引き続き検証されます。システムストアは厳格なまま。)

  • アップロードは FENRIR_MCP_UPLOAD_DIRS からのみ許可されます。パスは検証され、外部へのトラバーサルはありません。

  • 高コストな呼び出し(enrich-all、フィード取得、レポート、分析)は直列化され、 セマフォは1。FENRIRバックエンドはシングルワーカーです。

  • 破壊的操作は1つのツール(fenrir_delete、fullモード)に集約されています。廃棄には confirm=true が必要です。

トークン効率

  • レスポンスはスリム化されます(null/空を除去)。FENRIR_MCP_SLIM=0 で無効化。

  • リスト系ツールは fields=[...]limit を受け取ります。これらを渡してください。

  • incident_idINC-#### 参照またはUUIDを受け付けます。参照→UUIDマップは ~/.config/fenrir-mcp/refcache.json にキャッシュされます。

  • readonlyモードでは22のスキーマが読み込まれ、52ではありません。

スキル

.claude/skills/fenrir-soc-analyst/ はリポジトリに同梱されています。SOCトリアージ手法

  • プレイブック + トークン規律。トリアージ作業が始まったときだけ読み込まれます。インストーラーは ~/.claude/skills/ にシンボリックリンクを作成します。

レイアウト

src/fenrir_mcp/
  __main__.py     entry: serve (default) | login | logout | status
  server.py       MCPServer, tier-gated registration, startup checks
  config.py       env + env-file + upload allowlist
  client.py       httpx: TLS, bearer, errors, slim, ref-rewrite, semaphore
  token_store.py  keyring -> 0600 file
  cli.py          login / logout / status
  denylist.py     single-source hard denylist + byte-drift scan
  openapi_guard.py escape-hatch spec validation
  refcache.py     INC-ref -> UUID memory
  tools/          15 modules, @tool(tier) registry
tests/            40 tests

docs/(DESIGN、TOOLS、SBD-REVIEW、api-inventory)と THREAT_MODEL.md はgitignoreされています — ローカルのみのファイルで、デプロイ構成と全APIサーフェスを記述しています。

開発

uv run pytest     # 35 tests: denylist, tiering, guard, uploads, tls, env, efficiency

侵害対応

fenrir-mcp logout を実行します。または他の場所で失効させる場合: GUIのSettings > API tokens、管理者API /api/admin/tokens。監査はトークンプレフィックス claude-mcp でフィルタリングできます。影響範囲 = 8時間のTTL × ロール上限 × VPN到達範囲。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables autonomous digital forensics and incident response by wrapping SIFT Workstation tools as MCP tools and orchestrating a multi-agent AI pipeline for evidence analysis and remediation planning.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that transforms Claude Code into an autonomous DFIR analyst by providing typed, audited forensic tools for disk, memory, timeline, registry, and IOC analysis on the SANS SIFT Workstation.
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    This MCP server connects Claude Desktop to a Velociraptor instance and local forensic tools. It enables remote endpoint investigation and local evidence analysis through natural language commands.
    1
    MIT