pentest-mcp
pentest-recorder · pentest-mcp
당신의 터미널은 어떤 모의 침투 작업에서도 최고의 기록입니다. 이 도구는 그것을 하나의 기록으로 만들어 줍니다.
평가를 시작한 지 두 시간이 지나면 도메인 자격 증명, 호스트 네 개, 읽을 수 있는 공유 폴더가 생기지만, 어느 창에서 그중 무엇을 봤는지 알 수 없습니다. 그래서 스크롤을 합니다. 아니면 열거를 다시 실행합니다. 아니면 모든 것을 메모 파일에 손으로 붙여넣고, 다음 날 또 반복합니다.
pentest-recorder는 기존 tmux 세션을 감시하고, 터미널이 생성한 정확한 바이트를 보관하며, 이를 구조화된 모의 침투 작업 상태로 변환합니다. pentest-mcp는 그 상태를 MCP 호환 에이전트에 전달합니다 — 그래서 에이전트는 svc_backup의 비밀번호를 어디서 얻었는지에 대해 세그먼트, 창, 타임스탬프, 원본 바이트와 함께 답할 수 있습니다.
VM, tmux, VPN과 피벗, 별칭, 워드리스트는 그대로 유지됩니다. 어떤 것도 감싸지 않고, 어떤 것도 대체되지 않습니다.
tmux panes
│
▼
raw bytes ──────────────────────────────► raw/pane-000003.log
│ authoritative · never parsed
│ terminal emulation
▼
segments ◄── byte-addressable, immutable
│
│ LLM (local by default)
▼
observations ◄── append-only, every fact cites its source
│
│ deterministic rebuild
▼
entities · relationships · auth log
│
├──────────────► Obsidian vault (a projection, not the store)
│
└──────────────► pentest-mcp ────► Claude Code · Codex · any MCP agent이것은 자율 모의 침투 에이전트가 아닙니다. 데이터 계층이 진실과 기억을 보유하고, 에이전트가 추론을 수행합니다. 레코더는 스캔한 대상에 절대 연결하지 않습니다 — 테스트로 강제됩니다, 좋은 의도가 아니라.
설치
git clone git@github.com:lucianoengel/pentest-mcp.git
cd pentest-mcp
./install.shPython 3.11+, tmux, FTS5가 포함된 SQLite가 필요합니다 — 마지막 항목은 설치 프로그램이 확인하는데, 일부 배포판의 Python에서는 누락되어 있기 때문입니다. Docker 없음, 데이터베이스 서버 없음, 브라우저 UI 없음. 총 세 개의 서드파티 패키지만 사용합니다: pyte, httpx, mcp.
업데이트
cd pentest-mcp
git pull
./install.sh설치 프로그램을 다시 실행하는 것이 업데이트입니다. 체크아웃에서 다시 빌드하고, 기존 config.toml을 유지하며, 모의 침투 작업 데이터는 건드리지 않습니다. 이전 버전으로 작성된 모의 침투 작업이 있으면, 다음에 명령이 쓰기용으로 해당 저장소를 열 때 마이그레이션됩니다 — pentest-recorder status는 스키마 버전을 보고하고, 불일치가 있으면 그 사실을 알려줍니다.
실행 중인 레코더가 있으면 먼저 중지하세요 (pentest-recorder stop). 실행 중인 데몬은 시작할 때 사용한 코드를 계속 사용하기 때문입니다.
Related MCP server: mcp-ssh-interactive
사용법
pentest-recorder init inlanefreight --client "ACME" --scope "172.16.119.0/24"
tmux new -s inlanefreight
pentest-recorder start그런 다음 평소처럼 작업하세요. 해당 세션의 모든 창이 캡처되며, 나중에 여는 창과 윈도우도 포함됩니다.
pentest-recorder status # what is — and is NOT — being captured
pentest-recorder search 'Summer2026!' # find the exact string, across everything
pentest-recorder pause # stop capturing, right now
pentest-recorder sync # extract, rebuild, export에이전트 연결
claude mcp add pentest -- ~/.local/bin/pentest-mcp --engagement inlanefreight이제 질문해 보세요.
아직 검증하지 않은 자격 증명은 무엇이 있나요?
// list_entities(type="credential", filter={"validated": false})
{
"items": [{
"id": "credential:INLANEFREIGHT/svc_backup:password:HolyMoly123!",
"type": "credential",
"data": {
"username": "svc_backup",
"domain": "INLANEFREIGHT",
"secret": "HolyMoly123!", // exact, never normalized
"secret_type": "password",
"status": "unvalidated"
},
"fact_type": "CONFIRMED",
"observation_count": 1
}],
"total": 1
}그 비밀번호는 어디서 나온 건가요?
// get_provenance(entity_id="credential:INLANEFREIGHT/svc_backup:...")
{
"observations": [{
"kind": "credential",
"source": "extraction",
"actor": "ollama/qwen2.5-coder:7b",
"verified": true, // appeared verbatim in the source
"segment_ids": [1]
}],
"segments": [{
"id": 1,
"terminal": "inlanefreight:2.1",
"ts_start": "2026-08-26T14:32:11+00:00",
"command": "cat /mnt/backup/scripts/backup.ini",
"cwd": "/home/kali/eng",
"raw_path": ".../raw/pane-000003.log",
"byte_start": 0,
"byte_end": 125 // the original bytes, still on disk
}]
}지금까지 상황 정리해 줘
// get_engagement_summary()
hosts: 2 · services: 1 · identities: 1
credentials: 2 (1 unvalidated)
auth: 1 successful, 1 failed
findings: 1 candidate · open tasks: 0
hosts_with_no_service_recorded: 1 ← DC01 is under-enumerated
entities_with_unverified_fields: 0
segments: 1 (1 pending extraction)그 요약이 에이전트의 인덱스입니다. 그래서 list_unvalidated_credentials() 도구가 없는 이유입니다 — 개수는 에이전트에게 어떤 질문이 물어볼 가치가 있는지 알려주므로, 열두 개의 읽기 도구가 서른 개가 필요한 작업을 처리합니다.
캡처하는 것 — 그리고 의도적으로 캡처하지 않는 것
중첩된 세션 내부도 볼 수 있습니다. 잡은 리버스 셸, ssh, evil-winrm, msfconsole, sqlplus. 좋은 증거의 상당 부분이 거기에 있으며, 셸 히스토리 도구로는 정확히 도달할 수 없는 부분입니다:
$ nc -lvnp 4444 ← the only local command that ever runs
connect to [10.10.14.7] from (UNKNOWN) [172.16.119.30] 51422
C:\inetpub\wwwroot> type web.config
<add name="prod" connectionString="...;Password=P@ssw0rd#2026;" />
↑ captured, extracted, attributed to nothing그것을 생성한 명령은 진정으로 알려진 경우에만 기록됩니다. 그 리버스 셸 내부에서 command는 nc -lvnp 4444 — 정직하게 — 이고, exit_code는 추측하는 대신 비어 있는 상태로 유지됩니다.
지시하면 중지합니다:
방법 | |
에이전트 창 | 기본적으로 제외됨 — 에이전트 자신의 출력이 증거로 다시 유입되어서는 안 됨 |
창 하나 |
|
윈도우 하나 |
|
모든 것, 즉시 |
|
이미 파이프한 창 | 감지됨, 그대로 둠, 보고됨 |
status는 범위 내에서 캡처되지 않는 모든 창을 이유와 함께 나열합니다. 조용히 모니터링되지 않는 창은 이 도구가 가질 수 있는 최악의 실패이므로, 결코 각주가 되지 않습니다:
Engagement: inlanefreight (client: ACME)
Recorder: running (pid 48213) since 2026-08-26T13:58:02+00:00
tmux server: 347338
Capturing: 3 pane(s)
%1 inlanefreight:1:recon.0 (0 B buffered)
%4 inlanefreight:2:ad.0 (2145 B buffered)
%7 inlanefreight:3:shell.0 (0 B buffered)
NOT capturing 2 pane(s) in scope:
%9 inlanefreight:5:agent.0 -- window excluded by configuration
%11 inlanefreight:4:web.0 -- already piped by another tool; left untouched
Segments: 184 total, 3 pending, 181 extracted, 0 failed
Extraction: ollama / qwen2.5-coder:7b
Local provider: no engagement data leaves this machine.데이터가 저장되는 위치
~/.local/share/pentest-recorder/engagements/inlanefreight/
├── engagement.db one ordinary SQLite file — the canonical store
├── raw/ exact terminal bytes, rotated and gzipped
└── evidence/디렉토리는 0700, 파일은 0600. 원시 로그는 시스템에서 가장 민감한 데이터입니다 — 평문 도메인 자격 증명과 클라이언트 데이터가 들어 있습니다. 그 디렉토리를 전리품으로 취급하세요.
모든 것은 일반 도구로 검사할 수 있습니다. 백업은 cp -r이고, 감사는 SQL 쿼리입니다:
sqlite3 engagement.db \
"SELECT json_extract(data,'\$.username'), json_extract(data,'\$.status')
FROM entities WHERE type='credential';"별도의 모의 침투 작업은 디스크에서도 분리됩니다
모의 침투 작업당 하나의 디렉토리와 하나의 데이터베이스 파일 — 필터가 있는 공유 테이블이 아닙니다. 동일한 RFC1918 공간을 사용하는 두 클라이언트는 두 개의 별개 엔티티 집합으로 유지되며, 하나에서 다른 쪽의 비밀번호를 검색하면 아무것도 반환되지 않습니다.
pentest-recorder init acme --client "ACME" --local-only
pentest-recorder init globex --client "Globex" --local-only각각은 같은 이름의 tmux 세션에 바인딩됩니다. 두 레코더가 하나의 창을 대상으로 하면, pipe-pane -o는 첫 번째를 대체하기를 거부하고 두 번째는 창을 모니터링되지 않음으로 보고합니다.
모의 침투 작업이 끝나면:
pentest-recorder purge -e acme --include-vault모델에 도달하는 것
캡처와 모델 사이에는 세 가지가 있으며, 각각은 [extraction]에서 독립적으로 비활성화할 수 있습니다.
텍스트가 결정하는 사실은 모델 없이 파생됩니다. 주소, URL, UNC 경로, password=X, 그리고 인식된 형식의 자격 증명 — NTLMv2, Kerberos 티켓, pwdump 행, JWT, PEM 키 — 은 텍스트에서 직접 읽힙니다. 대부분의 형식이 계정을 포함하므로, 소유자는 값 자체에서 나옵니다:
svc_qualys::INLANEFREIGHT:1122334455667788:AB12…:0101…
└────┬────┘ └─────┬─────┘
username domain ← both are part of the value아홉 가지 형식의 코퍼스로 측정: 규칙 패스는 9/9 바이트 동일하게 9/9 올바른 귀속을 회복합니다; 동일한 값을 전사하도록 요청받은 qwen2.5-coder:7b는 6/9와 5/9를 처리합니다. 도구가 출력하는 위치 때문에만 의미가 있는 값은 인식하지 않을 것입니다 — microsoft-ds는 nmap에 SERVICE 열이 있기 때문에 서비스이며, 그것은 모델의 몫으로 남습니다.
긴 토큰은 모델이 보기 전에 대체됩니다. 남는 것은 자리 표시자, 길이와 문자 클래스, 그리고 모든 주변 컨텍스트입니다:
[SMB] NTLMv2-SSP Hash : svc_qualys::INLANEFREIGHT:1122334455667788:<Ta1b2c3d4:1>
└──────────── kept, so the model can attribute it ────┘레코더는 실제 바이트를 다시 대체합니다. 전사 오류는 감지되는 것이 아니라 발생할 수 없는 것이 됩니다. 식별자를 보이게 유지하는 것이 중요합니다: 전체 자격 증명을 숨기면 분류가 44%로 떨어지고, 유지하면 78%로 상승합니다 — 모델에 원시 값을 보여주는 것보다 더 나은 결과입니다.
반복은 축소되고 빈 세그먼트는 건너뜁니다. 동일한 줄은 하나의 인스턴스와 개수로 바뀌며, 모든 고유 값은 보존됩니다. 후보도 모의 침투 작업이 이미 알지 못하는 값도 없는 세그먼트는 절대 전송되지 않습니다 — 결정은 줄 모양이 아니라 알 수 없는 값에 기반합니다. 작업 중반에는 모든 모양이 익숙하고, 그렇지 않으면 connected to \\SQL01\payroll이 새 호스트와 공유와 함께 버려질 수 있기 때문입니다. 건너뛴 세그먼트는 이유를 기록하고 재처리 가능한 상태로 유지됩니다.
이 모든 것의 배후 숫자는 bench/BASELINE.md에 있습니다.
데이터가 시스템을 떠나는 시점
추출에는 언어 모델이 필요하며, 수정(redaction) 옵션은 없습니다 — 비밀을 추출하려면 비밀을 보내야 합니다.
따라서 기본 공급자는 로컬입니다 (127.0.0.1의 Ollama), 그리고 변경하지 않는 한 아무것도 시스템을 떠나지 않습니다. 원격 공급자를 구성하면, start는 정확히 무엇이 전송될지 알려주고 확인할 때까지 거부합니다:
Extraction is configured to use openai (gpt-4o-mini) at
https://api.openai.com/v1
This sends captured terminal output to that service. In a penetration
test that includes, in full and unredacted:
- plaintext passwords, password hashes, tokens and API keys
- usernames, domains, internal hostnames and IP addresses
- file contents, share names and command output
- vulnerability evidence and client-identifying data
There is no redaction option: extracting a secret requires sending it.계약상 금지된 클라이언트 작업의 경우:
pentest-recorder init acme --local-only그 모의 침투 작업은 구성이 나중에 무엇을 말하든 원격 공급자를 영구적으로 거부합니다 — 그리고 거부를 보고하는 동안 캡처는 계속됩니다.
API 키는 환경에서 읽히며, 구성의 api_key_env로 이름이 지정됩니다. 키는 구성 파일, 모의 침투 작업 데이터, 로그 또는 내보낸 Markdown에 절대 기록되지 않습니다.
Obsidian
obsidian.vault_path를 아무 위치에나 지정하면 모의 침투 작업이 일반 Markdown으로 투영됩니다 — 대시보드, 호스트, 자격 증명, 발견 사항, 타임라인, 호스트별 노트가 wikilink로 상호 연결됩니다. 플러그인 없음, Obsidian 자체도 선택 사항입니다 — 이것들은 텍스트 파일이므로 cat, grep, git이 잘 작동합니다.
# Credentials
| Identity | Secret | Type | Validated on | Source |
|---|---|---|---|---|
| INLANEFREIGHT\fiona | `Summer2026!` | Password | SMB FILE01 | Segment 1 |
| INLANEFREIGHT\svc_backup| `HolyMoly123!` | Password | Not yet | Segment 1 |볼트는 투영이지 저장소가 아닙니다: 삭제하고 다시 내보내도 아무것도 잃지 않습니다. 생성된 파일은 generated_by: pentest-recorder 프론트 매터를 가지며, 내보내기는 해당 마커가 없는 파일을 절대 덮어쓰지 않습니다 — 옆에 쓰고 알려줍니다. 자신의 메모는 절대 건드리지 않는 Notes/에 있습니다.
include_secrets는 정확한 자격 증명 추적이 핵심이므로 기본값이 include입니다. 볼트가 원하지 않는 곳에 동기화된다면 redact 또는 partial로 설정하세요; 그것은 투영에만 영향을 미칩니다.
구성
~/.config/pentest-recorder/config.toml — pentest-recorder config --write로 생성하세요. 모든 설정에는 문서화된 기본값이 있으며, 잘못된 값은 이름으로 보고되고 아무것도 적용되지 않습니다.
[data]
root = "~/.local/share/pentest-recorder"
[obsidian]
vault_path = "~/Obsidian/Pentests"
include_secrets = "include" # include | redact | partial
[tmux]
session = "@engagement" # or a glob such as "client-*"
exclude_windows = ["agent"]
[capture]
idle_flush_seconds = 3.0
max_segment_bytes = 65536
rotate_bytes = 134217728
[extraction]
rules = true # derive facts the text determines
redact = true # replace long tokens before prompting
collapse = true # collapse repeated lines
route = true # skip segments carrying nothing new
escalation_model = "" # optional stronger model for hard cases
[llm]
provider = "ollama" # ollama | openai | openai-compatible
model = "qwen2.5-coder:7b"
base_url = "http://127.0.0.1:11434"
api_key_env = "OPENAI_API_KEY" # names the variable, never holds the key
[mcp]
default_engagement = ""선택적 셸 통합
외부 셸의 정확한 명령, 작업 디렉토리 및 종료 코드를 세그먼트에 추가합니다:
source /path/to/pentest-mcp/shell/pentest-recorder.sh캡처는 그것 없이도 완전히 작동하며, 중첩 세션 내부의 활동은 추측하는 대신 올바르게 미귀속 상태로 유지됩니다.
구조가 유지되는 방식
네 개의 저장소 클래스, 각각 정확히 하나의 규칙:
클래스 | 테이블 | 규칙 |
불변 |
| 추가 전용; 절대 다시 쓰지 않음 |
추가 전용 |
| 대체됨, 절대 편집되지 않음 |
파생 |
| observations에서 삭제 후 재구축됨 |
상태 저장 |
| 사용자 소유; 파생이 절대 건드리지 않음 |
알아둘 가치가 있는 다섯 가지 결과:
모델 실패는 비용이 들지 않습니다. tmux는 창 출력을 일반 파일에 쓰고, 레코더는 체크포인트된 바이트 오프셋에서 그 파일을 추적합니다. 캡처 경로의 어떤 것도 이 프로세스가 실행 중인 것에 의존하지 않습니다. 레코더가 죽으면 → 바이트는 계속 디스크에 쌓이고 재시작 시 수집됩니다. 공급자가 다운되면 → 세그먼트는 보류 상태로 유지됩니다.
추출된 모든 리터럴은 소스와 대조됩니다. 원문에 그대로 나타나지 않는 값은 유지되지만 플래그가 지정되고 MCP를 통해 unverified로 표시됩니다. HolyMoly123!이 조용히 HolyMoly123이 되는 것은 이 도구가 존재하는 이유인 정확한 실패입니다 — 그리고 단순 부분 문자열 매칭은 그것을 감지할 수 없습니다. 잘림 자체가 진실의 부분 문자열이기 때문입니다.
병합은 창발적입니다. 엔티티는 ID 키에 대한 연결 컴포넌트입니다. 화요일에 FILE01이 172.16.119.10임을 알게 되면, 월요일의 두 개의 별도 레코드는 다음 재구축 시 하나가 됩니다 — 다시 쓰기 없음, 툼스톤 없음. 엔티티 ID는 콘텐츠 주소 지정 방식이므로 모든 재구축에서 유지됩니다.
잘못된 병합은 수정 가능하고 되돌릴 수 있습니다. 에이전트에게 알리면, 파생이 존중하는 분리를 기록합니다 — 전이적으로 주장된 링크도 포함합니다.
reprocess --model <better>는 안전합니다. 새 관찰이 추가될 뿐 대체되지 않으며, 발견 사항과 작업은 건드리지 않습니다. 지금 저렴하고 로컬로 캡처하고, 나중에 추출을 개선하세요.
가정이 아닌 측정
세 가지 설계 질문은 빌드 중 측정으로 결정되었습니다. bench/의 스크립트로 재현하세요.
검색 인덱스 — 튜닝된 단어 토크나이저가 아닌 trigram. 실제 도구 출력에 대한 20개의 대표 쿼리:
인덱스 | 일치 |
| 5 / 20 |
| 20 / 20 |
172.16.119.10을 함께 유지할 만큼 tokenchars를 넓히면 INLANEFREIGHT\fiona:Summer2026!도 단일 토큰으로 붙어버리므로, 비밀번호만 검색하면 아무것도 찾지 못합니다.
캡처 볼륨 — 정규화는 노이즈를 제거하지, 용량을 줄이지 않습니다.
워크로드 | 원본 | 정규화 | 감소율 |
자체를 다시 쓰는 진행률 표시줄 | 247,637 | 347 | 714× |
전체 화면 애플리케이션 | 7,731 | 209 | 37× |
대량 스크롤 덤프 ( | 178,022 | 173,977 | 1× |
4,000줄짜리 find는 전부 실제 콘텐츠이므로 그대로 통과합니다. 그래서 로컬 우선 추출은 단순히 신중한 선택이 아니라 핵심적인 역할을 합니다.
모델 — qwen2.5-coder:7b. 비밀, 해시, 주소가 바이트 단위로 동일하게 반환되는지 기준으로 평가:
모델 | 리터럴 회수율 | 종류 회수율 | 인증 결과 오류 |
| 83% | 90% | 0 |
| 39% | 60% | 2 |
3B 모델은 두 인증 픽스처 모두에서 아무것도 반환하지 않았고, 성공 대 실패를 두 번 틀렸습니다 — 이 시스템이 조용히 넘어가서는 안 되는 유일한 오류입니다.
MCP 도구
읽기 12개, 쓰기 3개. 도구 수가 많아지면 에이전트가 올바른 도구를 고르는 능력이 떨어지므로, get_engagement_summary의 카운트가 각각 별도의 도구가 필요했을 힌트를 담고 있습니다.
읽기 | |
| 다음에 무엇을 물어볼지 알려주는 카운트 — 여기서 시작 |
| 호스트, 서비스, ID, 자격 증명, 공유, 아티팩트 |
| 정확한 문자열 찾기; 출처가 된 소스 읽기 |
| 모든 사실을 세그먼트, 창, 타임스탬프, 바이트 범위로 추적 |
| 무슨 일이 있었는지, 최신순 |
| 어디서 무엇이 성공했고, 무엇이 실패했는지 |
| |
|
쓰기 | |
| 메모, 가설, 터미널 외부에서 본 사실, 수정 사항 |
| 확인, 거부, 기각 |
쓰기는 항상 운영자 또는 에이전트에게 귀속됩니다 — 추출에는 절대 귀속되지 않으며, 호출자가 그 반대로 주장할 수 없습니다. 어떤 쓰기 경로도 세그먼트를 변경할 수 없습니다.
개발
python -m venv .venv && .venv/bin/pip install -e '.[dev]'
.venv/bin/python -m pytest tests/ -q
.venv/bin/ruff check src tests benchCI는 Python 3.11부터 3.14까지 스위트를 실행하고, tmux를 설치하여 실제 tmux 인수 테스트가 건너뛰지 않고 실제로 실행되도록 하며, 린트를 수행하고, 라이선스 메타데이터가 온전한 상태로 휠이 빌드되는지 검증합니다.
296개의 테스트로, 중첩된 리버스 셸을 사용한 실제 tmux에 대한 전체 인수 리허설, stdio를 통한 실제 MCP 클라이언트, 레코더와 서버 간의 실제 동시 접근, 그리고 모델 제공자 모듈만 네트워크에 접근할 수 있는지 확인하는 AST 검사를 포함합니다.
tests/test_capture.py capture, segmentation, rotation, pause, restart
tests/test_normalize.py terminal emulation, both implementations
tests/test_extract.py the extraction contract and the verbatim guard
tests/test_derive.py union-find correlation, merges, corrections
tests/test_mcp.py tool surface, bounds, attribution
tests/test_acceptance.py end-to-end rehearsal in real tmux
tests/test_passivity.py proves the recorder never touches a target설계 결정, 사양 및 그 배경이 되는 근거는 openspec/changes/add-pentest-recorder-mcp/에 있습니다.
범위
의도적으로 구축하지 않은 것: 자율 펜테스트, 자동 익스플로잇, 터미널 또는 VM 대체, 웹 대시보드, 그래프 데이터베이스, 다중 사용자 협업, 네트워크 MCP 전송, 도구별 파서.
레코더는 캡처하고 정리합니다. MCP 서버는 노출합니다. 에이전트는 추론합니다. 이들은 분리된 상태를 유지합니다.
라이선스
MIT — © 2026 Luciano Engel.
사용하고, 포크하고, 배포하세요. 보증 없이 제공되며, 이는 여기서 평소보다 더 중요합니다: 이 도구는 평문 자격 증명과 클라이언트 데이터를 디스크에 저장합니다. 실제 엔게이지먼트에 적용하기 전에 데이터가 저장되는 위치와 데이터가 머신을 떠나는 시점을 읽어보세요.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceAn MCP server for EMBA firmware analysis that exposes structured security findings and tools to LLMs. It enables users to programmatically query, reason over, and correlate firmware analysis results such as kernel details, SBOMs, and attack paths.6
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI agents to run fully interactive SSH sessions (via tmux) and execute commands like a human operator, with persistent sessions and multiple concurrent connections.6MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that provides programmatic access to the SOLVE-IT digital forensics knowledge base, enabling LLMs to query, navigate, and search forensic techniques, weaknesses, mitigations, objectives, and citations.1MIT
- AlicenseAqualityAmaintenanceRecords your terminal sessions per command (PTY + OSC 133) into local SQLite, so AI agents can search, retrieve, and diff what commands actually printed. Secret redaction is applied by default to everything served over MCP.46MIT
Related MCP Connectors
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Agentic search over your Dewey document collections from any MCP-compatible client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lucianoengel/pentest-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server