fenrir-mcp
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(実際の環境変数が優先されます)。
変数 | 必須 | 意味 |
| 必須 | httpsベースURL |
| 推奨 | 内部CAパス。唯一のトラストアンカーになります |
| 任意 | readonly(デフォルト)/ standard / full |
| アップロード時 | コロン区切りの許可リスト。未設定 = アップロード無効 |
| 任意 | 1 = 0600ファイルへのトークン代替保存を拒否 |
| 任意 | 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_idはINC-####参照または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 testsdocs/(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到達範囲。
This server cannot be deployed
Maintenance
Related MCP Connectors
A paid remote MCP for ClawManager, built to return verdicts, receipts, usage logs, and audit-ready J
Submit files and URLs to a malware sandbox, poll scans, fetch reports, hashes and IOCs.
NVD MCP — wraps the NIST National Vulnerability Database API (free, no auth)
Exposes FEDLIN's public security scanners as agent-callable tools over Streamable HTTP.
Related MCP Servers
- AlicenseAqualityDmaintenanceWraps Anthropic Claude Code CLI as tools, allowing MCP clients to invoke headless Claude Code sessions.2972 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables 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.2MIT
- AlicenseNot gradedqualityDmaintenanceAn 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
- AlicenseNot gradedqualityDmaintenanceThis 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.1MIT