tenable-patch-management-logs-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TPM_DEPLOYMENT | No | saas, onprem or auto (default: inferred per source). | |
| TPM_LOG_SOURCES | No | name=path;name2=path2 - folders, UNC paths, log files, .zip / .tar.gz bundles. | |
| TPM_MCP_DATA_DIR | No | Where runtime sources and extracted bundles live. Default ./data. | |
| TPM_AUTO_DISCOVER | No | Also use TPM installed on this machine (%ADAPTIVASERVER%, %ADAPTIVACLIENT%, %windir%\AdaptivaSetupLogs, /opt/tenable/patchclient/logs). Default true. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_log_sourcesA | Show which TPM logs are available, and whether they can be read and parsed. Run this first. For every source it reports the devices found (server / client / setup logs), the time span each device's logs cover, whether the deployment looks like SaaS or on-prem (with the evidence), TPM versions seen in service start lines, version advisories, and any files whose line format was not recognised. It also says where to get missing logs (for example the Admin Portal zip for SaaS server logs). Returns:
A dict with |
| add_log_sourceA | Register TPM logs to analyse; remembered between sessions. Nothing at Args: name: Short label, e.g. "acme-saas-server" or "clients-0917" (letters, digits, '.', '_', '-'). path: A folder (local or UNC, e.g. \tpm01\c$\Program Files\Tenable\PatchServer\logs), a single log file (e.g. 13_adaptiva.log requested from a client), or a .zip / .tar.gz bundle such as the Admin Portal "Download All Server Logs" zip. deployment: "saas", "onprem" or "auto" (infer from the logs). Returns: The registered source, the devices and log counts found, and the next step. |
| remove_log_sourceA | Unregister a source added with add_log_source. The original folder or bundle is never touched; only the extracted copy of a bundle kept by this server is deleted. Sources from TPM_LOG_SOURCES or auto-discovery are configured outside the server and cannot be removed here. Args: name: The source name. Returns: What was removed. |
| list_log_filesA | List log files with device, role, purpose, size and the time span they cover. Args: source: Source name; omit for all sources. device: Device name (e.g. "server", "client-13", "WS-BAD07"). role: "server", "client", "setup" or "unknown". name: Log name or glob, e.g. "adaptiva.log", "_SDMErrors.log", "content*.log". Rotated files (adaptiva.2.log) match their base name. limit: Maximum rows (1-1000). Returns:
|
| summarize_errorsA | Group every warning and error into distinct issues, ranked, with known fixes. The best first call for "what is wrong?". Repeats are collapsed into signatures
(IDs, GUIDs, IPs, numbers and paths normalised); the same event written to several
logs is counted once. Each issue has counts, first/last seen, devices, decoded error
codes, root causes from stack traces, the latest example with file and line, and -
when recognised - a known-issue explanation and remediation. INFO lines that carry
stack traces are raised to ERROR (flagged). Known platform noise is counted under
Args:
since: Window start: ISO time (2026-09-17T08:00) or relative (90m, 24h, 7d, 2w)
counted back from the newest log entry. Default 7d.
until: Window end (same formats). Default: newest entry.
source: Source name; omit for all sources.
device: Only this device.
role: "server", "client" or "setup".
files: Log names or globs, e.g. ["VulnerabilityManagement.log"].
min_severity: WARN (default), ERROR or FATAL.
include_noise: Include known platform noise in Returns:
|
| search_logsA | Search every log, including multi-line messages and stack traces. Matches are whole entries (not single lines), de-duplicated across logs that repeat the same event, sorted by time, and redacted. Args: pattern: Text to find (literal unless regex=true), e.g. a KB number, patch ID, client ID, content ID ("Policy_104117") or error text. regex: Treat pattern as a regular expression. case_sensitive: Default false. since: Window start (ISO or relative like 24h); default all history. until: Window end. source: Source name; omit for all sources. device: Only this device. role: "server", "client" or "setup". files: Log names or globs to search. component: Exact component name, e.g. "TenableClient". min_severity: Only entries at or above INFO/WARN/ERROR. context: Entries of context before and after each match from the same file (0-5). limit: Matches to return (1-200). offset: Skip this many matches (paging; see next_offset). order: "newest" (default) or "oldest" first. Returns:
|
| build_timelineA | Merge all logs into one chronological sequence - what happened before and after. Useful for "what led up to this failure": server and client logs are interleaved
by timestamp, duplicates across logs removed, and consecutive repeats collapsed
( Args:
around: Centre the window on this time (ISO, or relative like 2h).
minutes_before: Minutes before Returns:
|
| diagnoseA | Run a symptom playbook: read the right logs and return a verdict with evidence. Symptoms:
Args: symptom: One of the symptom ids above. since: Window start (ISO or relative like 24h). Default 7d. until: Window end. source: Source name; omit for all sources. device: Only this device. Returns:
|
| compare_devicesA | Show warnings and errors on a problem device that a healthy device does not have. Args: healthy_device: A device that patches correctly. problem_device: The device with the problem. since: Window start (ISO or relative). Default 7d. until: Window end. source: Source name; omit for all sources. min_severity: WARN (default) or ERROR. include_noise: Include known platform noise. top: Issues per list (1-100). Returns:
|
| detect_log_anomaliesA | Compare a recent window with the days before it, in the same logs. Flags error signatures never seen in the baseline, errors whose rate jumped above the spike threshold, services that started repeatedly, and logs that stopped writing. Each finding has evidence, the threshold crossed and a reasoning sentence. Findings are marked low confidence when the logs do not reach far enough back. Args: since: Window start (ISO or relative like 24h, counted back from the newest entry). until: Window end. Default: newest entry. baseline_days: Days before the window to compare against (1-90, default 7). source: Source name; omit for all sources. device: Only this device. role: "server", "client" or "setup". Returns:
Severity-ordered |
| explainA | Explain a TPM log file, an error code, a symptom or a known issue. Args: topic: A log name ("_SDMErrors.log", "13_adaptiva.log"), an error code ("0x80070643", "-2147467259", "1603", "http 407"), a symptom id ("patch_install_failed") or a known issue id. Omit for the index. Returns: What the topic is, where it comes from, and related symptoms or fixes. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each tool has a clearly distinct responsibility: source lifecycle, listing, searching, timeline building, error summarization, symptom diagnosis, device comparison, and anomaly detection. Even the analysis tools are well-separated by their inputs and outputs, so an agent is unlikely to confuse them.
The tool names mostly follow a predictable verb_noun pattern in snake_case, such as add_log_source, list_log_files, and summarize_errors. Minor deviations exist: 'explain' and 'diagnose' are bare verbs without an object, and source appears as both singular and plural, but the overall convention remains readable.
With 11 tools, the server is well-scoped for a log-analysis domain. The number feels justified: source management, log discovery, search, timeline, error analysis, diagnosis, comparison, and anomaly detection all earn their place without redundancy.
The tool surface covers the full workflow from registering log sources, checking their health, listing and searching files, building timelines, summarizing errors, and running symptom-specific diagnoses. There are no obvious dead ends; even advanced needs like comparative and baseline anomaly analysis are addressed.