Skip to main content
Glama
genxevo

genxevo-selenium

by genxevo

GenXEvo AI Automation Agent — Python Selenium

MCP-сервер, который даёт ИИ-агенту надёжные глаза и руки для инженерии UI-автоматизации на Python + Selenium — детерминированные возможности, структурированные доказательства, enforced-границы безопасности и проверяемые результаты.

License: MIT Python 3.11 | 3.12 | 3.13 Status: alpha


Проблема

Попросите любую языковую модель исправить падающий Selenium-тест — и она выдаст уверенный, правдоподобный, но неверный XPath.

Иначе и быть не может. Она не видит страницу, не видит вывод теста и обычно даже не видит реальную структуру проекта — на каком интерпретаторе работает набор тестов, какой раннер его собирает, где на самом деле живут page objects. Она заполняет пробел беглостью.

GenXEvo существует, чтобы убрать этот пробел, — чтобы у модели были настоящие факты для рассуждений.

Related MCP server: self-healing-browser-mcp

Принцип

Доказательства до изменений. Доказательства до успеха.

Агент никогда не выдумывает локатор; он его наблюдает. Он никогда не объявляет об исправлении; он доказывает его запуском, соотнесённым по идентификатору с тем сбоем, который, как утверждается, был устранён. Каждая возможность возвращает доказательства с явным уровнем доверия, каждый вывод несёт сигналы, которые его породили, и каждый результат в машиночитаемом поле сообщает, был ли он успешен — потому что агент, который не отличает успех от неудачи, уверенно доложит об исправлении, которое он никогда не проверял, и такой исход хуже, чем вообще не помогать.

Что это такое и чем не является

Это

Слой возможностей MCP вокруг рабочего процесса инженерии UI-автоматизации, который вы уже ведёте

Не это

Тестовый фреймворк, обёртка над Selenium, замена pytest или собственный ИИ

Внутри этого сервера нет модели. Модель ИИ рассуждает. GenXEvo детерминирован: он читает то, что реально лежит на диске, а позже управляет настоящим браузером и выполняет настоящие тесты, и возвращает структурированные факты. Когда он чего-то не знает, он так и говорит, с указанием уровня уверенности.


Статус — честно

Это фаза 1A: фундамент и ровно две реально работающие возможности.

Создано и протестировано

Контракт результата, словарь ошибок, модель доказательств, обрамление недоверенного контента, конфигурация, ограничение путей, редактирование секретов, валидация выбора тестов, модель запуска, каталог возможностей, вызыватель возможностей, MCP-адаптер

Работающие MCP-инструменты

genxevo_agent_status, genxevo_discover_project

Спроектировано, внесено в каталог, НЕ вызывается

15 дополнительных возможностей, каждая опубликована с указанием фазы поставки

Не создано

Управление браузером, выполнение тестов, исправление, верификация

В этом репозитории нет заглушек. Запланированная возможность видна в genxevo_agent_status, чтобы агент мог планировать с её учётом, и не зарегистрирована как инструмент, чтобы агент никогда не мог её вызвать. Фальшивая реализация хуже честного отсутствия, потому что она учит агента чему-то ложному.

См. docs/roadmap.md — что даёт каждая фаза и каковы критерии выхода.


Быстрый старт

Требования

  • Python 3.11, 3.12 или 3.13

  • Python-проект автоматизации, над которым вы хотите, чтобы агент работал

Нижняя граница 3.11 — инженерное решение, а не дань моде: tomllib вошёл в стандартную библиотеку в 3.11, и именно он позволяет обнаружению проекта разбирать pyproject.toml без стороннего парсера в ядре. На 3.10 для этого потребовался бы tomli. См. ADR-001.

Установка

python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate

pip install -e .

Проверьте, что он запускается — обратите внимание, что баннер уходит в stderr, потому что stdout принадлежит MCP-транспорту:

genxevo-selenium-agent --version

Подключение к MCP-клиенту

Скопируйте .mcp.json.example и укажите --workspace на ваш проект автоматизации:

{
  "mcpServers": {
    "genxevo-selenium": {
      "command": "C:\\path\\to\\your\\.venv\\Scripts\\python.exe",
      "args": [
        "-m", "genxevo_selenium_agent",
        "--workspace", "C:\\path\\to\\your\\automation-project"
      ]
    }
  }
}

Явное указание интерпретатора — надёжная форма на любой платформе: консольный скрипт живёт внутри одного виртуального окружения, а MCP-клиент не наследует ваш активированный shell.

Полные инструкции для Claude Code, VS Code и PyCharm: docs/installation.md.

Настройка (необязательно)

Отсутствие файла конфигурации — не ошибка: значения по умолчанию и есть безопасная конфигурация. Когда нужно что-то изменить, поместите genxevo.config.toml в корень рабочей области:

version = 1

[execution]
enabled = false          # test execution is off until you turn it on
require_selection = true # never run the whole suite by accident

[security]
redact_secrets = true

Каждый параметр, его значение по умолчанию и обоснование: docs/configuration.md.


Архитектура

                     AI MODEL   (all reasoning lives here)
                         │  MCP · JSON-RPC over stdio
                         ▼
   ┌──────────────────────────────────────────────────────────┐
   │ genxevo_selenium_agent.mcp_server      THIN ADAPTER        │
   │ tool names · descriptions · annotations · stderr logging   │
   │ every tool function holds no logic                         │
   └──────────────────────────────────────────────────────────┘
                         │
   ┌──────────────────────────────────────────────────────────┐
   │ genxevo_selenium_agent.core            THE PRODUCT         │
   │ standard library + one typing-only shim, and nothing else  │
   │                                                            │
   │  capabilities   runtime · invoker · catalog · 2 built      │
   │  discovery      manifests · runners · venvs · page objects │
   │  security       paths · redaction · selection · globs      │
   │  contracts      ToolResult · AgentError · Evidence         │
   │  runs           RunId · RunOutcome · FileRunRegistry       │
   └──────────────────────────────────────────────────────────┘
              │                  │                  │
              ▼                  ▼                  ▼
        real project      real browser (1C)   real test runs (1D)

Правило слоёв: поведение никогда не живёт в адаптере. Функцию инструмента нельзя протестировать через MCP-клиент, поэтому ничто, что может быть ошибочным, не допускается в нём.


Контракт результата

Каждая возможность возвращает одну и ту же обёртку, и агент ветвится по status, а не по прозе:

{
  "contractVersion": "1.0",
  "status": "partialSuccess",     // one of nine values — see below
  "operation": "project.discover",
  "summary": "…one sentence for a human…",
  "data": { },                    // shape documented per capability
  "warnings": [ { "code": "…", "message": "…", "detail": "…" } ],
  "error": null,                  // present whenever status is not succeeding
  "evidence": [ { "id": "…", "kind": "…", "trust": "trusted|untrusted", … } ],
  "nextActions": [ { "tool": "…", "reason": "…" } ],
  "durationMs": 41,
  "startedAt": "2026-08-22T09:15:00Z",
  "safeToRetry": true
}

Девять статусов: success · partialSuccess · failure · validationError · configurationError · blocked · timeout · cancelled · skipped

Каждый из них — отдельное решение, которое агенту предстоит принять. Ничего другого в списке нет.

Поскольку инструменты аннотированы через TypedDict, весь этот контракт — включая перечисление status — публикуется в tools/list как outputSchema каждого инструмента. Агент узнаёт, как читать результат, прежде чем что-либо вызовет.

Инварианты обеспечиваются кодом, а не соглашением: успешный статус никогда не несёт ошибку, сбойный — всегда несёт, status выводится из категории ошибки, так что они не могут противоречить друг другу, а partialSuccess нельзя сконструировать без предупреждения, объясняющего его.


Позиция по безопасности

GenXEvo читает недоверенный контент, передаёт его языковой модели и позже даст этой модели возможности записи файлов и выполнения кода. Проектное допущение: модель в конечном счёте будет убеждена попросить то, чего ей не следует иметь, и отказывает сервер, а не модель.

Контроль

Что он делает

Явные корни рабочей области

Никогда не выводятся. Не настроено — значит отказ, с указанием remedy

Ограничение путей

Отклонить структурно → канонизировать → затем ограничить → денай-лист → намерение. Возможности принимают ResolvedPath, а не str, так что непроверенный ввод-вывод не проходит проверку типов

Разрешение симлинков

Path.resolve() следует симлинкам до проверки ограничения, поэтому ссылка за пределы рабочей области отклоняется

Денай-лист

С учётом Python: .pypirc, pip.conf, local_settings.py, secrets.py наряду с .env, *.pem, ~/.ssh

Редактирование секретов

Обнаружение по имени ключа и по форме значения, включая присваивания в исходном коде Python, например PASSWORD = "…"

Код проекта никогда не выполняется

setup.py записывается и не запускается; conftest.py читается как текст и не импортируется; установленные пакеты читаются из имён каталогов dist-info

Обрамление недоверенного контента

Защита от экранирования — полезная нагрузка не может подделать ни один из разделителей

Валидация выбора

Выбор, начинающийся с -, отклоняется сразу: pytest -p some.module — это произвольное выполнение кода

Безопасные значения по умолчанию

Выполнение выключено, редактирование включено, выбор обязателен

Всё ограничено

Таймауты, кооперативная отмена, лимиты сканирования, потолок циклов исправления

Корреляция запусков

Устаревшие артефакты не могут быть прочитаны как доказательство исправления

Гигиена ошибок

Никакой traceback никогда не доходит до агента; отказы никогда не повторяют абсолютный путь рабочей области

Остаточные риски задокументированы, а не скрыты — см. SECURITY.md и docs/security.md. Обрамление не предотвращает влияние, выполнение тестов — произвольный код по замыслу, stdio MCP не имеет аутентификации, а редактирование — эвристика.


Семейство GenXEvo

Это второй продукт в семействе независимых агентов. Каждый из них можно отдельно клонировать и установить; общее у них — контракт, а не сборка.

Selenium

Playwright

C#

выпущен

планируется

Python

этот репозиторий

планируется

Java · JavaScript · TypeScript

планируется

планируется

Что переносится между языками — это JSON-форма, словарь из девяти статусов, коды ошибок, формат идентификатора запуска, модель доказательств и классы безопасности. Агент, изучивший один сервер GenXEvo, должен узнать следующий при первом контакте.

Что не является общим — это реализация. Этот продукт намеренно нативен для Python: схемы вывода через TypedDict, конфигурация через tomllib, dataclasses вместо фреймворка сериализации, кооперативная отмена через asyncio.to_thread и модель обнаружения, построенная вокруг pyproject.toml, pyvenv.cfg и собственных правил сбора pytest.


Документация

Документ

Содержимое

docs/architecture.md

Пакеты, слои, доменная модель, контракт, свидетельства, запуски, конкурентность

docs/installation.md

Claude Code, VS Code, PyCharm; ловушка интерпретатора

docs/configuration.md

Каждый параметр, значение по умолчанию и обоснование; приоритет; валидация

docs/mcp-tools.md

Полный контракт — 2 реализованных подробно, 15 запланированных с их гарантиями

docs/agent-workflows.md

Инженерный цикл, правила для агентов, проработанный пример, анти-паттерны

docs/security.md

Модель угроз, меры контроля с обоснованием, остаточные риски

docs/decisions.md

Записи архитектурных решений, каждая привязана к дефекту, который её мотивировал

docs/roadmap.md

Фазы 1A–3 с критериями выхода и что вне области охвата

docs/troubleshooting.md

Конкретные сценарии отказов и их исправления

prompts/

Как общаться с агентом, с полными проработанными промптами

examples/

Рабочие файлы конфигурации


Разработка

pip install -e ".[dev]"

ruff check .          # lint
ruff format --check . # format
mypy                  # strict type checking
pytest                # the full suite

Стандарт, зафиксированный в CONTRIBUTING.md: каждая мера безопасности поставляется с тестами, которые проверяют атаку, а не только счастливый путь, и genxevo_selenium_agent.core импортирует стандартную библиотеку и ровно один шим только для типизации — это обеспечивается тестом, который разбирает каждый модуль с помощью ast, а не по соглашению. Единственное исключение — typing_extensions, и ADR-002 объясняет, почему альтернатива — это сервер, который не запустится на Python 3.11.


Автор

Rajeshkumar Muthu — старший инженер по автоматизации QA и агентному ИИ.

Лицензировано под лицензией MIT.

Available Tools

2 tools
genxevo_agent_statusGenXEvo agent statusA
Read-onlyIdempotent

Report what the GenXEvo agent currently is: whether it is configured, which workspace roots it may read, what its security policy is, which Python interpreter is hosting the server, whether test execution is permitted, and exactly which capabilities this build provides versus which are planned for a later phase. Call this FIRST in any session, and again whenever a capability behaves unexpectedly. Note that the interpreter reported here runs GenXEvo itself and is usually NOT the interpreter the automation project's tests run on -- use genxevo_discover_project for that. Returns the GenXEvo ToolResult envelope: branch on the 'status' field, never on the prose in 'summary'. Read-only and always safe to repeat.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
runIdNo
statusYes
summaryYes
evidenceYes
warningsYes
operationYes
startedAtYes
durationMsYes
nextActionsYes
safeToRetryYes
contractVersionYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior, and the description reinforces this with 'Read-only and always safe to repeat.' It adds meaningful behavioral context beyond annotations: returns the GenXEvo ToolResult envelope, instructs branching on the 'status' field rather than prose in 'summary', and clarifies that the interpreter reported is for GenXEvo itself, not the test project's interpreter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than minimal, but every sentence adds useful operational guidance: what is reported, when to call it, the interpreter caveat, sibling routing, and response-handling instructions. It is front-loaded with the primary purpose and organized logically, though the final sentence about read-only safety partially restates annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for a parameterless status tool: it defines the tool's scope, usage timing, the sibling alternative, the interpreter caveat, and how to interpret the returned envelope. Since an output schema exists, the return-value contract is additionally covered structurally, and the description goes further by warning against relying on prose in 'summary'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema has 100% coverage by having no properties, so there is nothing the description must explain. The description still clarifies that this is a status query with no arguments required. A score of 4 reflects the baseline for a parameterless tool; there is no room for additional semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Report') and a specific resource (the GenXEvo agent's current status), and enumerates the exact dimensions reported: configuration, workspace roots, security policy, interpreter, test execution permission, and implemented vs planned capabilities. It also distinguishes itself from its sibling genxevo_discover_project by explicitly directing interpreter-related project queries there.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit timing guidance: 'Call this FIRST in any session, and again whenever a capability behaves unexpectedly.' It also provides an exclusion and alternative by noting the reported interpreter is usually not the project test interpreter and that genxevo_discover_project should be used for that purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

genxevo_discover_projectDiscover the Python automation projectA
Read-onlyIdempotent

Scan the configured workspace and report the Python automation project that is actually there: pyproject.toml, requirements files, setup.cfg and lock files with their declared dependencies; the test runner the project itself states it uses (pytest or unittest, or 'unknown' -- never assumed); the test roots, established from files matching the project's own collection patterns rather than from any folder being called 'tests'; virtual environments with the interpreter version read from pyvenv.cfg; the browser automation library in use (Selenium, Playwright, Appium); candidate page-object directories, identified because their modules drive a browser and are not collected as tests; and CI configuration. Every conclusion carries the signals that produced it and an explicit confidence level, so you can tell a fact from a guess. GenXEvo never imports or executes anything in the project to obtain this -- setup.py and conftest.py are read as text only. Call this before reasoning about any test, locator or run. Read-only, makes no assumption about folder layout, and always safe to repeat. If 'status' is 'partialSuccess' the scan hit a limit or could not read something, and 'not found' may mean 'not looked at'.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
errorNo
runIdNo
statusYes
summaryYes
evidenceYes
warningsYes
operationYes
startedAtYes
durationMsYes
nextActionsYes
safeToRetryYes
contractVersionYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, and the description enriches this substantially: it promises no execution or imports, reads config files as text, exposes the partialSuccess status semantics ('not found' may mean 'not looked at'), and states that every conclusion carries signals and an explicit confidence level. It also says it makes no folder-layout assumptions and is 'always safe to repeat,' which is consistent with the idempotent annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well structured and front-loaded with the main purpose. Each listed artifact and caveat adds meaningful guidance, and the critical call-time directive is placed near the end. It is slightly dense and has minor redundancy around read-only/safe-to-repeat, but every sentence contributes to agent understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a zero-parameter tool with a rich output schema, the description is complete: it explains what will be discovered, how conclusions are evidenced, the no-execution guarantee, the partialSuccess edge case, when to call it, and its safety profile. Nothing an agent needs to decide whether and when to invoke this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is 100%, so there are no parameter semantics for the description to clarify. Per the rubric, zero params yields a baseline of 4. The description instead focuses on behavior and outputs, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Scan the configured workspace and report the Python automation project that is actually there.' It enumerates concrete artifacts and properties (pyproject.toml, lock files, test runner, virtual environments, browser library, page-object directories, CI config) and clearly separates this discovery tool from the only sibling, genxevo_agent_status, by adding a directive: 'Call this before reasoning about any test, locator or run.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit invocation point: 'Call this before reasoning about any test, locator or run.' It also states what the tool will not do, e.g., it never imports or executes project code, and it reads setup.py/conftest.py as text only. It does not name exclusions or explicitly compare against genxevo_agent_status, but for a zero-parameter discovery tool the guidance is clear enough.

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. Dates show when Glama detected each change.

  1. 2 tool updatesv0.1.0
    • First observedgenxevo_agent_status
    • First observedgenxevo_discover_project

TDQS

A4.3/5.0
Disambiguation5/5

genxevo_agent_status reports on the agent/server itself, while genxevo_discover_project inspects the workspace project. Their purposes and targets are completely distinct, so an agent should never confuse them.

Naming Consistency4/5

Both tools share the genxevo_ prefix and use snake_case, which is good, but genxevo_agent_status is a noun-phrase while genxevo_discover_project is verb+noun. This is a minor stylistic inconsistency rather than a serious problem.

Tool Count3/5

Two tools is on the thin side and feels borderline, but both are substantial read-only capabilities that form a coherent project-reconnaissance pair. The count is not excessive, but it is minimal.

Completeness2/5

The descriptions repeatedly mention tests, locators, and runs, but no tool actually executes tests, inspects locators, or interacts with the Selenium project. After discovery, an agent has no way to act on the project, which is a significant gap for a Selenium-oriented server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables AI agents to control a browser with self-healing locators that automatically recover when selectors change, allowing reliable web automation through natural language.
    7
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables coding agents to independently verify web changes by scanning pages, inspecting UI structure, generating Playwright reproductions, and executing tests with structured QA evidence.
    4
    1,224
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/genxevo/genxevo-ai-automation-agent-python-selenium'

If you have feedback or need assistance with the MCP directory API, please join our Discord server