Skip to main content
Glama

rf-log-mcp

Robot Framework 결과 파일을 검사하기 위한 MCP 서버로, LLM에게 간결한 증거 뷰를 제공합니다.

기능 개요

지원 입력:

  • output.xml: Robot / Rebot 6.0.x / 6.1+ / 7.x

  • output.json: Robot / Rebot 7.2+

제공되는 MCP 기능:

  • Tools

    • parse_result

    • get_view

    • search_messages

  • Resources

    • rf://runs/{run_id}/summary

    • rf://runs/{run_id}/tests/{test_id}

지원되는 뷰:

  • summary

  • failure_path

  • step_window

Related MCP server: RobotMCP

주요 참고 사항

  • 이 프로젝트는 MCP stdio server입니다.

  • 올바른 사용법: MCP 호스트가 rf-log-mcp 프로세스를 시작하고, stdio를 통해 도구와 리소스를 호출합니다.


빠른 시작

1. 의존성 설치

uv sync

2. 권장 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.whl

  • dist/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를 사용하나요?

  1. 로컬 환경의 의존성 버전이 MCP와 충돌할 수 있어 venv를 통한 격리가 필요합니다 (conda는 느리고, uv는 빠릅니다).

2. get_view / search_messages에 파일 경로를 전달할 수 있나요?

네, 가능합니다. 해당 파일이 이미 파싱된 경우, 서비스는 경로를 해당 run_id로 변환하여 조회합니다. 하지만 parse_result()가 반환하는 정수형 run_id를 우선적으로 사용하는 것을 권장합니다.

5. 어떤 경우에 이 프로젝트를 직접 사용할 수 없나요?

사용 중인 LLM 플랫폼이:

  • MCP를 지원하지 않거나

  • 로컬 프로세스 시작을 지원하지 않는 경우

직접 연결할 수 없으며, 별도의 통합 계층을 구축해야 합니다.


개발 체크리스트

uv run ruff check .
uv run pytest

Available Tools

3 tools
get_viewC

Get one supported view using a numeric run id or an already-parsed file path.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
viewYes
selectorNo
cursorNo
budgetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
force_rebuildNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYes
queryYes
levelNo
limitNo
cursorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 3 tool updatesv0.1.0
    • First observedget_view
    • First observedparse_result
    • First observedsearch_messages

TDQS

B3.3/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness3/5

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for log file analysis. Gives LLMs the ability to efficiently analyze large log files without loading them into context.
    7
    100
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    RobotMCP 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.
    19
    1,692 PyPI
    114
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that helps resolve Robocop static code analysis errors and warnings via LLM, providing tools to get reports and run format.
    11
    MIT