navi_config_updateLABSCO SUMMARY
Tenable data in chat, with the destructive half locked behind three switches.
The read surface is large enough to be genuinely useful on day one — assets, vulns, exports, tag queries — and it is the whole surface until you open a gate on purpose, so it is safe to point at production while you learn what it can do. The maintainer is explicit that the checks are argv-level and the server has not been exercised against a live tenant, so make your first call a single live read and check navi://workdir before you trust the numbers.
What it is
A Python MCP server that shells out to the Tenable navi binary and reads the local navi.db, exposing tools plus navi:// resources. It does not manage API keys — you set those out of band with navi config keys first.
What you get
- 20 registered tools by the README's count; with no environment variables set beyond the workdir and binary path, everything exposed is a read
- Three independent gates in front of anything that changes your tenant: the master switch
NAVI_MCP_ALLOW_WRITES, then a capability gate, thenconfirm=Trueon the individual call - Separate opt-ins for the two dangerous capabilities —
NAVI_EMAILfor sending mail as you,NAVI_REMOTE_CODE_EXECUTIONfor running shell commands on remote hosts navi://workdir— the resolved workdir, whether navi.db is present and how fresh it is, all three gate states, and the call budgetnavi://schema/{table}for live column definitions, andnavi://skill/{name}to load one of the 17 bundled skills- A call budget near 220s: an export that would outlive it fails with the exact CLI command to run instead, scoped the same way
Requirements
pip install navi-mcp, or pipx install "navi-mcp[navi]" for an install that other packages in the interpreter cannot disturb. The mcp SDK must be at least 1.9 and below 2 — 2.x renamed the module and fails at import before any tool registers, which the client reports only as "Server disconnected". Set NAVI_WORKDIR to the folder that actually holds navi.db: it defaults to ~/.navi-mcp, and pointing at the wrong folder makes every read come back empty.
Setup effort
One command plus a key — pip install navi-mcp, then supply credentials
USE CASES
Checking exposure to one CVE
Ask for the CVE by id and read back the affected assets from your local navi database.
Working out why every read comes back empty
Read the workdir resource: it prints the resolved directory, whether navi.db is there, and the state of all three gates.
Tagging a set of assets from a conversation
Open the write gate in the server environment, restart, then pass confirm on the call itself once you have narrated what it will change.
Refreshing a stale local cache
Scope the sync with days, since, severity or a tag pair so it finishes inside the call budget instead of timing out.
20 tools
Listed in project code.
navi_config_rebuildnavi_confignavi_explore_querynavi_explore_datanavi_explore_infonavi_explore_apinavi_enrich_tagnavi_enrich_acrnavi_enrich_addnavi_exportnavi_scannavi_wasnavi_action_deletenavi_action_rotatenavi_action_cancelnavi_action_encryptnavi_action_decryptnavi_action_mailnavi_action_pushBEFORE YOU INSTALL
What to know first
Tools you get
20 tools registered in the project's code.
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
pip install navi-mcpMCP Clients
Claude Desktop
{
"mcpServers": {
"navi": {
"command": "<YOUR_PATH_TO_NAVI_MCP>",
"env": {
"NAVI_WORKDIR": "<YOUR_NAVI_WORKDIR>",
"NAVI_MCP_ALLOW_WRITES": "0",
"NAVI_EMAIL": "0",
"NAVI_REMOTE_CODE_EXECUTION": "0"
}
}
}
}