Skip to main content
Glama
genxevo

genxevo-selenium

by genxevo

GenXEvo AI Automation Agent — Python Selenium

Ein MCP-Server, der einem KI-Coding-Agenten zuverlässige Augen und Hände für Python + Selenium-UI-Automatisierungstechnik gibt — deterministische Fähigkeiten, strukturierte Beweise, erzwungene Sicherheitsgrenzen und überprüfbare Ergebnisse.

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


Das Problem

Fragen Sie ein beliebiges Sprachmodell, einen fehlschlagenden Selenium-Test zu reparieren, und es wird einen selbstbewussten, plausiblen, falschen XPath produzieren.

Es muss. Es kann die Seite nicht sehen, es kann die Testausgabe nicht sehen, und es kann normalerweise nicht einmal die tatsächliche Form des Projekts sehen — mit welchem Interpreter die Suite läuft, welcher Runner sie einsammelt, wo die Page Objects tatsächlich leben. Es füllt die Lücke mit Sprachgewandtheit.

GenXEvo existiert, um die Lücke zu schließen, damit das Modell etwas Wahres zum Nachdenken hat.

Related MCP server: self-healing-browser-mcp

Das Prinzip

Beweis vor Veränderung. Beweis vor Erfolg.

Der Agent erfindet nie einen Locator; er beobachtet einen. Er erklärt nie einen Fix; er beweist einen mit einem Lauf, der per Kennung mit dem Fehler korreliert ist, den er zu reparieren behauptet. Jede Fähigkeit liefert Beweise mit einer expliziten Vertrauensstufe zurück, jede Schlussfolgerung trägt die Signale, die sie erzeugt haben, und jedes Ergebnis sagt in einem maschinenlesbaren Feld, ob es erfolgreich war — denn ein Agent, der Erfolg nicht von Misserfolg unterscheiden kann, wird selbstbewusst eine Reparatur melden, die er nie verifiziert hat, und dieses Ergebnis ist schlimmer, als gar nicht zu helfen.

Was das ist und was nicht

Ist

Eine MCP-Fähigkeitsebene um den UI-Automatisierungstechnik-Workflow, den Sie bereits ausführen

Ist nicht

Ein Test-Framework, ein Selenium-Wrapper, ein Ersatz für pytest oder eine eigene KI

In diesem Server steckt kein Modell. Das KI-Modell denkt nach. GenXEvo ist deterministisch: Es liest, was tatsächlich auf der Festplatte liegt, und steuert später einen echten Browser und führt echte Tests aus und liefert strukturierte Fakten zurück. Wenn es etwas nicht weiß, sagt es das, mit einer Vertrauensstufe.


Status — ehrlich

Dies ist Phase 1A: das Fundament und genau zwei wirklich funktionierende Fähigkeiten.

Gebaut und getestet

Ergebnisvertrag, Fehlervokabular, Beweismodell, Framing nicht vertrauenswürdiger Inhalte, Konfiguration, Pfad-Eindämmung, Geheimnis-Schwärzung, Testauswahl-Validierung, Laufmodell, Fähigkeitskatalog, Fähigkeits-Invoker, MCP-Adapter

Funktionierende MCP-Tools

genxevo_agent_status, genxevo_discover_project

Entworfen, katalogisiert, NICHT aufrufbar

15 weitere Fähigkeiten, jede mit ihrer Lieferphase veröffentlicht

Nicht gebaut

Browsersteuerung, Testausführung, Reparatur, Verifikation

In diesem Repository gibt es keine Stubs. Eine geplante Fähigkeit ist in genxevo_agent_status sichtbar, damit ein Agent um sie herum planen kann, und ist nicht als Tool registriert, damit ein Agent sie nie aufrufen kann. Eine Fake-Implementierung ist schlimmer als eine ehrliche Abwesenheit, weil sie dem Agenten etwas Falsches beibringt.

Siehe docs/roadmap.md für das, was jede Phase liefert, und ihre Exit-Kriterien.


Schnellstart

Voraussetzungen

  • Python 3.11, 3.12 oder 3.13

  • Ein Python-Automatisierungsprojekt, an dem der Agent arbeiten soll

Die 3.11-Untergrenze ist eine technische Entscheidung, keine modische: tomllib wurde in 3.11 in die Standardbibliothek aufgenommen, und es ist das, was die Projekterkennung pyproject.toml ohne einen Drittanbieter-Parser im Kern parsen lässt. Auf 3.10 wäre dafür tomli erforderlich. Siehe ADR-001.

Installieren

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

pip install -e .

Stellen Sie sicher, dass es startet — beachten Sie, dass das Banner auf stderr geht, weil stdout zum MCP-Transport gehört:

genxevo-selenium-agent --version

Mit einem MCP-Client verbinden

Kopieren Sie .mcp.json.example und zeigen Sie mit --workspace auf Ihr Automatisierungsprojekt:

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

Den Interpreter explizit zu benennen ist die zuverlässige Form auf jeder Plattform: Ein Konsolenskript lebt in einer virtuellen Umgebung, und ein MCP-Client erbt Ihre aktivierte Shell nicht.

Vollständige Anweisungen für Claude Code, VS Code und PyCharm: docs/installation.md.

Konfigurieren (optional)

Eine fehlende Konfigurationsdatei ist kein Fehler — die Standardwerte sind die sichere Konfiguration. Wenn Sie etwas ändern möchten, legen Sie genxevo.config.toml im Workspace-Root ab:

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

Jede Einstellung, ihr Standardwert und ihre Begründung: docs/configuration.md.


Architektur

                     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)

Schichtenregel: Verhalten lebt nie im Adapter. Eine Tool-Funktion kann nicht über einen MCP-Client unit-getestet werden, also darf nichts, was falsch sein könnte, in einem leben.


Der Ergebnisvertrag

Jede Fähigkeit gibt dieselbe Hülle zurück, und ein Agent verzweigt auf status, nie auf Prosa:

{
  "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
}

Die neun Status: success · partialSuccess · failure · validationError · configurationError · blocked · timeout · cancelled · skipped

Jeder ist eine eigene Entscheidung, die ein Agent treffen muss. Nichts anderes steht auf der Liste.

Da die Tools mit einem TypedDict annotiert sind, wird dieser gesamte Vertrag — einschließlich des status-Enums — in tools/list als outputSchema jedes Tools veröffentlicht. Ein Agent lernt, wie man ein Ergebnis liest, bevor er irgendetwas aufruft.

Invarianten werden im Code erzwungen, nicht durch Konvention: Ein erfolgreicher Status trägt nie einen Fehler, ein fehlgeschlagener immer, status wird abgeleitet aus der Kategorie des Fehlers, sodass die beiden nicht widersprechen können, und ein partialSuccess kann nicht konstruiert werden ohne eine Warnung, die ihn erklärt.


Sicherheitshaltung

GenXEvo liest nicht vertrauenswürdige Inhalte, übergibt sie einem Sprachmodell und wird diesem Modell später Datei-Schreib- und Code-Ausführungsfähigkeiten geben. Die Designannahme ist, dass das Modell irgendwann überredet wird, etwas zu verlangen, das es nicht haben sollte, und dass der Server, nicht das Modell, sich weigert.

Kontrolle

Was sie tut

Explizite Workspace-Roots

Nie abgeleitet. Nicht konfiguriert bedeutet verweigern, mit dem Abhilfemittel

Pfad-Eindämmung

Strukturell ablehnen → kanonisieren → dann eindämmen → Deny-Liste → Absicht. Fähigkeiten nehmen einen ResolvedPath, keinen str, sodass unvalidierte E/A nicht typprüfbar ist

Symlink-Auflösung

Path.resolve() folgt Symlinks, bevor die Eindämmung getestet wird, sodass ein Link aus dem Workspace heraus abgelehnt wird

Deny-Liste

Python-bewusst: .pypirc, pip.conf, local_settings.py, secrets.py neben .env, *.pem, ~/.ssh

Geheimnis-Schwärzung

Erkennung von Schlüsselnamen und Wertformen, einschließlich Python-Quellcode-Zuweisungen wie PASSWORD = "…"

Es wird nie Projektcode ausgeführt

setup.py wird aufgezeichnet und nie ausgeführt; conftest.py wird als Text gelesen und nie importiert; installierte Pakete werden aus dist-info-Verzeichnisnamen gelesen

Framing nicht vertrauenswürdiger Inhalte

Ausbruchssicher — ein Payload kann keines der Trennzeichen fälschen

Auswahl-Validierung

Eine Auswahl, die mit - beginnt, wird rundweg abgelehnt: pytest -p some.module ist beliebige Code-Ausführung

Sichere Standardwerte

Ausführung aus, Schwärzung an, Auswahl erforderlich

Alles begrenzt

Timeouts, kooperative Abbrüche, Scan-Grenzen, Reparaturzyklus-Obergrenze

Lauf-Korrelation

Veraltete Artefakte können nicht als Beweis für einen Fix gelesen werden

Fehlerhygiene

Kein Traceback erreicht je den Agenten; Ablehnungen spiegeln nie den absoluten Workspace-Pfad wider

Restrisiken sind dokumentiert, nicht versteckt — siehe SECURITY.md und docs/security.md. Framing verhindert keine Beeinflussung, Testausführung ist von Natur aus beliebiger Code, stdio-MCP hat keine Authentifizierung, und Schwärzung ist heuristisch.


Die GenXEvo-Familie

Dies ist das zweite Produkt in einer Familie unabhängiger Agenten. Jeder ist separat klonbar und installierbar; was sie teilen, ist ein Vertrag, kein Build.

Selenium

Playwright

C#

ausgeliefert

geplant

Python

dieses Repository

geplant

Java · JavaScript · TypeScript

geplant

geplant

Was über Sprachen hinweg portiert wird, ist die JSON-Form, das Neun-Status-Vokabular, die Fehlercodes, das Laufkennungsformat, das Beweismodell und die Sicherheitsklassen. Ein Agent, der einen GenXEvo-Server gelernt hat, sollte den nächsten beim ersten Kontakt erkennen.

Was nicht geteilt wird, ist die Implementierung. Dieses Produkt ist von Natur aus Python-nativ: TypedDict-Ausgabeschemas, tomllib-Konfiguration, dataclasses statt eines Serialisierungs-Frameworks, kooperative Abbrüche über asyncio.to_thread und ein Erkennungsmodell, das um pyproject.toml, pyvenv.cfg und die eigenen Sammelregeln von pytest herum gebaut ist.


Dokumentation

Dokument

Inhalt

docs/architecture.md

Pakete, Schichten, Domänenmodell, Vertrag, Nachweise, Läufe, Nebenläufigkeit

docs/installation.md

Claude Code, VS Code, PyCharm; die Interpreter-Falle

docs/configuration.md

Jede Einstellung, Standardwert und Begründung; Rangfolge; Validierung

docs/mcp-tools.md

Vollständiger Vertrag — 2 im Detail implementiert, 15 geplant mit ihren Garantien

docs/agent-workflows.md

Der Engineering-Kreislauf, Regeln für Agenten, ein durchgearbeitetes Beispiel, Anti-Patterns

docs/security.md

Bedrohungsmodell, Kontrollen mit Begründung, Restrisiken

docs/decisions.md

Architektur-Entscheidungsprotokolle, jeweils verknüpft mit dem Fehler, der sie motiviert hat

docs/roadmap.md

Phasen 1A–3 mit Exit-Kriterien und was außerhalb des Umfangs liegt

docs/troubleshooting.md

Konkrete Fehlermodi und deren Behebungen

prompts/

Wie man mit dem Agenten spricht, mit vollständigen ausgearbeiteten Prompts

examples/

Funktionierende Konfigurationsdateien


Entwicklung

pip install -e ".[dev]"

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

Der Standard, festgehalten in CONTRIBUTING.md: jede Sicherheitskontrolle wird mit Tests ausgeliefert, die den Angriff bestätigen, nicht nur den Happy Path, und genxevo_selenium_agent.core importiert die Standardbibliothek und genau einen Typisierungs-Shim — erzwungen durch einen Test, der jedes Modul mit ast parst, nicht durch Konvention. Die einzige Ausnahme ist typing_extensions, und ADR-002 erklärt, warum die Alternative ein Server ist, der auf Python 3.11 nicht startet.


Autor

Rajeshkumar Muthu — Senior QA Automation Agentic AI Engineer.

Lizenziert unter der MIT-Lizenz.

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.

NameRequiredDescriptionDefault

No parameters

Output 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'.

NameRequiredDescriptionDefault

No parameters

Output 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.

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

TDQS

A4.3/5.0

Scored across 2 tools

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

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers