Repository navigation
Releases: certinia/debug-log-analyzer-mcp
Releases · certinia/debug-log-analyzer-mcp
Release list
2.0.1: Renamed tools, deeper analysis, and faster leaner responses
Immutable
release. Only release title and notes can be modified.
What's Changed
Upgrading from 1.x? Every tool is renamed, and --allowed-orgs is gone. See Migrating from 1.x.
Added
- Report where the time went by debug log category, with the level each category was captured at, and governor limits by namespace, in
apexlog_get_summary(#62, #86, #108, #191) - Report the debug level each debug log category was captured at, in
apexlog_list_slow_operationsandapexlog_list_limit_risks, so you can see what the log did not contain (#102, #138) - Report what ended a failed transaction, with its exception message, and which debug log categories the platform truncated, in
apexlog_get_summary(#97, #100) - Group operations in
apexlog_list_slow_operationsby namespace, caller namespace or debug log category, so you can see which package or which kind of work the time went to (#101, #126, #127, #131, #138) - Rank operations by the heap they retain in
apexlog_list_slow_operations, not only by time (#99, #127, #138) - Return the query optimiser's plan for each query
apexlog_list_slow_operationsranked (#120) - Report progress while
apexlog_execute_anonymousconnects, sets the trace flag, runs and writes, and report when the org logged at levels other than the ones asked for (#65) - Add
--no-apex-execution, which stopsapexlog_execute_anonymousrunning Apex while the log analysis tools keep working (#52) - Support the 2026-07-28 protocol revision - clients on the 2025 revisions keep working (#103)
Changed
- Breaking: rename every tool with an
apexlog_prefix -analyze_apex_log_performanceis nowapexlog_list_slow_operations. Update your permission lists and prompts; the full mapping is in Migrating from 1.x (#107) - Breaking: refuse to run Apex from
apexlog_execute_anonymousfor production orgs or orgs whose type cannot be determined, unless you confirm. Clients name the org and show the Apex. Allow with--allow-production-orgs. Sandbox, scratch, trial and Developer orgs run unprompted (#52, #93) - Rank every timed operation by self time in one
apexlog_list_slow_operationslist - queries, DML, callouts and the rest, not only methods, with repeats of the same name folded into one row, whereanalyze_apex_log_performancelisted the ten slowest single method calls (#86, #97, #108, #126) - Report all thirteen governor limits in
apexlog_get_summary, zeros included where 1.x reported only those above zero, and state each limit's unit (#62, #86, #108, #167) - Report the limits nearest their ceiling in
apexlog_list_limit_risksas one table, beside the threshold that selected it, in place of the four overlapping sections offind_performance_bottlenecks(#108) - Cut tool responses with no fact lost -
apexlog_list_limit_risksby 58%, andapexlog_list_slow_operations~2.2× smaller, returning fewer rows than asked for where the page would be too large, and stating how many rows matched (#63, #97, #108, #109, #120, #138) - Reduce the tool definitions token cost on every request by 19%, ~1,529 to ~1,232. Clients can also cache them for an hour (#87, #94, #99, #101, #103, #126, #127, #138, #188, #189)
- Start the server in 55 ms, down from 290 ms, and answer a second question about the same log without parsing it again (#88, #165)
Fixed
- Fix incorrectly reported timings for callouts in
apexlog_list_slow_operations, which were counted in the calling method's self time (#97, #138) - Fix understated governor limit usage in
apexlog_get_summaryandapexlog_list_limit_risks, which reported the usage the transaction ended on rather than its peak (#97) - Fix the understated log size in
apexlog_get_summaryfor a log holding non-ASCII characters - Return the debug log of the run
apexlog_execute_anonymousmade, where the newest log for the user could be another process's (#65) - Return an absolute log path from
apexlog_execute_anonymous, and warn whenoutputDirresolves outside every folder the client opened (#109) - Name the real reason a log file cannot be opened - a permission error used to read as "Log file not found" (#109)
- Mark
apexlog_execute_anonymousdestructive, so clients stop running it unprompted (#52)
Removed
- Breaking: remove
--allowed-orgsand its special tokens - the flag is accepted, ignored and warns, and the org's type decides instead (#52) - Breaking: drop Node.js 20 (end of life April 2026) - Node.js 22 is the minimum
- Remove the canned recommendations of
analyze_apex_log_performance- an agent advises better from the numbers (#86)
New Contributors
- @lukecotter made their first contribution in #84
Full Changelog: 1.0.0...2.0.1
2.0.0-beta.2
Immutable
release. Only release title and notes can be modified.
What's Changed
Fixed
- Fix the understated size of a log holding non-ASCII characters, and the heap a row retains where the code freed memory, on apex-log-parser 0.1.1
Full Changelog: 2.0.0-beta.1...2.0.0-beta.2
2.0.0-beta.1
Immutable
release. Only release title and notes can be modified.
What's Changed
Upgrading from 1.x? Every tool is renamed, and --allowed-orgs is gone. See Migrating from 1.x.
Added
apexlog_list_slow_operationsfolds repeat calls into one row - by name, bycallerNamespace, or by debug log category - each row totalling what the transaction saves if the group never runs, so the rows do not add up ([#101], [#126], [#127], [#131], [#138])apexlog_list_slow_operationssorts by an operation's net heap allocation, not only time (sortBy: "heapSelfNetBytes") ([#99], [#127], [#138])apexlog_list_slow_operationsreturns the query optimiser's plan for each query it ranked ([#120])apexlog_list_slow_operationsreturnsmatchedCount, so you can tell whether the page hid rows ([#63])apexlog_list_slow_operationsandapexlog_list_limit_risksreport the level each debug log category was logged at ([#102], [#138])apexlog_execute_anonymousreports progress, and says when the org logged at levels other than the ones asked for ([#65])--no-apex-executionstopsapexlog_execute_anonymousrunning Apex, while the log analysis tools keep working ([#52])
Changed
- Breaking: rename every tool with an
apexlog_prefix:analyze_apex_log_performanceis nowapexlog_list_slow_operations. Full mapping in Migrating from 1.x ([#107]) - Breaking:
apexlog_execute_anonymousrefuses a production org, or one it cannot classify, unless you confirm the run or set--allow-production-orgs([#52], [#93]) apexlog_list_slow_operationsranks every timed operation by self time - a callout or a query as well as a method - in place of the five lists and the prose advice ofanalyze_apex_log_performance([#86], [#97], [#108], [#126])apexlog_get_summaryreports all thirteen governor limits, zeros included, plus time by category and limits by namespace, so a managed package spending your CPU time is visible ([#62], [#86], [#108])apexlog_get_summaryandapexlog_list_limit_risksreport each governor limit's peak, not the figure the transaction ended on ([#97])apexlog_list_limit_risksreturns one table of the limits nearest their ceiling, covering thirteen wherefind_performance_bottleneckscovered six ([#108])apexlog_get_summarysays whether the log was truncated, by what, and how much it skipped ([#100])apexlog_list_slow_operationsrenames its parameters and row fields -topMethodsis nowlimit,minDurationisminSelfMs, andkindis the platform's debug log category and event type,database,SOQL_EXECUTE_BEGIN- and takes a list in every filter ([#86], [#97], [#108], [#138])apexlog_execute_anonymousrenamessuccesstosucceeded, and reports a duration that agrees withapexlog_get_summary([#65], [#109])apexlog_list_slow_operationscaps a response by size, not by row count, so one huge log cannot flood the reply: the biggest of 124 real logs returns 15,511 tokens, down from 35,520 ([#108])- Cut tool responses with no fact lost -
apexlog_list_limit_risksby 54%,apexlog_execute_anonymousby 30%.apexlog_get_summarycosts 24% more, for the two tables it gained ([#62], [#86], [#97], [#108], [#109], [#120], [#138]) - Cut the cost of having the server connected by 9%, and let a client cache the tool definitions for an hour, though
apexlog_list_slow_operationscosts 145% more for what it now selects and ranks ([#87], [#94], [#99], [#101], [#103], [#126], [#127], [#138]) - The server starts in 55 ms, down from 290 ms, and reuses the log it parsed, so a second question about the same file skips the parse ([#88], [#165])
Fixed
apexlog_execute_anonymousreturns the log for the Apex you ran, not the newest log for the user ([#65])apexlog_execute_anonymousreturns an absolute log path, and warns whenoutputDirlands outside the folders the client opened ([#109])- The log analysis tools name the real reason a log file cannot be opened. A permission error used to read as "Log file not found" ([#109])
apexlog_execute_anonymousis marked destructive, so clients stop running it unprompted ([#52])
Removed
- Breaking: remove
--allowed-orgsand its special tokens. The flag is accepted, ignored and warns, and the org's type decides instead ([#52]) - Breaking: drop Node.js 20 (end of life April 2026). Minimum node version is 22
New Contributors
- @lukecotter made their first contribution in #84
Full Changelog: 1.0.0...2.0.0-beta.0
1.0.0: Performance analysis, log summaries, bottleneck detection, and anonymous Apex execution with org allowlists and configurable debug levels...
What's Changed
Added
- Performance Analysis (analyze_apex_log_performance) - Feed in a debug log and instantly see which methods are the slowest. See execution times, SOQL/DML counts, and SOSL queries. All durations in milliseconds. Includes log size, debug levels, and thrown exception count.
- Log Summaries (get_apex_log_summary) - Get a debug log summary. Total execution time, method count, governor limit usage (all limits with usage > 0), and log issues as structured {type, summary} objects.
- Bottleneck Detection (find_performance_bottlenecks) - Detects CPU, database and method performance issues by type so you know exactly what to focus on. Empty sections are omitted for cleaner responses.
- Anonymous Apex Execution (execute_anonymous) - Run Apex against any Salesforce org. The debug log is saved to a local file (default: .apex-log-mcp/ in the project root) and a summary with the file path is returned. Use the file path with the analysis tools for deeper investigation. Specify a target org by alias or username, or use the project default.
- Org allowlist (--allowed-orgs) — Disabled by default, must be explicitly enabled. Supports special tokens: ALLOW_ALL_ORGS (permit any org), DEFAULT_TARGET_ORG and DEFAULT_TARGET_DEV_HUB (resolve from Salesforce CLI config). Aliases in the allowlist are resolved to usernames for matching.
- Debug levels — Configurable via the debugLevel parameter. Set all categories at once (e.g. "FINEST"), reset to defaults, or override specific categories like apexCode, database, and nba.
- Output directory — Configurable via the outputDir parameter. Defaults to .apex-log-mcp/ in the project root.
New Contributors
- @ntaylorcertinia made their first contribution in #1
- @pballcertinia made their first contribution in #13
- @mfakhoricertinia made their first contribution in #12
- @lcottercertinia made their first contribution in #22
Full Changelog: https://github.com/certinia/debug-log-analyzer-mcp/commits/1.0.0