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를 가져와 고정(pin)할 수 있습니다).
확인: 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 설치이므로 재설치 불필요).
개요
FENRIR API 기반 52개 도구. 모드별 계층: readonly 22개, standard +25개, full +5개.
선별된 도구 51개 + 탈출구 1개(
fenrir_api, OpenAPI 검증됨).인증 = FENRIR bearer 토큰. 비밀번호 + 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는 -e를 잘못 파싱하므로 add-json을 사용하세요.
인증
.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(KEY=VALUE). 실제 환경 변수가 우선합니다.
변수 | 필수 | 의미 |
| 예 | 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, feed pull, reports, analyses)은 세마포어 1로 직렬화됩니다. FENRIR 백엔드는 단일 워커입니다.
파괴적 작업은 하나의 도구(
fenrir_delete, full 모드)에만 있습니다. 폐기에는confirm=true가 필요합니다.
토큰 효율
응답이 축소됩니다(null/빈 값 제거).
FENRIR_MCP_SLIM=0으로 비활성화할 수 있습니다.목록 도구는
fields=[...]와limit를 받습니다. 전달하세요.incident_id는INC-####참조 또는 UUID를 허용합니다. 참조→UUID 매핑은~/.config/fenrir-mcp/refcache.json에 캐시됩니다.readonly 모드 = 52개가 아닌 22개 스키마만 로드됩니다.
스킬
.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 설정 > API 토큰, 관리자 /api/admin/tokens. 감사 로그는 토큰 접두사 claude-mcp로 필터링됩니다. 피해 범위 = 8시간 TTL x 역할 상한 x 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