Application Logs → Claude · with Query Streams
With Query Streams, ask Claude about your Application Logs file in plain English: the Agent already inside your network runs the SQL read-only, and no database password ever reaches the AI. About ten minutes, and the Free plan covers it.
Start free
What you’ll end up with
A Claude that can answer questions about your application log files with live, read-only queries over the tables the Agent builds from your files, and tell you which file each answer came from — without ever seeing a login or a file path, and without a firewall change: the Agent already inside your network reads the folder and sends back only the rows. Once the Agent is in place, connecting Claude takes about 90 seconds if you are comfortable with a settings screen. Like this:
What were the most common errors in the last hour, and which logger threw them?
Claude checks the columns of fileset.events. Then it runs one query that keeps error and fatal level values from the last hour of event_time and groups them by logger and message. The top three:
| level | logger | message |
|---|---|---|
| error | Payments.StripeClient | Charge failed: card_declined for order 88213 |
| error | OrderService | Timeout after 30000 ms calling inventory-svc |
| fatal | db.pool | Connection pool exhausted (max 20 connections) |
The exhausted pool would explain the timeouts in OrderService. Ask Claude for the full message and stack trace of the fatal event. It reads the same row, because the trace stayed with its event. The answer covers what the Agent had read at its last scan.
Break this week’s payment failures down by reason. Is it customers or us?
I parsed the decline reason out of message for Payments.StripeClient errors in fileset.events and compared with last week:
| Decline reason | Count | Share | vs last week |
|---|---|---|---|
| card_declined | 1,204 | 62% | +2% |
| insufficient_funds | 402 | 21% | −1% |
| api_timeout | 331 | 17% | +310% |
The first two are customers and are flat. api_timeout is us: it did not exist a fortnight ago, every one comes from host = web-03, and web-03 shows 30-second gaps in its own logs at the same moments. One unhealthy host, not the payment provider.
Rather not wire up an AI client at all? On the Business plan, Nova is the assistant built into Query Streams itself. It uses the same Agent toolset your AI client gets here, plus what an outside client does not: it drafts and validates the SQL against your Semantic Intelligence model, turns the answer into a chart, and saves the result as a query your team can run from Excel, Google Sheets or the REST API — no key, no connector, nothing to install. Use MCP when your people already live in Claude, Cursor or ChatGPT; use Nova when you want the answers inside the Portal.
Application Logs reads the JSON and text log files your apps write, from ECS, Serilog, pino or Bunyan json logs to plain text. It turns each event into a SQL row with its level, logger and message, and a stack trace stays with the event that produced it. The Agent tails each file as it grows, recognises rotated files so nothing is read twice, reads each .gz archive once, and backfills the last 30 days on first read.
What you’ll need
A Query Streams account
MCP is on every plan, including Free. Free allows one key or one connected app, which is all this guide needs. Sign up at my.querystreams.com.
The Agent on a computer that can open the folder
Version 2.6.0 or later. The folder can be on that computer or on a file share it can reach. The Agent runs as a service, so type shares as \\server\share\folder, not as a mapped drive letter. On Windows it can sign in to a share with a login you store; on Linux or a Mac, mount the share first (Linux under /mnt or /media, a Mac under /Volumes). New to the Agent? Install it on Windows, macOS or Linux.
MCP switched on for you
Creators, owners and admins have it from the start. Everyone else needs an admin to flip the MCP switch beside their name under Account → Access Control. Until then the MCP page says “MCP is disabled for your account”.
An AI client
Claude on the web, Claude Desktop or the Claude mobile apps connect with no key. Claude Code, Cursor, ChatGPT and about ten other tools work too; the Portal has a ready-made recipe for each.
Where does the work happen? On the computer that runs the Agent. It scans the folder, copies the rows into a local cache there, and runs the SQL Claude writes against that cache. The files themselves never leave that computer, and neither does anything Claude did not ask for.
Set it up in four steps
-
Point the Agent at the folder
In the portal open Data → Data Agents, find the Agent that can open the folder and click its Add connector button. Under the Files & Folders pill click the Application Logs card. The wizard then walks you through Folders, Check, Settings, Realm and Review:
- Folders
- Type the Root folders, one per line, as paths on the Agent’s computer. Scan subfolders is on, Max depth is 8. Include patterns starts with the right glob for this file type; add Exclude patterns if the folder holds files you do not want. A mapped drive letter shows an amber advisory: the Agent cannot see it, so use the
\\server\sharepath instead. - Check
- The Agent reads a sample of up to 64 files and shows what it will build. Nothing is created yet. Ready to create means every sampled file fits. An amber banner, “{n} of {m} file(s) will be set aside”, lists files that do not fit with Show which files and why; you can create the connector anyway and fix them later. If the folder mixes layouts, a blue panel offers Switch to one table per layout.
- Settings
- Scan interval (every hour by default, from every 5 minutes to daily) is how often the Agent looks for new, changed and vanished files. Watch folder for changes reacts within seconds on local disks. When a file vanishes is Drop its rows by default.
- Realm, Review
- Pick the Data Realm the rows count against, check the summary and click Create connector. The first scan starts right away; the connector’s Manifest tab shows what it built and any files it set aside.
- Add the folder your apps log to under Root folders.
- Pick a Log type. The card ships JSON lines (ECS, Serilog, pino and Bunyan), plain text with level, logger and message, and dpkg and apt history, which use
hostas the identity column. - Table name is optional and defaults to
events. Keep events for N days keeps everything unless you set it. - On Check, the Agent reads a sample and shows the file count, size, a row estimate and the tables it will build. Nothing is created yet. If the files do not look like the type you picked, the headline reads These files are not followed by that type, with the reason.
-
See what tables you get
Parsed events land in
fileset.events, or in the Table name you chose. The Agent keeps the rows in a local cache on the Agent computer and serves them as SQL. Every row says which file it came from in_source_file. The columns below come from the default JSON lines log type.Table What it holds eventsOne row per event: event_time,app,level,loggerandmessage, plushost,service,streamanddata. A multi-line stack trace stays in its event.events_raw_linesLines that did not parse, kept in linewith areason. A block longer than the limit lands here asrecord-max-lines. Nothing is dropped.filesEvery log file in the folder right now, with relative_path,size_bytesandmodified_utc.files_eventsThe history of each file: appeared,modified,rotated,truncatedanddriftrows, timed byevent_at.log_cursorsEach file’s read position and state. A set-aside file shows state parkedwith the reason inlast_error.Every folder connector also gives Claude the same bookkeeping tables, all in the
filesetschema:Table What it holds filesEvery file currently in the folder: path, name, extension, size, created and modified times. Ask “what is in this folder?” and Claude reads this. files_eventsThe change history: one row per file that appeared, was modified, vanished, or was set aside ( drift), with the time inevent_atand the reason indetail.directories,volumesFolder sizes and counts, and the disks or shares the roots live on. _source_file,_row_idTwo columns on every data row: which file the row came from, and a stable row id inside that file. Group by _source_fileto compare files. -
Connect Claude
Open Streams → Live → MCP. There are two ways in, and they end at the same place:
Chat apps · no keyclaude.ai, Claude Desktop, ChatGPT
In claude.ai and Claude Desktop, open the Query Streams listing in Anthropic’s Connectors Directory, click Connect and approve. Adding it by URL,
https://mcp.querystreams.com/mcp, is the fallback. In ChatGPT you add Query Streams from the app (developer mode for now) and sign in with Query Streams. Either way a Query Streams page opens: pick the organization and the permissions and click Approve connection. Nothing to copy. The connection appears on the Connections tab and can be revoked there.Developer tools · a keyClaude Code, Cursor, VS Code and friends
On the MCP page click Connect an AI client. The guide asks How will your AI client connect?: choose Use a key in a config file, pick your tool, then Generate a key for it: a Key name, Read and Run queries ticked, an Expiration (Never, 30 days, 90 days or 1 year). Set it up shows the snippet with the key filled in, and Check the connection waits for the first call.
Both ways use the same three permissions, which you choose on the consent screen or on the key:
- Read
- List connectors, browse tables and columns, read your saved queries and alert rules. Never returns row data.
- Run queries
- Run read-only SQL and saved queries through your Agent and return the rows. Without it your AI client can describe your data but not answer from it.
- Analyze
- Profile tables, discover relationships and queue a Semantic Intelligence run. Profiling and discovery are free; a Semantic Intelligence run spends Nova AI credits and data allowance, so the consent screen never pre-ticks it.
Lost the key? It is listed on the Connections tab: Reveal full key shows it again and Copy full key copies it. Revoke it there if a laptop goes missing; every client using it fails on its next call, within about five minutes.
Then pick the recipe for the Claude you use. The server address is the same everywhere:
https://mcp.querystreams.com/mcp.Claude on the web, Claude Desktop and mobile no key
- Open the Query Streams listing in Anthropic’s Connectors Directory and click Connect. In Desktop it then sits under + → Connectors.
- Fallback, if your organization hides directory connectors: Settings → Connectors → Add custom connector, name Query Streams, URL
https://mcp.querystreams.com/mcp, OAuth fields empty, Add; then in a chat + → Query Streams → Connect. - A Query Streams tab opens. Sign in if asked, pick the organization, review Read and Run queries, optionally Limit to specific connectors, and click Approve connection.
- Back in Claude you see “Connected to Query Streams”. The first time Claude uses a tool it asks; choose Always allow.
If you do add it by hand in Claude Desktop, use Settings → Connectors → Add, not the in-chat Add marketplace option, which expects a git repository. Connectors sync to your Claude account, so the mobile apps and Desktop pick it up automatically. Menu names are Anthropic’s and can move.
Claude Code key
One command, with your key from the Connections tab:
Terminalclaude mcp add --transport http querystreams https://mcp.querystreams.com/mcp \ --header "X-MCP-Key: qsmcp_PASTE_YOUR_KEY_HERE"
That writes the current project’s
.mcp.json. Add--scope userto have Query Streams in every project. Run/mcpinside Claude Code to see it connected.Cursor key
Open Cursor Settings → MCP → Add New MCP Server, or edit
.cursor/mcp.jsonat the root of your workspace:.cursor/mcp.json{ "mcpServers": { "querystreams": { "url": "https://mcp.querystreams.com/mcp", "headers": { "X-MCP-Key": "qsmcp_PASTE_YOUR_KEY_HERE" } } } }Restart Cursor or run MCP: Restart Servers; a
querystreamsbadge appears in the MCP status bar.Using something else? The Portal’s Connect an AI client guide has ready-to-paste recipes for ChatGPT, VS Code, Visual Studio, OpenAI Codex CLI, Gemini CLI, Windsurf, Zed, Cline, Continue.dev and JetBrains AI, plus a Paste & merge tool that drops the
querystreamsentry into a config file you already have. Any client that speaks MCP over HTTP works: serverhttps://mcp.querystreams.com/mcp, headerX-MCP-Key(anAuthorization: Bearerheader with the same key also works). -
Ask your first question
Start with something you can check by opening the folder, so you see Claude reach for the right table. Three that work well with your application log files:
- “Which application log files are you reading, and how big is each?”
- Claude queries
fileset.filesforrelative_path,size_bytesandmodified_utc. - “How many errors did each app log in the last hour, by level?”
- Claude groups
fileset.eventsbyappandlevel, filtered onevent_time. - “Which lines could not be parsed, and why?”
- Claude reads
fileset.events_raw_linesand groups the lines byreason, with a few examples of each.
To confirm the wiring, ask “What Query Streams connectors do I have?”. Claude calls
qs_list_connectors, the Portal guide’s Check the connection step says Connected, and the key or app on the Connections tab shows its Last used time within a few seconds.
That’s it. Drop a new file in the folder and, after the next scan, Claude can answer from it. The files never left the computer they were on, and nobody typed a password into an AI.
Reaching a file on a network share
The Agent opens files as a background service, not as you, so a file on another computer needs one extra step. Which step depends on the computer the Agent runs on.
If the test cannot get to the share, look for these words in its result: unreachable means the Agent’s computer got no answer from the server. On Linux or a Mac, not mounted means the share still has to be mounted, and that message includes the exact mount command for your server.
Folders on a share? On Windows, one login covers every folder you add from the same server. Watch folder for changes works on a share too, on a best-effort basis; the scheduled scan is what guarantees every change is picked up.
How new, changed and deleted files show up
New and changed files
On every Scan interval the Agent compares each file’s size and modified time with its ledger. A new file that fits is added; a changed file is re-read whole, so a table never holds two versions of one file. Turn on Watch folder for changes to react within seconds on a local disk.
Deleted files
A file that vanishes drops its rows, unless you chose Keep rows, mark deleted. If a share goes offline and most files vanish at once, the Agent keeps the last good inventory instead of deleting everything.
Set-aside files
A file that does not fit the layout, cannot be opened, or is locked is set aside: none of its rows load, and files_events records which file and why. It is retried automatically the next time it changes. There is no Rescan button.
What Claude sees
The data as of the last scan. No MCP tool triggers a scan, so ask “when was this last updated?” and Claude reads the latest event_at in files_events for you.
What Claude can do once connected
Your AI client sees the Query Streams tools; it picks the right one for your question. The Portal’s Tools tab lists every tool and mode with what your plan includes. Query Streams asks your AI client to read the columns of each table before it queries, so it writes the real names instead of guessing. On every plan, Free included:
Map your data
Connectors, databases and Agents; the tables and columns of your Application Logs file with descriptions, sample values and joins once Semantic Intelligence has run.
Profile and explore
Profile a column before filtering on it; discover joins nobody declared. Live runs need Analyze.
Run read-only SQL
A SELECT in the right dialect for Application Logs, 60 seconds by default and five minutes at most. Your plan sets the most rows one query returns. (Run queries)
Saved queries, federated and alerts
Run the saved queries your team trusts with new values; federated ones come back already joined. Read alert rules and draft one as a dry run.
The Analytic toolset. On paid plans the Agent does the groundwork where your Application Logs file lives, so your AI client spends its attention on the thinking. Free works as it always has.
Context management
Personal Core and upSize a result before reading it (shape), walk a large database area by area (levels), and keep answers inside a token budget with only the columns and cell lengths it needs.
Result analysis
Personal Core and upA profile of the whole result instead of rows. Held results with labels answer follow-ups and group-by totals with no second query. Data freshness and changed-since read only what is new.
The defaults live on the Context tab: text cell limit, schema view, result size, analysis defaults and held results.
The tool names, if you want to recognise them in your AI client’s replies
| Permission | Tools |
|---|---|
| Read | qs_list_organizations qs_list_agents qs_list_connectors qs_get_si_status qs_get_connector_schema qs_find_tables qs_get_table_schema qs_get_relationships qs_profile_table qs_discover_relationships qs_list_saved_queries qs_alerts qs_result (op=windows) |
| Analyze | qs_request_si_analysis qs_setup_si qs_get_task_status, listed only to keys with Analyze; live runs of qs_profile_table and qs_discover_relationships |
| Run queries | qs_run_query qs_run_saved_query qs_data_freshness qs_result (every other op) qs_result_release qs_create_alert_rule (proposes only) |
Why Semantic Intelligence matters here
Every answer Claude receives is tagged with where the structure came from, and Claude adjusts how much it trusts what it sees.
| Tier | What Claude sees | Result |
|---|---|---|
| Semantic Intelligence | Descriptions for every table and column, sample values, enum meanings, declared and discovered joins. | Claude writes the right Application Logs SQL first time and explains the data in your business terms. |
| Captured schema | Table and column names, types, keys. | Claude works, but infers meaning from names and may ask a follow-up. |
| Live schema | The database is outside the connector’s capture selection, so structure is read live on each request (needs the Run queries permission; SQL Server, MySQL and PostgreSQL). | Queries still run. Claude explores with small selects when it needs more. |
If a database matters, run Semantic Intelligence on it once from Nova → Intelligence. The Connections tab shows a coverage panel per connector. How Semantic Intelligence works.
What the plans allow
MCP is on every plan, including Free, with no separate fee. What each plan sets is how many keys or connected apps you can hold and how many calls a minute your AI client may make:
| Plan | Keys per user | Keys per organization | Calls per minute |
|---|---|---|---|
| Free | 1 | 1 | 30 |
| Personal Core | 1 | 1 | 60 |
| Personal Plus | 1 | 1 | 90 |
| Business Core | 2 | 3 | 120 |
| Business Plus | 3 | 5 | 150 |
| Business Max | 5 | 10 | 240 |
| Enterprise Core | 5 | 25 | 300 |
| Enterprise Plus | 8 | 50 | 450 |
| Enterprise Max | 10 | 100 | 600 |
A connected app counts as a key. On top of the per-minute figure, any one key may run at most 10 queries a minute. A query runs for up to 60 seconds unless your AI client asks for more, up to five minutes. Your plan also sets how many rows one query returns and, with the Analytic toolset, how long and how large a held result may be; the full MCP guide lists every plan. What your AI client receives counts against your Data Realm allowance, the same pool your Excel and Sheets queries use: AI-agent (MCP) usage counts every byte delivered to your AI client, results, schema reads and held-result pages alike, before any transport compression your client negotiates, where spreadsheet queries count the compressed result your Network Agent delivers. Semantic Intelligence runs started from your AI client spend Nova AI credits, exactly as they do from the Portal. See the pricing page for the allowances.
Keeping it safe
Read-only, checked by the Agent
Only SELECT statements run. The check happens on the computer that runs the Agent, before your Application Logs file sees the SQL, so nothing your AI client writes can change data.
No credentials in the AI
The Application Logs login stays on the Agent. Claude holds a Query Streams key or connection, which you can revoke from the MCP page; the change takes effect within about five minutes.
Everything is logged
Every tool call appears on the MCP Activity tab and every query in Query History as client type MCP, attributed to the person whose key or connection made it. The SQL text and the key itself are never written to the activity log.
What the AI provider receives
Table and column names, the Semantic Intelligence descriptions including sample values, and the rows of the queries you ask for. With the Analytic toolset it often gets a size estimate, a profile or a held-result answer instead, and the full result stays with the Agent. What it gets goes to the AI provider you connected, under its terms. Query Streams never sees your chat.
Good next moves
- Turn on Watch folder for changes (near real-time) to pick up new lines within seconds on a local disk. The scheduled scan stays the guarantee.
- Set Keep events for N days to control how much history stays in the cache. Application Logs keeps everything unless you set it.
- Use Custom Log Folder if your format is not in the Log type list. You can describe the format yourself, or open a support request and we add it within a few days.
When something doesn’t work
| What you see | What it means | Fix |
|---|---|---|
| Your AI client shows no Query Streams tools | The connector was added but never connected, or the key was pasted into the wrong place. | In Claude: + → Query Streams → Connect. In a developer tool: restart it, then use Check the connection in the Portal guide. |
MCP_KEY_REQUIRED or 401 | No key reached the server, usually a stray newline from copy and paste or the key in the wrong header. | Copy the key again from the Connections tab and send it in the X-MCP-Key header. |
MCP_USER_DISABLED | An admin switched MCP off for your user. | Ask them to turn the MCP switch back on under Account → Access Control. |
MCP_SCOPE_REQUIRED or MCP_SCOPE_DENIED | The key or connection lacks the permission for that action, usually Run queries. | Edit the key on the Connections tab and tick Run queries, or reconnect the app and approve it. |
MCP_KEY_ORG_LIMIT_EXCEEDED | Your plan’s key limit is used up. On Free that is one key or one connected app. | Revoke one you no longer use, or move up a plan. |
MCP_AGENT_NOT_CONNECTED or MCP_AGENT_NOT_REGISTERED | The Agent that owns your Application Logs file is not connected right now. | Open Data → Data Agents and start the Agent on its computer. |
MCP_DATABASE_NOT_CAPTURED | The database is outside the connector’s capture selection, so there is no stored schema or Semantic Intelligence for it. Queries still work. | Add it to the capture selection on the connector, then run Semantic Intelligence if you want richer answers. |
MCP_RATE_LIMITED | Too many calls a minute for your plan, or more than 10 query runs a minute on one key. | Wait a moment. Semantic Intelligence lets Claude answer in fewer calls. |
MCP_QUERY_TIMEOUT or MCP_OUTPUT_TOO_LARGE | The query ran past its timeout or returned more than your AI client can take in one reply. | Ask for fewer rows or columns, or a date filter. On plans with Context management, ask it to size the result first. |
MCP_DATA_REALM_EXHAUSTED | Your organization’s data allowance for the period is used up. | Wait for the allowance to reset or top it up from the Portal. |
MCP_FEATURE_NOT_INCLUDED | Your plan does not include Context management, Result analysis or Deeper analysis, or that tool is switched off for this key or organization. | Ask your AI client to carry on without it, move up a plan, or ask an admin to switch the tool on. |
MCP_RESULT_EXPIRED | The held result is no longer held: it expired, was released (sometimes early, to make room for a newer one) or the Agent restarted. | Ask your AI client to run the query again with hold. |
MCP_WINDOW_BUDGET | The Agent cannot keep a result that size right now, or a follow-up needs more memory than it allows. | Release a held result, or narrow the query with a filter or fewer columns. |
MCP_AGENT_ANALYSIS_DISABLED | Held results and analysis are switched off on that Agent or connector. | Ask an admin to turn on Local analysis on the Data Agents page, or allow analysis on the connector. |
MCP_WINDOW_SQL_REJECTED | A follow-up was not one read-only SELECT over the held result, or named a column the result does not have. | Ask for one SELECT over that result, using its column names. |
MCP_AGENT_VERSION_TOO_OLD | The Agent needs an update before it can shape, profile, hold or analyze results. | Update the Agent from Data → Data Agents; plain queries keep working meanwhile. |
| Read-only violation | The SQL was not a SELECT. | By design. Nothing writes through MCP. |
Questions people ask
Do stack traces become separate rows?
No. A stack trace stays in the event that produced it, so one error is one row with the full trace. A block longer than the record limit is kept in events_raw_lines with the reason record-max-lines, so nothing is lost.
How soon does a new log line reach Claude?
On the next scan. The Agent checks the folder on the Scan interval, every hour by default. Turn on Watch folder for changes (near real-time) to react within seconds on a local disk. Claude answers from what the Agent has already cached, so it sees the data as of the last scan.
Where do I see a log file that was set aside?
Open the connector’s Files dialog. It lists each log file, and a set-aside file shows as parked with the reason. With the Agent offline, the dialog shows a snapshot of up to 50 files. Claude can find the same rows in log_cursors.
Does Claude read my files?
No. The Agent reads them on its own computer and keeps the rows in a local cache there. Claude sends SQL to Query Streams, the Agent runs it against that cache, and only the rows the question needs travel back. Claude never opens a file and cannot change, move or delete one.
Do I need to open a port or run a VPN?
No. The Agent makes one outbound connection on port 443 and both requests and rows travel over it. If outbound HTTPS works, this works.
Can the folder be on a network share, or in OneDrive or Dropbox?
A share works as long as the Agent’s computer can open it; type it as \\server\share\folder, because the Agent runs as a service and cannot see drives mapped at your login. On Windows, add the share login from the folder’s Credential column if the share lets in only named people; on Linux or a Mac, mount the share first (stored logins are not used there). For a synced cloud folder, set it to keep files on this device; the Agent skips cloud placeholder files.
Does the Free plan really cover this?
Yes. Free is a plan you keep, not a trial that expires. MCP is included on every plan; Free allows one key or one connected app and 30 calls a minute. Folder connectors have no file cap of their own. See exactly what Free includes on the pricing page.
Which AI tools work besides Claude?
Anything that speaks MCP over HTTP: ChatGPT, Cursor, VS Code with Copilot, Visual Studio, OpenAI Codex CLI, Gemini CLI, Windsurf, Zed, Cline, Continue.dev and JetBrains AI all have a ready-made recipe in the Portal’s Connect an AI client guide.
Related guides
Every guide for App Logs
Not quite your setup?
- Are these Docker container logs? Container Logs adds the container name and Docker's own timestamps → Container Logs
- Is your log format not one of the ready-made log types? Custom Log Folder lets you describe the format yourself → Custom Logs
- Are your JSON-lines files data exports rather than logs? JSONL Folder turns every field into its own column → JSONL Folder
- Are these Caddy or other web server access logs? Web Server Logs turns each request into a row with path and status → Web Logs
Setup trouble?
- Agent says the file or folder does not exist, or access is denied? Mapped drives, network shares, OneDrive and Linux home folders each need one fix → Where the Agent can read files from
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?


