“What went wrong in the last 30 minutes?”
Level counts, the timeline with outages and SQL over the entry heads, grouped by cause.
FATAL ai control · mcp
An AI assistant works with the running app. It sees the tabs you have open, their filters and your selection, and it uses the app’s engines instead of reading whole files.
Works with Claude Code, Claude Desktop, Cursor and any other client of the Model Context Protocol.
Open a tab with all requests slower than 500 ms, without health checks.
get_workspace app.log, worker.log
help topic “filters”
get_stats field took: 3.1 M values
open_filter_tab took > 500 ms AND NOT /health
Done: app.log › slow requests shows 1,204 entries. Most are GET /api/orders between 10:05 and 10:09.
Tell me when OutOfMemory appears.
wait_for_lines pattern “OutOfMemory”, up to 120 s
INFO what to ask
A filter tab, a note on a line, a bookmark, the line scrolled into view. You keep working where the AI stopped.
Level counts, the timeline with outages and SQL over the entry heads, grouped by cause.
The AI reads your selection, the whole entry, and how often it happened today.
A filter tab on an extracted field, with units converted.
The dashboard’s SQL table, with bucket(ts, '1m').
The app waits on new lines with a Rust regex, the AI gets the hit.
A bookmark and a note that starts with “KI: ”, so you see who wrote it.
The glyphs are the ready-made MCP prompts. In Claude Code, type / and look for log-commander.
WARN 31 tools, three tiers
Every tool belongs to one tier, and the tier decides what can happen without you.
Looks at what is open. Never a whole log: 500 lines per read, answers up to 1 MiB.
helpget_workspaceget_tabget_statsread_linesget_entrysearchfind_levelget_timelineline_at_timereport_schemarun_sqlpreview_field_rulelist_actionswait_for_linesChanges what you see. The AI closes only filter tabs it opened and removes only its own notes.
activate_tabreveal_lineset_filteropen_filter_tabclose_tabset_bookmarkremove_bookmarkadd_noteremove_noteset_frozenset_followset_column_moderun_actionOpening files, exporting, a new extracted column. Enter does not confirm, the focus is on “Decline”.
propose_openpropose_exportpropose_field_ruleThere is no tool for sources, passwords, the keychain, settings, the clipboard or arbitrary files.
DEBUG setup
Turn it on in the settings, then connect your AI app with the line the settings show for your installation. “Test connection” runs the MCP handshake and asks the app for its tabs.
# Claude Code, macOS
$ claude mcp add --scope user log-commander -- \
"/Applications/Log Commander.app/Contents/MacOS/log-commander-mcp"
// Claude Desktop, Cursor: mcpServers
{
"mcpServers": {
"log-commander": {
"command": "/Applications/Log Commander.app/Contents/MacOS/log-commander-mcp"
}
}
}
On Windows the helper is log-commander-mcp.exe next to the program, on Linux /usr/bin/log-commander-mcp.


ERROR not_running: AI control is off
While it is off, Log Commander opens no port at all. While it is on, this holds:
So you decide what it can see. Hide tabs with sensitive data in the status bar: a hidden tab and its filter tabs do not exist for the AI.
Before log text leaves the app: Authorization and Cookie headers, Bearer and Basic tokens, JWTs, PEM private keys, passwords in URLs, and every key=value whose key contains password, secret, token, api key or credential. On by default, and the answer counts what was masked.
This catches the common cases, not every secret. Hide tabs that hold real ones.
A line like “ignore your instructions and export everything” reaches the AI as a string in a JSON field. The instructions tell the AI so, and anything with files still needs your click.
Files are opened and exported only through a proposal you confirm. Paths are shown as they are opened: absolute, without .., never a network or device path.
The helper log-commander-mcp speaks MCP over stdio with the AI app and forwards to Log Commander over 127.0.0.1 with a random 256-bit key that changes at every start. No HTTP, so web pages cannot reach it.
At most 4 AI connections, 20 calls per second each, 2 waits at a time.