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,运行 /mcpfenrir ✔ connected,然后让 Claude 执行 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(可编辑安装,无需重新安装)。

功能

  • 基于 FENRIR API 的 52 个工具。按模式分级:readonly 22 个,standard +25 个,full +5 个。

  • 51 个精选工具 + 1 个逃生通道(fenrir_api,经 OpenAPI 验证)。

  • 认证 = FENRIR bearer 令牌。由 CLI 在密码 + TOTP 之后签发。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-json,不要使用带标志的 add 形式(会错误解析 -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 强制执行。

  • 令牌存储在操作系统钥匙串中,否则存储为 0600 权限文件。绝不放入环境变量,绝不放入仓库。

  • 客户端 TTL 8 小时。每天重新登录。401 = 已过期。

配置

环境变量,或 ~/.config/fenrir-mcp/env(KEY=VALUE)。实际环境变量优先。

变量

必需

含义

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 = 部署事实,放入环境变量文件。模式 + 上传目录 = 按项目设置, 放入 .mcp.json 注册配置。

模式与角色

模式

工具

所需令牌上限

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、feed pull、reports、analyses)串行化, 信号量为 1。FENRIR 后端为单 worker。

  • 破坏性操作集中在单个工具(fenrir_delete,full 模式)中。Dispose 需要 confirm=true

令牌效率

  • 响应精简(丢弃 null/空值)。FENRIR_MCP_SLIM=0 可禁用。

  • 列表类工具接受 fields=[...]limit。请传入这些参数。

  • incident_id 接受 INC-#### 引用或 UUID。引用→UUID 映射缓存于 ~/.config/fenrir-mcp/refcache.json

  • readonly 模式 = 加载 22 个 schema,而非 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 设置 > 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