rf-log-mcp
rf-log-mcp
MCP-сервер для проверки файлов результатов Robot Framework, предоставляющий LLM краткое представление данных.
Обзор функций
Поддерживаемые форматы ввода:
output.xml: Robot / Rebot 6.0.x / 6.1+ / 7.xoutput.json: Robot / Rebot 7.2+
Предоставляемые возможности MCP:
Инструменты (Tools)
parse_resultget_viewsearch_messages
Ресурсы (Resources)
rf://runs/{run_id}/summaryrf://runs/{run_id}/tests/{test_id}
Поддерживаемые представления:
summaryfailure_pathstep_window
Related MCP server: RobotMCP
Важные примечания
Этот проект является MCP stdio server
Правильный способ использования: хост MCP запускает процесс
rf-log-mcp, а затем вызывает инструменты и ресурсы через stdio
Быстрый старт
1. Установка зависимостей
uv sync2. Рекомендуемый пример конфигурации MCP
{
"mcpServers": {
"rf-log-mcp": {
"command": "uv",
"args": [
"run",
"python",
"-m",
"rf_log_mcp"
]
}
}
}Сборка и установка
Сборка
uv buildПосле сборки будут созданы:
dist/rf_log_mcp-0.1.0-py3-none-any.whldist/rf_log_mcp-0.1.0.tar.gz
Установка wheel
uv pip install dist/rf_log_mcp-0.1.0-py3-none-any.whlПосле установки можно сразу запускать:
rf-log-mcpПример конфигурации MCP для установленного пакета
{
"mcpServers": {
"rf-log-mcp": {
"command": "rf-log-mcp",
"args": []
}
}
}Пример явного пути для Windows
{
"mcpServers": {
"rf-log-mcp": {
"command": "D:\\project\\rf_log_mcp\\.venv\\Scripts\\rf-log-mcp.exe",
"args": []
}
}
}Типовой процесс вызова
Шаг 1: Парсинг файла результатов
parse_result(path="tests/fixtures/single_failure_611.xml")Типовой ответ:
{
"ok": true,
"run_id": 1,
"source_format": "xml"
}Шаг 2: Получение сводки
get_view(run_id=1, view="summary")Шаг 3: Получение пути сбоя или поиск сообщений
get_view(run_id=1, view="failure_path")
search_messages(run_id=1, query="timeout")Переменные окружения
RF_LOG_MCP_DB
Используется для переопределения пути к базе данных SQLite по умолчанию.
Пример для PowerShell:
$env:RF_LOG_MCP_DB="D:\data\rf-log-mcp\store.sqlite3"
rf-log-mcpПример конфигурации MCP:
{
"mcpServers": {
"rf-log-mcp": {
"command": "rf-log-mcp",
"args": [],
"env": {
"RF_LOG_MCP_DB": "D:\\data\\rf-log-mcp\\store.sqlite3"
}
}
}
}Часто задаваемые вопросы
1. Почему используется uv
Версии зависимостей в локальной среде могут конфликтовать с MCP, поэтому требуется venv для изоляции конфликтов (conda слишком медленная, uv — быстрая)
2. Можно ли передавать путь к файлу в get_view / search_messages?
Да.
Если файл уже был проанализирован, сервис сначала преобразует путь в соответствующий run_id, а затем выполнит запрос.
Тем не менее, рекомендуется в первую очередь использовать целочисленный run_id, возвращаемый parse_result().
5. В каких случаях нельзя напрямую использовать этот проект?
Если ваша платформа LLM:
Не поддерживает MCP
Или не поддерживает запуск локальных процессов
В таком случае прямое подключение невозможно, потребуется дополнительный уровень интеграции.
Проверки при разработке
uv run ruff check .
uv run pytestAvailable Tools
3 toolsget_viewC
Get one supported view using a numeric run id or an already-parsed file path.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| view | Yes | ||
| selector | No | ||
| cursor | No | ||
| budget | 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 retrieving a view but lacks details on permissions, rate limits, error handling, or what 'supported view' entails. This is inadequate for a tool with 5 parameters and no annotation coverage, leaving the agent with insufficient behavioral 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 a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part earns its place, making it highly concise and well-structured for quick comprehension.
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 (5 parameters, no annotations) and the presence of an output schema, the description is incomplete. It doesn't address parameter meanings or behavioral traits, though the output schema may help with return values. This leaves gaps but isn't entirely inadequate, aligning with a minimum viable score.
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 'run id' and 'file path' without explaining the 5 parameters (run_id, view, selector, cursor, budget) or their relationships. This fails to add meaningful semantics beyond the bare schema, resulting in poor parameter understanding.
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: 'Get one supported view using a numeric run id or an already-parsed file path.' It specifies the action (get), resource (view), and input types (run id or file path). However, it doesn't explicitly differentiate from sibling tools like 'parse_result' or 'search_messages', 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 minimal guidance on when to use this tool, mentioning only the input types (run id or file path). It doesn't explain when to choose this over alternatives like 'parse_result' or 'search_messages', nor does it specify prerequisites or exclusions, leaving significant gaps in usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_resultB
Parse a Robot Framework output.xml or RF 7.2+ output.json file and index it.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| 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?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions parsing and indexing but doesn't explain what 'index it' entails (e.g., creating a searchable database, storing metadata), whether it's idempotent, if it requires specific permissions, or how errors are handled. For a tool with two parameters and no annotation coverage, this is insufficient behavioral 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 a single, efficient sentence: 'Parse a Robot Framework output.xml or RF 7.2+ output.json file and index it.' It's front-loaded with the core action and resource, with no wasted words or redundancy. Every part of the sentence contributes directly to understanding the tool's function.
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 an output schema (which reduces the need to describe return values), no annotations, and a simple input schema with low coverage, the description is minimally adequate. It states what the tool does but lacks details on behavior, parameters, and usage context. For a parsing/indexing tool, this leaves gaps in understanding how it operates and when to apply it.
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 adds no parameter semantics beyond what the input schema provides. With 0% schema description coverage, the schema only lists 'path' (string) and 'force_rebuild' (boolean, default false) without explaining their meanings. The description doesn't compensate by clarifying what 'path' refers to (e.g., file path, URL) or what 'force_rebuild' does (e.g., overwrite existing index). This meets the baseline of 3 since the schema provides some structure, but the description fails to add value.
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: 'Parse a Robot Framework output.xml or RF 7.2+ output.json file and index it.' It specifies the verb (parse), the resource (Robot Framework output files), and the action (index it). However, it doesn't explicitly differentiate from sibling tools like 'get_view' or 'search_messages', 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. It doesn't mention prerequisites (e.g., file existence), use cases (e.g., for analysis or reporting), or exclusions (e.g., not for real-time monitoring). With sibling tools like 'get_view' and 'search_messages' available, this lack of context leaves the agent guessing about appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_messagesC
Search indexed messages using a numeric run id or an already-parsed file path.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | ||
| query | Yes | ||
| level | No | ||
| limit | No | ||
| cursor | 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 full burden but lacks behavioral details. It doesn't disclose whether this is a read-only operation, potential side effects, authentication needs, rate limits, or what the search returns. The mention of 'indexed messages' hints at a read operation but is insufficient for a mutation-aware agent.
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 with no wasted words. It's front-loaded with the core purpose and specifies input types clearly, making it easy to parse 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 5 parameters with 0% schema coverage and an output schema (which handles return values), the description is incomplete. It covers the 'run_id' parameter but misses others, and with no annotations, it lacks behavioral context. However, the output schema mitigates some gaps, making it minimally adequate but with clear deficiencies.
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 but only partially does. It explains 'run_id' accepts numeric or file path inputs, but doesn't clarify 'query', 'level', 'limit', or 'cursor' parameters. This leaves most parameters undocumented beyond schema types.
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 ('Search') and resource ('indexed messages'), and specifies the two input types ('numeric run id or an already-parsed file path'). It doesn't explicitly differentiate from sibling tools like 'get_view' or 'parse_result', but the purpose is unambiguous.
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 like 'get_view' or 'parse_result'. The description mentions input types but doesn't explain context, prerequisites, or exclusions for usage.
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.
3 tool updates
v0.1.0- First observed
get_view - First observed
parse_result - First observed
search_messages
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: get_view retrieves a specific view, parse_result processes and indexes files, and search_messages queries indexed messages. There is no overlap in functionality, and the descriptions clearly differentiate their roles, making misselection unlikely.
All tool names follow a consistent verb_noun pattern (get_view, parse_result, search_messages) with clear, descriptive verbs and nouns. The naming is uniform throughout, using snake_case consistently without any deviations or mixed conventions.
With only 3 tools, the set feels thin for a Robot Framework log management server, as it might lack operations like updating or deleting parsed data. However, the tools cover core parsing and querying functions, making it borderline appropriate but potentially limited in scope.
The tools provide basic parsing and search capabilities, but there are notable gaps: no update or delete operations for indexed data, and no tools for managing multiple runs or views beyond retrieval. This could lead to dead ends in workflows requiring data modification or broader management.
Maintenance
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for log file analysis. Gives LLMs the ability to efficiently analyze large log files without loading them into context.7100MIT
- AlicenseAqualityAmaintenanceRobotMCP is a comprehensive Model Context Protocol (MCP) server that bridges the gap between human language and Robot Framework automation. It enables AI agents to understand test intentions, execute steps interactively, and generate complete test suites from successful executions.191,692 PyPI114Apache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP server that helps resolve Robocop static code analysis errors and warnings via LLM, providing tools to get reports and run format.11MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server that parses Robot Framework output.xml files, scores and groups failures, and exposes structured triage data to Claude Desktop and Claude Code.MIT