Log Analyzer MCP
Integrates with Codecov for displaying code coverage badges and reporting test coverage metrics for the log analyzer project.
Uses .env files for configuration management, allowing users to set log directories, patterns, context lines, and other analysis parameters through environment variables.
Integrates with GitHub for continuous integration workflows, automated testing, and project hosting.
Publishes and distributes the log-analyzer-mcp package through PyPI, enabling installation via pip and version management.
Built as a Python-based toolkit requiring Python 3.9+, providing log parsing, searching, filtering capabilities through both CLI and MCP server interfaces.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Log Analyzer MCPanalyze test logs from the last hour for errors"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Log Analyzer MCP
Overview: Analyze Logs with Ease
Log Analyzer MCP is a powerful Python-based toolkit designed to streamline the way you interact with log files. Whether you're debugging complex applications, monitoring test runs, or simply trying to make sense of verbose log outputs, this tool provides both a Command-Line Interface (CLI) and a Model-Context-Protocol (MCP) server to help you find the insights you need, quickly and efficiently.
Why use Log Analyzer MCP?
Simplify Log Analysis: Cut through the noise with flexible parsing, advanced filtering (time-based, content, positional), and configurable context display.
Integrate with Your Workflow: Use it as a standalone
loganalyzerCLI tool for scripting and direct analysis, or integrate the MCP server with compatible clients like Cursor for an AI-assisted experience.Extensible and Configurable: Define custom log sources, patterns, and search scopes to tailor the analysis to your specific needs.
Key Features
Core Log Analysis Engine: Robust backend for parsing and searching various log formats.
loganalyzerCLI: Intuitive command-line tool for direct log interaction.MCP Server: Exposes log analysis capabilities to MCP clients, enabling features like:
Test log summarization (
analyze_tests).Execution of test runs with varying verbosity.
Targeted unit test execution (
run_unit_test).On-demand code coverage report generation (
create_coverage_report).Advanced log searching: all records, time-based, first/last N records.
Hatch Integration: For easy development, testing, and dependency management.
Installation
This package can be installed from PyPI (once published) or directly from a local build for development purposes.
From PyPI (Recommended for Users)
Once the package is published to PyPI.
pip install log-analyzer-mcpThis will install the loganalyzer CLI tool and make the MCP server package available for integration.
From Local Build (For Developers or Testing)
If you have cloned the repository and want to use your local changes:
Ensure Hatch is installed. (See Developer Guide)
Build the package:
hatch buildThis creates wheel and sdist packages in the
dist/directory.Install the local build into your Hatch environment (or any other virtual environment): Replace
<version>with the actual version from the generated wheel file (e.g.,0.2.7).# If using Hatch environment: hatch run pip uninstall log-analyzer-mcp -y && hatch run pip install dist/log_analyzer_mcp-<version>-py3-none-any.whl # For other virtual environments: # pip uninstall log-analyzer-mcp -y # (If previously installed) # pip install dist/log_analyzer_mcp-<version>-py3-none-any.whlFor IDEs like Cursor to pick up changes to the MCP server, you may need to manually reload the server in the IDE. See the Developer Guide for details.
Getting Started: Using Log Analyzer MCP
There are two primary ways to use Log Analyzer MCP:
As a Command-Line Tool (
loganalyzer):Ideal for direct analysis, scripting, or quick checks.
Requires Python 3.9+.
For installation, see the Installation section above.
For detailed usage, see the CLI Usage Guide (upcoming) or the API Reference for CLI commands.
As an MCP Server (e.g., with Cursor):
Integrates log analysis capabilities directly into your AI-assisted development environment.
For installation, see the Installation section. The MCP server component is included when you install the package.
For configuration with a client like Cursor and details on running the server, see Configuring and Running the MCP Server below and the Developer Guide.
Configuring and Running the MCP Server
Configuration
Configuration of the Log Analyzer MCP (for both CLI and Server) is primarily handled via environment variables or a .env file in your project root.
Environment Variables: Set variables like
LOG_DIRECTORIES,LOG_PATTERNS_ERROR,LOG_CONTEXT_LINES_BEFORE,LOG_CONTEXT_LINES_AFTER, etc., in the environment where the tool or server runs..envFile: Create a.envfile by copying.env.template(this template file needs to be created and added to the repository) and customize the values.
For a comprehensive list of all configuration options and their usage, please refer to the (Upcoming) Configuration Guide.
(Note: The .env.template file should be created and added to the repository to provide a starting point for users.)
Running the MCP Server
The MCP server can be launched in several ways:
Via an MCP Client (e.g., Cursor): Configure your client to launch the
log-analyzer-mcpexecutable (often using a helper likeuvx). This is the typical way to integrate the server.Example Client Configuration (e.g., in
.cursor/mcp.json):{ "mcpServers": { "log_analyzer_mcp_server_prod": { "command": "uvx", // uvx is a tool to run python executables from venvs "args": [ "log-analyzer-mcp" // Fetches and runs the latest version from PyPI // Or, for a specific version: "log-analyzer-mcp==0.2.0" ], "env": { "PYTHONUNBUFFERED": "1", "PYTHONIOENCODING": "utf-8", "MCP_LOG_LEVEL": "INFO", // Recommended for production // "MCP_LOG_FILE": "/path/to/your/logs/mcp/log_analyzer_mcp_server.log", // Optional // --- Configure Log Analyzer specific settings via environment variables --- // These are passed to the analysis engine used by the server. // Example: "LOG_DIRECTORIES": "[\"/path/to/your/app/logs\"]", // Example: "LOG_PATTERNS_ERROR": "[\"Exception:.*\"]" // (Refer to the (Upcoming) docs/configuration.md for all options) } } // You can add other MCP servers here } }Notes:
Replace placeholder paths and consult the Getting Started Guide, the (Upcoming) Configuration Guide, and the Developer Guide for more on configuration options and environment variables.
The actual package name on PyPI is
log-analyzer-mcp.
Directly (for development/testing): You can run the server directly using its entry point if needed. The
log-analyzer-mcpcommand (available after installation) can be used:log-analyzer-mcp --transport http --port 8080 # or for stdio transport # log-analyzer-mcp --transport stdioRefer to
log-analyzer-mcp --helpfor more options. For development, using Hatch scripts defined inpyproject.tomlor the methods described in the Developer Guide is also common.
Documentation
API Reference: Detailed reference for MCP server tools and CLI commands.
Getting Started Guide: For users and integrators. This guide provides a general overview.
Developer Guide: For contributors, covering environment setup, building, detailed testing procedures (including coverage checks), and release guidelines.
(Upcoming) Configuration Guide: Detailed explanation of all
.envand environment variable settings. (This document needs to be created.)(Upcoming) CLI Usage Guide: Comprehensive guide to all
loganalyzercommands and options. (This document needs to be created.).env.template: A template file for configuring environment variables. (This file needs to be created and added to the repository.)
Refactoring Plan: Technical details on the ongoing evolution of the project.
Testing
To run tests and generate coverage reports, please refer to the comprehensive Testing Guidelines in the Developer Guide. This section covers using hatch test, running tests with coverage, generating HTML reports, and targeting specific tests.
Contributing
We welcome contributions! Please see CONTRIBUTING.md and the Developer Guide for guidelines on how to set up your environment, test, and contribute.
License
Log Analyzer MCP is licensed under the MIT License with Commons Clause. See LICENSE.md for details.
Available Tools
12 toolsanalyze_testsC
Analyze the most recent test run and provide detailed information about failures.
Args: summary_only: Whether to return only a summary of the test results
| Name | Required | Description | Default |
|---|---|---|---|
| summary_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions analyzing failures but doesn't disclose behavioral traits such as whether this is a read-only operation, if it requires specific permissions, what happens if no test run exists, or how results are structured. The description is minimal and lacks critical operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by a brief parameter explanation. There's minimal waste, though it could be slightly more structured (e.g., separating usage notes).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (analyzing test runs), no annotations, and an output schema (which reduces need to explain return values), the description is partially complete. It covers the basic purpose and parameter but lacks context on when to use it, behavioral details, and differentiation from siblings, making it adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for the single parameter 'summary_only' by explaining it controls whether to 'return only a summary of the test results,' which clarifies its purpose beyond the schema's title. However, it doesn't cover other potential aspects like default behavior or interactions, leaving some gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Analyze the most recent test run and provide detailed information about failures.' It specifies the verb ('analyze'), resource ('most recent test run'), and output focus ('detailed information about failures'). However, it doesn't explicitly differentiate from siblings like 'run_tests_*' tools, which might perform tests rather than analyze results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., whether a test run must exist), exclusions, or comparisons to sibling tools like 'create_coverage_report' or 'run_tests_*'. Usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_coverage_reportC
Run the coverage report script and generate HTML and XML reports.
Args: force_rebuild: Whether to force rebuilding the report even if it exists
Returns: Dictionary containing execution results and report paths
| Name | Required | Description | Default |
|---|---|---|---|
| force_rebuild | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool 'runs a script' and 'generates reports,' implying a potentially resource-intensive or time-consuming operation, but doesn't disclose critical traits like execution time, permissions needed, side effects (e.g., file creation), error handling, or rate limits. This leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise, with a clear purpose statement followed by separate 'Args' and 'Returns' sections. Every sentence adds value: the first explains the action, and the subsequent sections detail inputs and outputs. It's front-loaded with the main functionality, making it efficient to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (involves running scripts and generating files), no annotations, and an output schema (which handles return values), the description is partially complete. It covers the basic purpose and parameters but lacks behavioral details (e.g., execution context, file paths, errors). With an output schema, it doesn't need to explain return values, but other gaps remain, making it adequate but not fully informative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an 'Args' section that explains the 'force_rebuild' parameter, adding meaning beyond the input schema (which has 0% description coverage). However, with only 1 parameter and the schema providing basic type info, the description compensates adequately but not richly—it doesn't detail default behavior or implications of the parameter. Given the low schema coverage, this is a minimal improvement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Run the coverage report script and generate HTML and XML reports.' It specifies the action (run script, generate reports) and outputs (HTML and XML reports), making it easy to understand what the tool does. However, it doesn't differentiate from sibling tools like 'analyze_tests' or 'run_tests_*', which might also relate to testing/reporting, so it doesn't fully distinguish from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, context (e.g., after running tests), or comparisons to sibling tools like 'analyze_tests' or 'run_tests_*', leaving the agent to guess based on tool names alone. This lack of explicit when/when-not instructions reduces its helpfulness.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_server_env_detailsA
Returns sys.path and sys.executable from the running MCP server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly describes what the tool returns (sys.path and sys.executable), which is helpful. However, it doesn't mention potential side effects, performance characteristics, authentication requirements, or error conditions. The description provides basic behavioral information but lacks depth for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that immediately states the tool's purpose without any unnecessary words. It's front-loaded with the core functionality and contains zero redundant information. Every word earns its place in this compact description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has zero parameters, 100% schema coverage, and an output schema exists, the description provides adequate context. It clearly states what information will be returned (sys.path and sys.executable). The existence of an output schema means the description doesn't need to detail return values. However, with no annotations, it could benefit from mentioning that this is a read-only, non-destructive operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100% (though there are no parameters to cover). The description appropriately doesn't discuss parameters since none exist. It focuses instead on what the tool returns, which is the correct emphasis for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Returns') and the exact resources being returned ('sys.path and sys.executable from the running MCP server'). It precisely distinguishes this tool from sibling tools that perform testing, logging, or coverage operations by focusing exclusively on server environment details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (when you need to inspect the server's Python environment) but doesn't explicitly state when to use this tool versus alternatives. No exclusions or specific prerequisites are mentioned, leaving the agent to infer appropriate usage scenarios from the tool's purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingA
Check if the MCP server is alive.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It clearly indicates a read-only check operation ('Check if... is alive') which implies non-destructive behavior, but doesn't specify what 'alive' means (e.g., network reachability, service responsiveness), response format, or timeout behavior. It meets minimum requirements but lacks operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, perfectly focused sentence with zero wasted words. It immediately communicates the core function without any unnecessary elaboration, making it optimally concise for such a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema (which handles return value documentation), the description provides adequate context about what the tool does. The main gap is lack of differentiation from sibling tools that might serve similar diagnostic purposes, but overall it's reasonably complete for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline is 4. The description appropriately doesn't discuss parameters since none exist, and the schema already fully documents the empty input structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Check') and target ('MCP server'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_server_env_details' which might also provide server status information, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_server_env_details' that might offer more detailed server information, there's no indication whether 'ping' should be used for simple liveness checks or as a preliminary diagnostic step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_tests_no_verbosityA
Run all tests with minimal output (verbosity level 0).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the output verbosity level, which is useful, but lacks details on what 'run all tests' entails (e.g., test types, execution environment, success/failure handling, or any side effects like timeouts or resource usage). This leaves gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key information ('Run all tests') and adds necessary detail ('with minimal output (verbosity level 0)'). There is no wasted text, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, an output schema, and no annotations, the description is adequate but minimal. It covers the purpose and verbosity level, which is sufficient for basic use, but lacks details on test scope, execution behavior, or output format, which could be important for an agent to use it correctly in complex scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description adds value by explaining the verbosity level, which is not captured in the schema, making it helpful for understanding the tool's configuration despite the lack of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run all tests') and specifies the execution mode ('with minimal output (verbosity level 0)'). It distinguishes from siblings like 'run_tests_verbose' and 'run_tests_very_verbose' by indicating the verbosity level, though it doesn't explicitly mention what 'tests' refers to or the scope beyond 'all'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'minimal output (verbosity level 0)', which suggests this tool is for quick, concise test runs compared to verbose alternatives. However, it doesn't explicitly state when to use this versus other test-running tools or provide exclusions, such as not using it for debugging detailed failures.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_tests_verboseB
Run all tests with verbose output (verbosity level 1).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the verbosity level but fails to describe what 'verbose output' entails, whether it affects performance, if it's read-only or destructive, or any other behavioral traits like error handling or output format. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words or fluff. It is front-loaded and wastes no space, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description's job is simplified. It covers the basic action and verbosity but lacks details on behavioral aspects like what 'verbose' means or how it differs from siblings. This makes it minimally viable but with clear gaps in context, especially with no annotations to supplement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter information is needed. The description appropriately adds no parameter details, focusing solely on the tool's action and verbosity level, which aligns with the schema's completeness. A baseline of 4 is applied as it compensates adequately for the lack of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run all tests') and specifies the verbosity level ('verbose output (verbosity level 1)'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'run_tests_no_verbosity' or 'run_tests_very_verbose' beyond the verbosity level, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as 'run_tests_no_verbosity' or 'run_tests_very_verbose', nor does it mention any prerequisites or context for usage. This lack of comparative or contextual information limits its helpfulness for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_tests_very_verboseB
Run all tests with very verbose output (verbosity level 2).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the output verbosity level but does not disclose other behavioral traits such as execution time, side effects, error handling, or what 'run all tests' entails (e.g., test types, scope). This leaves significant gaps for a tool with potential operational impacts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('Run all tests') and adds necessary detail ('with very verbose output (verbosity level 2)'). There is no wasted text, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists, the description's focus on verbosity is adequate. However, with no annotations and potential complexity in test execution, it could benefit from more context on what 'tests' include or behavioral expectations, leaving some gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately does not discuss parameters, focusing instead on the tool's behavior, which aligns with the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run all tests') and specifies the output characteristic ('with very verbose output (verbosity level 2)'). It distinguishes from siblings like 'run_tests_no_verbosity' and 'run_tests_verbose' by indicating a specific verbosity level, though it doesn't explicitly contrast with all alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through 'very verbose output,' suggesting it's for detailed debugging or logging scenarios. However, it lacks explicit guidance on when to choose this over alternatives like 'run_tests_verbose' or 'run_tests_no_verbosity,' and does not mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_unit_testA
Run tests for a specific agent only.
This tool runs tests that match the agent's patterns including both main agent tests and healthcheck tests, significantly reducing test execution time compared to running all tests. Use this tool when you need to focus on testing a specific agent component.
Args: agent: The agent to run tests for (e.g., 'qa_agent', 'backlog_agent') verbosity: Verbosity level (0=minimal, 1=normal, 2=detailed), default is 1
Returns: Dictionary containing test results and analysis
| Name | Required | Description | Default |
|---|---|---|---|
| agent | Yes | ||
| verbosity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explains what the tool does (runs tests matching agent patterns) and mentions performance characteristics (reduced execution time), but doesn't disclose other behavioral traits like whether it's read-only vs. destructive, authentication requirements, rate limits, error handling, or what happens if tests fail. The description adds some context but leaves gaps in behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. Every sentence adds value: first states what it does, second explains scope and benefit, third gives usage guidance, and the Args/Returns sections efficiently document parameters and output. There's no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with 0% schema coverage, no annotations, but an output schema exists, the description does a good job explaining parameters and purpose. However, for a test execution tool, it could better address what happens during test failures, timeouts, or other edge cases. The existence of an output schema means it doesn't need to explain return values in detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides clear semantics for both parameters: 'agent' is explained as 'The agent to run tests for' with examples, and 'verbosity' is defined with specific levels and default. This adds substantial value beyond the bare schema, though it doesn't explain parameter constraints or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('run tests for a specific agent only') and resource ('agent's patterns including both main agent tests and healthcheck tests'). It explicitly distinguishes this tool from running all tests, which helps differentiate it from potential sibling tools like 'run_tests_no_verbosity' that might run broader test suites.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('when you need to focus on testing a specific agent component') and mentions the benefit ('significantly reducing test execution time compared to running all tests'). However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools (like 'run_tests_verbose' or 'analyze_tests').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_log_all_recordsC
Search for all log records, optionally filtering by scope and content patterns, with context.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | default | |
| context_before | No | ||
| context_after | No | ||
| log_dirs_override | No | ||
| log_content_patterns_override | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'with context' which hints at the context_before/after parameters, but doesn't explain what 'context' means, how results are returned, whether there are rate limits, authentication needs, or what 'search' entails (e.g., regex, exact match). This is a significant gap for a search tool with 5 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. However, it could be more structured by separating key features (e.g., 'Searches all log records. Optional filters: scope, content patterns. Includes context lines.'), but it avoids unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters with 0% schema coverage, no annotations, but an output schema exists, the description is incomplete. It hints at some parameters but doesn't fully explain their semantics or usage. The output schema mitigates the need to describe return values, but the lack of behavioral and parameter details leaves gaps for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions filtering by 'scope and content patterns' and 'with context', which loosely maps to some parameters (scope, log_content_patterns_override, context_before/after), but doesn't explain what 'scope' means, what 'log_dirs_override' does, or how patterns work. This adds minimal value beyond the schema's property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('search') and resource ('all log records'), and mentions optional filtering by scope and content patterns. It distinguishes from some siblings like 'search_log_first_n_records' by specifying 'all' records, but doesn't fully differentiate from other search siblings like 'search_log_time_based' in terms of when to use each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'search_log_first_n_records', 'search_log_last_n_records', or 'search_log_time_based'. It mentions optional filtering but doesn't specify use cases or exclusions, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_log_first_n_recordsC
Search for the first N (oldest) records, optionally filtering, with context.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | ||
| scope | No | default | |
| context_before | No | ||
| context_after | No | ||
| log_dirs_override | No | ||
| log_content_patterns_override | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'with context' but doesn't explain what context means, how filtering works, or behavioral aspects like pagination, rate limits, or error handling. This is inadequate for a tool with 6 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. However, it could be more structured by explicitly mentioning the resource (logs) and separating filtering from context aspects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters with 0% schema coverage, no annotations, and an output schema (which reduces need for return value explanation), the description is incomplete. It lacks details on parameter meanings, behavioral traits, and usage distinctions from siblings, making it insufficient for effective tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions 'filtering' and 'context' but doesn't explain any of the 6 parameters (e.g., what 'scope' or 'log_dirs_override' mean). The description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for records with filtering and context, specifying 'first N (oldest)' which distinguishes it from siblings like search_log_last_n_records. However, it doesn't explicitly mention logs as the resource, though this is implied by the name and sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving oldest records with optional filtering and context, but doesn't explicitly state when to use this vs. alternatives like search_log_last_n_records or search_log_time_based. No guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_log_last_n_recordsC
Search for the last N (newest) records, optionally filtering, with context.
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | ||
| scope | No | default | |
| context_before | No | ||
| context_after | No | ||
| log_dirs_override | No | ||
| log_content_patterns_override | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'with context' and 'optionally filtering', but doesn't explain what 'context' means (e.g., surrounding log entries), how filtering works, whether this is a read-only operation, potential performance impacts, or output format. For a search tool with 6 parameters, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—a single sentence that front-loads the core purpose. Every word earns its place, with no redundancy or fluff. It efficiently communicates the tool's essence without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (6 parameters, no annotations, but with an output schema), the description is incomplete. It lacks details on filtering mechanics, context behavior, and how parameters interact. The output schema may cover return values, but the description doesn't provide enough operational context for effective use, especially compared to siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only vaguely references 'filtering' and 'context', without explaining how parameters like 'scope', 'log_dirs_override', or 'log_content_patterns_override' relate to these concepts. The description adds minimal meaning beyond the schema's parameter names and types, failing to clarify usage or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for the last N (newest) records, optionally filtering, with context.' It specifies the verb ('search'), resource ('records'), and scope ('last N/newest'), which distinguishes it from siblings like 'search_log_first_n_records' (first N) and 'search_log_time_based' (time-based). However, it doesn't explicitly differentiate from 'search_log_all_records' in terms of filtering capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions 'optionally filtering' but doesn't specify what filtering entails or when to choose this over siblings like 'search_log_first_n_records' or 'search_log_time_based'. There's no mention of prerequisites, exclusions, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_log_time_basedC
Search logs within a time window, optionally filtering, with context.
| Name | Required | Description | Default |
|---|---|---|---|
| minutes | No | ||
| hours | No | ||
| days | No | ||
| scope | No | default | |
| context_before | No | ||
| context_after | No | ||
| log_dirs_override | No | ||
| log_content_patterns_override | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions 'optionally filtering' and 'with context,' it doesn't explain what 'context' means in practice, what format results are returned in, whether this is a read-only operation, or any performance characteristics. For an 8-parameter tool with no annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single sentence that efficiently communicates the core functionality. Every word earns its place: 'Search logs' (action), 'within a time window' (primary constraint), 'optionally filtering' (additional capability), 'with context' (extra feature). No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, no annotations, but has output schema), the description is minimally adequate. The output schema existence means return values don't need explanation in the description. However, for a search tool with multiple sibling alternatives and no behavioral annotations, the description should provide more guidance on usage scenarios and result interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for all 8 parameters, the description provides minimal help. It mentions 'time window,' 'filtering,' and 'context,' which loosely map to some parameters (minutes/hours/days for time, log_content_patterns_override for filtering, context_before/after for context), but doesn't explain parameter relationships, defaults, or how overrides work. The description doesn't adequately compensate for the complete lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search logs within a time window, optionally filtering, with context.' This specifies the verb (search), resource (logs), and key features (time-based, filtering, context). However, it doesn't explicitly differentiate from siblings like search_log_all_records or search_log_first_n_records beyond the time-based aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like search_log_all_records and search_log_first_n_records available, there's no indication of when time-based searching is preferable over other log search methods. The description only states what the tool does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v0.1.8- First observed
analyze_tests - First observed
create_coverage_report - First observed
get_server_env_details - First observed
ping - First observed
run_tests_no_verbosity - First observed
run_tests_verbose - First observed
run_tests_very_verbose - First observed
run_unit_test - First observed
search_log_all_records - First observed
search_log_first_n_records - First observed
search_log_last_n_records - First observed
search_log_time_based
TDQS
Scored across 12 tools
The tools have clear distinctions in some areas, like different search methods (time-based, first/last N records) and test verbosity levels. However, there is significant overlap between 'analyze_tests' and the 'run_tests_*' tools, as they all relate to test execution and analysis, which could cause confusion about when to use each. The 'ping' and 'get_server_env_details' tools are distinct but minor compared to the core testing/log analysis focus.
Most tools follow a consistent verb_noun pattern (e.g., 'analyze_tests', 'create_coverage_report', 'search_log_all_records'), which is clear and predictable. There are minor deviations, such as 'run_tests_no_verbosity' using 'no_verbosity' instead of a more standard modifier like 'minimal', but overall the naming is coherent and easy to understand.
With 12 tools, the count is reasonable for a log analyzer and test runner server, covering key operations like test execution, log searching, and system checks. It's slightly on the higher side but well-scoped, as each tool serves a specific purpose without obvious bloat. The tools are focused on the domain, making the count appropriate for the server's purpose.
The tool set covers core areas like test running (with various verbosity levels and targeted runs), log searching (with multiple methods), and basic server checks. However, there are notable gaps: for a 'Log Analyzer', there's no tool for aggregating or summarizing logs, and for test analysis, there's no tool for updating or deleting test results. This limits the lifecycle coverage and may require workarounds for full agent workflows.
Related MCP Connectors
Query application logs, traces, and metrics from your AI coding assistant via Foam's MCP server.
A paid remote MCP for AI SDK data query MCP, built to return verdicts, receipts, usage logs, and aud
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Run, debug, and triage tests from your IDE using natural language, no dashboard switching, no manual data transfers. The TestMu AI (formerly LambdaTest) MCP Server is a single remote server exposing four tool suites: HyperExecute — analyze your project, generate YAML configs and test runner commands, then monitor jobs and sessions. Automation — pull a TestID's details plus command, network, and console logs into one chat for instant root-cause analysis. Includes mobile app upload. SmartUI — explain pixel, layout, DOM, and perceptual changes in a visual regression run, with context-aware React/HTML/CSS fixes. Accessibility — audit any public URL or a local React app against WCAG and get ready-to-apply remediation steps. Connects over https://mcp.lambdatest.com/mcp using OAuth 2.1 — no API keys in your config. One-click install in Cursor; works with Claude, GitHub Copilot, Cline, and any MCP client. Tests execute on the TestMu AI cloud: 3,000+ browsers and 10,000+ real devices.