Supercharged Tenable Identity Exposure MCP Server
Draft · awaiting reviewMCP server that exposes the Tenable Identity Exposure API as 133 tools, from Active Directory exposure queries to user and API-key management.
For Identity attack pathsWorks with Any MCP client, Claude CodeMaintained taherkaraki, last push 2026-07-28
MCP serverAn MCP server is a program that gives your AI client extra tools; the client's model decides when to call them. by taherkaraki · read from the code at 3b7f48d (v0.2.1) on 2026-10-21The date we last read the tool’s files. The code after “at” names the exact version (the git commit) we read; a newer version may differ. · Not run yet.Whether we have run the tool in our lab. “Did more than it said” means the run used rights its description does not name; “did no more than it said” means it stayed within them.
What the code shows, worst first. No run advice yet: the one word needs a read under the full rule.
Level 3. Persistence. Create_user, together with set_user_roles and create_api_key, lets the agent create accounts, grant roles and mint API keys on the target.
No evidence. Approval. Unknown: the code sets no approvals, but the search patterns for approvals match several lines, so a zero cannot be written. That never counts as zero.
Before first useSettings for your AI client that limit the tool to the rights its task needs; derived from the code unless marked tested. derived from the code, not tested
- Set TIE_ALLOWED_SAFETY=read, use the API key of a read-only Identity Exposure profile, keep in mind that get_api_key stays available in read mode, and build from a clone at the pinned release instead of npx -y.
What the code can reach, 0 to 3 per right; a dashed point means no evidence, never zero. The three readings
Is it for you?
- Made for
- Lets Claude interact with Tenable Identity Exposure (TIE) environments.
- Maps every TIE API operation to its own tool so clients can allow or block single operations by tool name.
- Supports several TIE environments by adding one server instance per environment.
- Use it when
- Analyse attacks, deviances and checkers reported by Identity Exposure Identity attack paths
- Monitor alerts, events and notifications from Identity Exposure Alert triage
- Update a deviance with update_deviance, as shown in a README code example Identity attack paths
- Produce reports from exports, dashboards and topology
- Not for
Nothing excluded by the author in the files read
- You need
- Node.js 18 or later
- A TIE API key, set in TIE_API_KEY
- A Tenable Identity Exposure instance; its URL goes into TIE_BASE_URL
+2 more
Details: You need
Install
linked, not distributed: the Field Guide does not bundle agents or MCP serversUpstream
{ "command": "npx", "args": ["-y", "tie-mcp-server"] }
Quoted from README.md#L19-25 at the pinned commit; a quotation, not a command to copy.
Run it with least privilege
- note
derived from the code, not tested in the lab; set TIE_ALLOWED_SAFETY=read, use the API key of a read-only Identity Exposure profile, keep in mind that get_api_key stays available in read mode, and build from a clone at the pinned release instead of npx -y
derived, not tested: proposed from the code analysis
The record · every value with its evidence
What we checked, and what we found.
Profile read at commit 3b7f48d on 2026-10-25: 50 facts, each with its quoted line confirmed by script; not installed, not run in the lab.Each fact was read from the tool's files at the checked version and links to the line it comes from. Where nothing was found, the page says so instead of assuming “none”.
Selected by criteria v0.1, approved by Ilja Schlak: awaiting approval. Each section opens with the answer; the file and line of every fact follow it.
What it can change the capability groups as upstream groups them, worst first
Changes, deletes, according to the capabilities read.
The author states 133 tools: 131 generated from the API spec and 2 custom tools. README.md L251-253, README.md#L251-253 at the checked commit
Partly listed: Infrastructures, Directories, Roles, LDAP and SAML configuration, Email Notifiers, Dashboards, Widgets, License, Lockout Policy, Report Access Token, smaller groups
| Group | What it covers | Effect | On by default |
|---|---|---|---|
| Profiles | Creates, clones, updates, deletes, commits and unstages profiles and reads profile scores and topology. API_ENDPOINTS.md L147-156, API_ENDPOINTS.md#L147-156 at the checked commit | reads, changes, deletes | yes |
| Users | Lists, creates, updates and deletes users, changes passwords and replaces a user's role list. API_ENDPOINTS.md L193-201, API_ENDPOINTS.md#L193-201 at the checked commit | reads, changes, deletes | yes |
| Syslogs | Lists, creates, updates and deletes syslog forwarding configurations and sends test messages. API_ENDPOINTS.md L184-191, API_ENDPOINTS.md#L184-191 at the checked commit | reads, changes, deletes | yes |
| Alerts, API Keys | Gets and updates single alerts and alerts per profile; gets the API key and creates an API key. API_ENDPOINTS.md L22-30, API_ENDPOINTS.md#L22-30 at the checked commit | reads, changes | yes |
| Attack Types, Attacks (IoA) | Lists and exports attacks per profile, lists attack types and reads or changes attack type configuration and options. API_ENDPOINTS.md L36-45, API_ENDPOINTS.md#L36-45 at the checked commit | reads, changes | yes |
| Checkers (IoE) | Lists checkers, exports checker data and reads or creates checker options per profile. API_ENDPOINTS.md L51-58, API_ENDPOINTS.md#L51-58 at the checked commit | reads, changes | yes |
| Deviances (IoE) | Lists, searches and updates deviances per directory, checker, AD object or event, including bulk updates per checker. API_ENDPOINTS.md L80-89, API_ENDPOINTS.md#L80-89 at the checked commit | reads, changes | yes |
| Discovery | Hand-written read tools such as get_topology, which returns each forest with its domains and their IDs for use in other tools. custom-tools.ts L54-63, src/custom-tools.ts#L54-63 at the checked commit | reads | yes |
| AD Objects | Lists, searches and fetches Active Directory objects by directory, infrastructure, checker or event, including an object's change history. API_ENDPOINTS.md L13-20, API_ENDPOINTS.md#L13-20 at the checked commit | reads | yes |
| Events | Searches events and fetches single events by directory or infrastructure, with their reasons. API_ENDPOINTS.md L109-113, API_ENDPOINTS.md#L109-113 at the checked commit | reads | yes |
Where it sends data and who can connect to it
2 outside connections found in the files read: TIE instance at TIE_BASE_URL, npm registry.
- TIE instance at TIE_BASE_URL vendor API, always. Each tool call becomes an HTTP request to the TIE instance with the API key in the x-api-key header. client.ts L12-19, src/client.ts#L12-19 at the checked commit
- npm registry download, by default. With the recommended npx -y setup, npx fetches the tie-mcp-server package from npm when the client starts the server. README.md L19-25, README.md#L19-25 at the checked commit
Listens for no connections in the files read.
Other connections not ruled out: read in the documentation and the cited code, not searched in full.
How it runs generated from the files read, never drawn by hand
Tool definitions are generated from the OpenAPI spec into a single data file, and one generic dispatcher turns any descriptor plus arguments into an HTTP request. README.md L212-214, README.md#L212-214 at the checked commit
Your AI client
Parts that live inside the AI client: skill instructions, client configuration.
- MCP client configuration Holds the TIE credentials, which are configured on the client side and passed to the MCP server process. AUTHENTICATION.md L8, AUTHENTICATION.md#L8 at the checked commit
Your machine
Programs and files on the machine where you run the tool.
- tie-mcp-server (src/index.ts) Routes each tool call: custom tools go to their own handler, all others through the generic descriptor dispatcher. index.ts L69-74, src/index.ts#L69-74 at the checked commit
- Generated tool descriptors 131 descriptors (name, method, path, schema) generated from the OpenAPI spec by scripts/generate-tools.mjs. README.md L217-226, README.md#L217-226 at the checked commit
- Generic dispatcher (src/dispatch.ts) Fills path parameters, query string and body from the tool arguments and sends one HTTP request per call. dispatch.ts L4-8, src/dispatch.ts#L4-8 at the checked commit
Container on your machine
Parts inside a container that the tool starts on your machine.
- Docker container (optional) Optional image that bundles Node.js and runs the compiled server as the unprivileged node user. Dockerfile L26-35, Dockerfile#L26-35 at the checked commit
Outside your machine
Remote services: vendor APIs, model providers, targets, telemetry endpoints. Data sent here leaves your machine.
- Tenable Identity Exposure API The TIE instance at TIE_BASE_URL, which receives every request with the API key in the x-api-key header. client.ts L12-18, src/client.ts#L12-18 at the checked commit
The six rights, read three waysThe six rights a tool can take (files, network, execution, secrets, persistence, approval), each read three ways and rated 0 to 3. 0 never means safe; “?” means no evidence. what the author says, what the code shows, what one lab run showed
Level 3 (privileged), read from the code. Not run in our lab yet.
0 contained · 1 scoped · 2 open · 3 privileged · ? no evidence · 0 never means safe · zero means: none declared (Declared), none found (Code), none observed (Lab)
Author says: the evidence
- Network · 1README.md L78 the author names the user's Identity Exposure instance URL as the only endpoint
- Secrets · 1README.md L79 the author declares one API key passed by the user
- Persistence · 3API_ENDPOINTS.md L195 the author's endpoint reference lists user creation and every endpoint becomes one tool, so creating users on the target is declared
- Approval · 1README.md L175 the author's example client configuration pre-approves only the read-tool name patterns
Code shows: the evidence
- Files · 1generate-tools.mjs L395-396 only the build-time generator writes files, inside the repository, and the server code has no file access
- Network · 1client.ts L12-19 one HTTP client is bound to the configured Identity Exposure URL, and tool arguments cannot change the host
- Execution · 1package.json L21 npm install runs the build automatically through the prepare script, and the server itself starts no processes
- Secrets · 1config.ts L18 reads exactly one secret, TIE_API_KEY, from a named environment variable
- Persistence · 3tools.ts L5501-5506 create_user, together with set_user_roles and create_api_key, lets the agent create accounts, grant roles and mint API keys on the target
- Approval · ?no evidence: the code sets no approvals, but the search patterns for approvals match several lines, so a zero cannot be written
Valid for commit 3b7f48d (v0.2.1) · checked 2026-10-21 · method reach-v0.1The published rules we follow: how tools are selected, how their rights are read and rated, how a lab run is done.
Limits and risks what the files say that fits nowhere else, and what this reading does not cover
- Without TIE_ALLOWED_SAFETY the server offers every tool, including write and destructive ones; a value such as read or read,write narrows the set. index.ts L32-37, src/index.ts#L32-37 at the checked commit
- The generator derives the safety tier from the tool-name prefix: get, list, search and export are read, delete and unstage are destructive, everything else is write. generate-tools.mjs L283-288, scripts/generate-tools.mjs#L283-288 at the checked commit
- get_api_key, which returns the API key of the current user, is in the read tier and stays available when TIE_ALLOWED_SAFETY is read. tools.ts L570-575, src/generated/tools.ts#L570-575 at the checked commit
- get_report_access_token, which returns the token used to pull data from Tenable Cloud, is in the read tier. tools.ts L4194-4198, src/generated/tools.ts#L4194-4198 at the checked commit
- The update_ldap_configuration body accepts url, searchUserDN and searchUserPassword, so a write-tier call can change how the TIE instance binds to LDAP. tools.ts L3500-3509, src/generated/tools.ts#L3500-3509 at the checked commit
- The syslog creation body requires ip, port, protocol and tls, so a write-tier call can make the TIE instance forward events to a host given in the call. tools.ts L4779-4788, src/generated/tools.ts#L4779-4788 at the checked commit
- The author states that a shared, centrally hosted instance would need the HTTP/SSE transport and a listening port, and that this is not implemented. README.md L305-311, README.md#L305-311 at the checked commit
- A troubleshooting note offers npm config set strict-ssl false, which turns off npm's certificate check, as a quick fix behind Netskope, with a warning. NETSKOPE_NPM_FIX.md L8-13, NETSKOPE_NPM_FIX.md#L8-13 at the checked commit
- The SAML configuration update body accepts enabled, providerLoginUrl and signatureCertificate, so a call can switch SAML sign-in to the TIE instance on and set its identity provider. tools.ts L4577-4586, src/generated/tools.ts#L4577-4586 at the checked commit
- The deviance update body (PATCH /ad-object-deviance-history/:id) takes one field, ignoreUntil, a date-time, and sets additionalProperties to false. tools.ts L1789-1798, src/generated/tools.ts#L1789-1798 at the checked commit
- The author's session handoff notes state that the Docker image was not build-verified. SESSION_HANDOFF.md L19, SESSION_HANDOFF.md#L19 at the checked commit
- Not covered: what it does at runtime. Other connections not ruled out: read in the documentation and the cited code, not searched in full.
What you need and what the documented installer does
| Kind | What |
|---|---|
| AI client | Any MCP client, Claude Code; sign-in: API key |
| Runtime | Node.js 18 or later. SETUP_GUIDE.md L7, SETUP_GUIDE.md#L7 at the checked commit |
| Credentials | A TIE API key, set in TIE_API_KEY. README.md L79, README.md#L79 at the checked commit |
| Account | A Tenable Identity Exposure instance; its URL goes into TIE_BASE_URL. README.md L78, README.md#L78 at the checked commit |
| Authorisation | The account behind the API key needs the permissions in TIE that the called operations require. SETUP_GUIDE.md L169-173, SETUP_GUIDE.md#L169-173 at the checked commit |
| Other | Each generated tool records the TIE product licence types its endpoint requires (licenseTypes). generate-tools.mjs L338, scripts/generate-tools.mjs#L338 at the checked commit |
What the documented installer does
- The recommended Option A starts the npm package tie-mcp-server through npx -y without a version pin. README.md L19-25, README.md#L19-25 at the checked commit
- Option B clones the repository and runs npm install, which also builds through the prepare script, then npm run build. README.md L30-35, README.md#L30-35 at the checked commit
- The Docker build runs npm install against a manifest without a lockfile, which the project gitignores. Dockerfile L7-10, Dockerfile#L7-10 at the checked commit
Lab runs one run is an observation, not a benchmark
About this entry
- Type
- MCP server · Defensive · works with Any MCP client, Claude Code
- Source
- github.com/taherkaraki/tie-mcp-server · MIT · manifest
package.json - Version readThe install command installs exactly the version we checked (the pinned git commit), so what you get is what the card describes.
- 3b7f48d · v0.2.1 · last upstream push 2026-07-28 · no release since the pinned commit (current v0.2.1)
- In the catalog
- listed · added 2026-10-21 · last checked 2026-10-21 · next check 2027-01-19 · fresh
- ScannersA scan of the tool's files with a scanner for malicious patterns. “Pending” means it has not run yet.
- cisco-skill-scanner: not run, pending
- Changes
- none since the entry was added on 2026-10-21
Disagree?
Dispute a value with evidence (file, line, commit): write to hello@readbeforerun.ai. A dispute is checked against the pinned commit; a changed value is logged under Changes.
How this entry was checked, and how to cite it
Selected by the published criteria (method v0.1). What the author says comes only from author statements; what the code shows comes from the code and manifests at commit 3b7f48d, each with one evidence line. A “?” means no evidence, never zero; zero never means safe.
The descriptive profile (what it does, can do, how it runs, what it needs) was read through the same isolated pipeline at commit 3b7f48d on 2026-10-25: one reader proposed every fact with a quoted line, a script confirmed each quoted line (50 of 50), and a second reader checked each sentence against its lines. Where nothing was found, the page says so instead of assuming “none”.
Known issues and limits: remote server-side behaviour stays “?”; the lab is not your production; static analysis can miss runtime behaviour.
Placement, badges or fast tracks are not for sale. The author is employed by an IT consultancy; the company has no influence on selection, execution or result.
Cite this:
Ilja Schlak. "Supercharged Tenable Identity Exposure MCP Server". Agentic Security Field Guide, checked 2026-10-21, method reach-v0.1. https://readbeforerun.ai/catalog/taherkaraki-tie-mcp-server/For maintainers
Badge for your README (reach 3 · not run yet):
[](https://readbeforerun.ai/catalog/taherkaraki-tie-mcp-server/)Dispute a value with evidence (file, line, commit): write to hello@readbeforerun.ai. A dispute is checked against the pinned commit; a changed value is logged under Changes.
Claim the entry with a fieldguide.yaml in your repository: planned.