EDB_FILE_EXPLORERSAFE
Cross-platform GUI, CLI and MCP server for Microsoft ESE databases (ntds.dit, SRUDB.dat, Exchange .edb, WebCacheV01.dat, Windows.edb) - digital forensics tool with multi-format extract and reporting
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
EDB Explorer
Cross-platform GUI, CLI and MCP server for forensic database analysis. Opens ESE (ntds.dit, SRUDB.dat, Exchange, WebCache), SQLite (iOS, Android, browsers, macOS, Windows apps), Windows Event Logs (.evtx), LevelDB (Chromium / Electron), Access, dBase, Berkeley DB and SQL / BSON dumps - read-only - with SQL over any of them, a cross-database timeline, artifact views for ~60 applications, multi-format extraction, analyst reports and signed, encrypted project files for hand-over between machines.
Why
Evidence lives in databases: the Active Directory store, SRUM's per-app network usage, a phone's messages and call log, browser history, macOS's knowledgeC, a web app's LevelDB cache, an old Access application, a mysqldump from a comp
01d34285367bOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add edb-explorer -- uvx edb-explorer
{
"mcpServers": {
"edb-explorer": {
"command": "uvx",
"args": [
"edb-explorer"
]
}
}
}Exposed tools (31)
27 read · 4 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
close_database | read | Close an open database and release its file handle. |
column_statistics | read | Profile a table |
count_records | read | Count the records in a table (walks the whole B-tree; cached afterwards). |
database_summary | read | Analysis overview of a database: detected application/platform, tables with timestamp columns, |
describe_table | read | Return the schema of a table: columns (name, JET type, storage class, encoding) and indexes. |
detect_timestamps | read | Which columns of a table hold timestamps and in which encoding (webkit, cocoa, unix_ms, filetime ...). |
exchange_export | read | Export messages (a whole mailbox, one folder, or specific ids) as eml / html / txt / json files |
exchange_folders | read | Folder tree of a mailbox with item counts (Inbox, Sent Items, Deleted Items, ...). |
exchange_mailboxes | read | List the mailboxes of an Exchange mailbox database (.edb): owner, message counts, last logon. |
exchange_message | read | Full message: headers, decoded body (text/HTML), recipients, attachments and every MAPI property. |
exchange_messages | read | List messages of a mailbox (newest first): subject, sender, recipients, dates, attachments flag. |
exchange_save_attachment | write | Save one attachment (by its inid from exchange_message) to disk. |
export_database_to_directory | read | Extract every table (or a chosen subset) of a database into a directory, one file per table. |
export_table_to_file | read | Export a table to CSV, JSON or JSON Lines on disk. |
generate_report | write | Write an analyst report describing one or more open databases. |
get_database_info | read | Return metadata for an open database: format, page size, shutdown state, timestamps, profile. |
get_record | read | Fetch a single record by its `_row` index with full (untruncated) values. |
get_record_raw | read | Return one binary/text value as hex, a hexdump and every decoding attempt (UTF-16, SID, GUID...). |
interpret_timestamp | read | Decode an unknown numeric timestamp every plausible way (FILETIME, OLE date, Unix s/ms/us, WebKit...). |
list_databases | read | List the databases currently open in this session. |
list_formats | read | List the database formats this server can open (ESE, SQLite, LevelDB, Access, DBF, Berkeley DB, SQL/BSON dumps). |
list_known_profiles | read | List the database types EDB Explorer recognises and how it identifies them. |
list_tables | read | List tables in a database with friendly names (e.g. SRUM GUID tables) and column counts. |
list_views | read | List the ready-made artifact views for a database |
open_database | read | Open a database file read-only and return its metadata. Any supported format is auto-detected: |
query_table | read | Page through the records of a table with optional filtering. |
run_sql | write | Run read-only SQL against a database of ANY format (ESE, SQLite, LevelDB, Access, DBF ...). |
run_view | write | Run one of the profile |
scan_directory | read | Find supported database files (and LevelDB directories) under a directory by file signature. |
search | read | Search for a string (or regex) across all tables and columns of a database. |
timeline | read | Build a unified timeline: one event per row and timestamp column across tables and databases, |
Trust audit
SAFEgrade B · trust 87/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (2 observation(s))
- Network
- declared (5 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (10)
streamable-http
.pre-commit-config.yaml
return hashlib.sha1(repr((code.co_argcount, code.co_names, code.co_varnames)).encode()).hexdigest()[:12]
row.append(bytes.fromhex(text[i + 2 : j]))
return bytes.fromhex(tok[2:])
Ed25519PublicKey.from_public_bytes(base64.b64decode(public_b64)).verify(base64.b64decode(signature_b64), data)
fp = _fingerprint(base64.b64decode(public))
key = _derive_key(password, base64.b64decode(crypto["salt"]))
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends libegl1 libgl1 libxkbcommon0 libdbus-1-3 libfontconfig1
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends libegl1 libgl1 libxkbcommon0 libdbus-1-3 libfontconfig1
Gates applied: no_behavioural_pass.
01d34285367bfull audit observations/trust-audit/mcp-server/keyuraghao__edb_file_explorer.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 01d34285367b | SAFE | B | 87 | first audit |
Questions
What is the EDB_FILE_EXPLORER MCP server?
Cross-platform GUI, CLI and MCP server for Microsoft ESE databases (ntds.dit, SRUDB.dat, Exchange .edb, WebCacheV01.dat, Windows.edb) - digital forensics tool with multi-format extract and reporting
What tools does EDB_FILE_EXPLORER expose?
31 in total: 27 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is EDB_FILE_EXPLORER safe to connect to an agent?
The audit found nothing in the source that contradicts what it says it does, and graded it B (87/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B.
What credentials does EDB_FILE_EXPLORER need?
No credential environment variables were found in its source, so it appears to need none.
How does EDB_FILE_EXPLORER run?
It speaks streamable-http, so it runs as a service you connect to over the network. It is published on PyPI as edb-explorer.
How current is this page?
The grade is for one exact copy of the source (01d34285367b), read on 2026-10-11. The repository is watched and re-audited when it changes.