| Name | rf-mcp JSON |
| Version |
0.23.0
JSON |
| download |
| home_page | None |
| Summary | Robot Framework MCP Server - Natural Language Test Automation Bridge |
| upload_time | 2025-10-23 13:42:34 |
| maintainer | None |
| docs_url | None |
| author | Many Kasiriha |
| requires_python | >=3.10 |
| license | Apache-2.0 |
| keywords |
|
| VCS |
 |
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# π€ RobotMCP - AI-Powered Test Automation Bridge
[](https://python.org)
[](https://robotframework.org)
[](https://github.com/jlowin/fastmcp)
[](LICENSE)
**Transform natural language into production-ready Robot Framework tests using AI agents and MCP protocol.**
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.
**Intro**
https://github.com/user-attachments/assets/ad89064f-cab3-4ae6-a4c4-5e8c241301a1
**Setup**
https://github.com/user-attachments/assets/8448cb70-6fb3-4f04-9742-a8a8453a9c7f
**Debug Bridge**
https://github.com/user-attachments/assets/8d87cd6e-c32e-4481-9f37-48b83f69f72f
---
## β¨ Quick Start
### 1οΈβ£ Install
```bash
pip install rf-mcp
```
### 2οΈβ£ Add to VS Code (Cline/Claude Desktop)
```json
{
"servers": {
"robotmcp": {
"type": "stdio",
"command": "python",
"args": ["-m", "robotmcp.server"]
}
}
}
```
### 3οΈβ£ Start Testing with AI
```
Use RobotMCP to create a TestSuite and execute it step wise.
Create a test for https://www.saucedemo.com/ that:
- Logs in to https://www.saucedemo.com/ with valid credentials
- Adds two items to cart
- Completes checkout process
- Verifies success message
Use Selenium Library.
Execute the test suite stepwise and build the final version afterwards.
```
**That's it!** RobotMCP will guide the AI through the entire testing workflow.
---
## π Key Features
### π§ **Natural Language Processing**
- Convert human test descriptions into structured actions
- Intelligent scenario analysis and library recommendations
- Context-aware test planning (web, mobile, API, database)
### β‘ **Interactive Step Execution**
- Execute Robot Framework keywords step-by-step
- Real-time state tracking and session management
- Native RF context runner for correct argument parsing and types
- Smart error handling with actionable suggestions
### π **Intelligent Element Location**
- Advanced locator guidance for Browser Library & SeleniumLibrary
- Cross-library locator conversion (Browser β Selenium)
- DOM filtering and element discovery
### π **Production-Ready Suite Generation**
- Generate optimized Robot Framework test suites
- Maintain proper imports, setup/teardown, and documentation
- Support for tags, variables, and test organization
- Includes session Resources/Libraries in *** Settings ***
- Portable path formatting using ${/} (Windows-safe)
### π **Multi-Platform Support**
- **Web**: Browser Library (Playwright) & SeleniumLibrary
- **Mobile**: AppiumLibrary for iOS/Android testing
- **API**: RequestsLibrary for HTTP/REST testing
- **Database**: DatabaseLibrary for SQL operations
---
## π§ Latest Updates
- MCP Debug Attach Bridge: drive RobotMCP tools against a live Robot Framework debug session via the new `McpAttach` library and attach-aware tools.
- RF native context execution: persistent per-session Namespace + ExecutionContext.
- Runner-first keyword execution with BuiltIn fallback for maximum compatibility.
- New tools to import Resources and custom Python libraries into the session context.
- Session-aware keyword discovery and documentation.
- Test suite generation now reflects session imports and uses OS-independent paths.
- CI pipeline via uv across Windows/macOS/Linux; Browser/Playwright initialization included.
Details below.
---
## π οΈ Installation & Setup
### Prerequisites
- Python 3.10+
- Robot Framework 6.0+
### Method 1: PyPI Installation (Recommended)
```bash
# Install RobotMCP core (minimal dependencies)
pip install rf-mcp
# or explicitly
pip install rf-mcp[slim]
# Feature bundles (install what you need)
pip install rf-mcp[web] # Browser Library + SeleniumLibrary
pip install rf-mcp[mobile] # AppiumLibrary
pip install rf-mcp[api] # RequestsLibrary
pip install rf-mcp[database] # DatabaseLibrary
pip install rf-mcp[all] # All optional Robot Framework libraries
# Browser Library still needs Playwright browsers
rfbrowser init
# or
python -m Browser.entry install
```
Prefer installing individual Robot Framework libraries instead? You still canβ
each extra maps 1:1 to the original packages and their setup guidance below.
### Method 2: Development Installation
```bash
# Clone repository
git clone https://github.com/manykarim/rf-mcp.git
cd rf-mcp
# Install with uv (recommended)
uv sync
# Or with pip
pip install -e .
```
### Playwright/Browsers for UI Tests
- Browser Library: run `rfbrowser init` (downloads Playwright and browsers)
### Hint: When using a venv
If you are using a virtual environment (venv) for your project, I recommend to install the `rf-mcp` package within the same venv.
When starting the MCP server, make sure to use the Python interpreter from that venv.
---
## π§ MCP Integration
### VS Code (GitHub Code)
```json
{
"servers": {
"robotmcp": {
"type": "stdio",
"command": "uv",
"args": ["run", "python", "-m", "robotmcp.server"]
}
}
}
```
```json
{
"servers": {
"robotmcp": {
"type": "stdio",
"command": "python",
"args": ["-m", "robotmcp.server"]
}
}
}
```
**Hint:**
If you set up a virtual environment, make sure to also use the python executable from that venv to start the server.
### Claude Desktop
**Location:** `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
```json
{
"mcpServers": {
"robotmcp": {
"command": "python",
"args": ["-m", "robotmcp.server"]
}
}
}
```
### Other AI Agents
RobotMCP works with any MCP-compatible AI agent. Use the stdio configuration above.
## πͺ Debug Attach Bridge
RobotMCP ships with `robotmcp.attach.McpAttach`, a lightweight Robot Framework library that exposes the live `ExecutionContext` over a localhost HTTP bridge. When you debug a suite from VS Code (RobotCode) or another IDE, the bridge lets RobotMCP reuse the in-process variables, imports, and keyword search order instead of creating a separate context.
### MCP Server Setup
Example configuration with passed environment variables for Debug Bridge
```json
{
"servers": {
"RobotMCP": {
"type": "stdio",
"command": "uv",
"args": ["run", "src/robotmcp/server.py"],
"env": {
"ROBOTMCP_ATTACH_HOST": "127.0.0.1",
"ROBOTMCP_ATTACH_PORT": "7317",
"ROBOTMCP_ATTACH_TOKEN": "change-me",
"ROBOTMCP_ATTACH_DEFAULT": "auto"
}
}
}
}
```
### Robot Framework setup
Import the library and start the serve loop inside the suite that you are debugging:
```robotframework
*** Settings ***
Library robotmcp.attach.McpAttach token=${DEBUG_TOKEN}
*** Variables ***
${DEBUG_TOKEN} change-me
*** Test Cases ***
Serve From Debugger
MCP Serve port=7317 token=${DEBUG_TOKEN} mode=blocking poll_ms=100
[Teardown] MCP Stop
```
- `MCP Serve port=7317 token=${TOKEN} mode=blocking|step poll_ms=100` β starts the HTTP server (if not running) and processes bridge commands. Use `mode=step` during keyword body execution to process exactly one queued request.
- `MCP Stop` β signals the serve loop to exit (used from the suite or remotely via RobotMCP `attach_stop_bridge`).
- `MCP Process Once` β processes a single pending request and returns immediately; useful when the suite polls between test actions.
- `MCP Start` β alias for `MCP Serve` for backwards compatibility.
The bridge binds to `127.0.0.1` by default and expects clients to send the shared token in the `X-MCP-Token` header.
### Configure RobotMCP to attach
Start `robotmcp.server` with attach routing by providing the bridge connection details via environment variables (token must match the suite):
```bash
export ROBOTMCP_ATTACH_HOST=127.0.0.1
export ROBOTMCP_ATTACH_PORT=7317 # optional, defaults to 7317
export ROBOTMCP_ATTACH_TOKEN=change-me # optional, defaults to 'change-me'
export ROBOTMCP_ATTACH_DEFAULT=auto # auto|force|off (auto routes when reachable)
export ROBOTMCP_ATTACH_STRICT=0 # set to 1/true to fail when bridge is unreachable
uv run python -m robotmcp.server
```
When `ROBOTMCP_ATTACH_HOST` is set, `execute_step(..., use_context=true)` and other context-aware tools first try to run inside the live debug session. Use the new MCP tools to manage the bridge from any agent:
- `attach_status` β reports configuration, reachability, and diagnostics from the bridge (`/diagnostics`).
- `attach_stop_bridge` β sends a `/stop` command, which in turn triggers `MCP Stop` in the debugged suite.
---
## πͺ Example Workflows
### π Web Application Testing
**Prompt:**
```
Use RobotMCP to create a TestSuite and execute it step wise.
Create a test for https://www.saucedemo.com/ that:
- Logs in to https://www.saucedemo.com/ with valid credentials
- Adds two items to cart
- Completes checkout process
- Verifies success message
Use Selenium Library.
Execute the test suite stepwise and build the final version afterwards.
```
**Result:** Complete Robot Framework test suite with proper locators, assertions, and structure.
### π± Mobile App Testing
**Prompt:**
```
Use RobotMCP to create a TestSuite and execute it step wise.
It shall:
- Launch app from tests/appium/SauceLabs.apk
- Perform login flow
- Add products to cart
- Complete purchase
Appium server is running at http://localhost:4723
Execute the test suite stepwise and build the final version afterwards.
```
**Result:** Mobile test suite with AppiumLibrary keywords and device capabilities.
### π API Testing
**Prompt:**
```
Read the Restful Booker API documentation at https://restful-booker.herokuapp.com.
Use RobotMCP to create a TestSuite and execute it step wise.
It shall:
- Create a new booking
- Authenticate as admin
- Update the booking
- Delete the booking
- Verify each response
Execute the test suite stepwise and build the final version afterwards.
```
**Result:** API test suite using RequestsLibrary with proper error handling.
### π§ͺ XML/Database Testing
**Prompt:**
```
Create a xml file with books and authors.
Use RobotMCP to create a TestSuite and execute it step wise.
It shall:
- Parse XML structure
- Validate specific nodes and attributes
- Assert content values
- Check XML schema compliance
Execute the test suite stepwise and build the final version afterwards.
```
**Result:** XML processing test using Robot Framework's XML library.
---
## π MCP Tools Overview
RobotMCP provides a comprehensive toolset organized by function. Highlights:
### Core Execution
- `analyze_scenario` - Convert natural language to structured test intent
- `execute_step` - Execute individual Robot Framework keywords
- `discover_keywords` - Find appropriate keywords for actions
### State & Context Management
- `get_application_state` - Capture current application state
- `get_page_source` - Extract DOM with intelligent filtering
- `get_session_info` - Session configuration and status
### Test Suite Generation
- `build_test_suite` - Generate Robot Framework test files
- `run_test_suite_dry` - Validate test syntax before execution
- `run_test_suite` - Execute complete test suites
### Library Discovery
- `recommend_libraries` - Suggest appropriate RF libraries
- `check_library_availability` - Verify library installation
- `get_available_keywords` - List all available keywords
- `search_keywords` - Find keywords by pattern
### RF Context & Imports
- `import_resource` - Import a `.resource` file into the session RF Namespace
- `import_custom_library` - Import a custom Python library (module name or file path)
- `list_available_keywords` - List keywords from session libraries/resources (context-aware)
- `get_session_keyword_documentation` - Get docs/signature for a session keyword
- `diagnose_rf_context` - Inspect session RF context (libraries, variables count)
- `attach_status` - Inspect attach-mode configuration and bridge reachability
- `attach_stop_bridge` - Stop the active MCP bridge loop inside the debugged suite
### Locator Guidance
- `get_selenium_locator_guidance` - SeleniumLibrary selector help
- `get_browser_locator_guidance` - Browser Library (Playwright) guidance
- `get_appium_locator_guidance` - Mobile locator strategies
### Advanced Features
- `set_library_search_order` - Control keyword resolution precedence
- `initialize_context` - Set up test sessions with variables
- `get_session_validation_status` - Check test readiness
*For detailed tool documentation, see the [Tools Reference](#-tools-reference) section.*
---
## ποΈ Architecture
### Service-Oriented Design
```
π¦ ExecutionCoordinator (Main Orchestrator)
βββ π€ SessionManager - Session lifecycle & library management
βββ βοΈ KeywordExecutor - RF keyword execution engine
βββ π BrowserLibraryManager - Browser/Selenium library switching
βββ π PageSourceService - DOM extraction & filtering
βββ π LocatorConverter - Cross-library locator translation
βββ π SuiteExecutionService - Test suite generation & execution
```
### Native Robot Framework Integration
- **ArgumentResolver** - Native RF argument parsing
- **TypeConverter** - RF type conversion (string β int/bool/etc.)
- **LibDoc API** - Direct RF documentation access
- **Keyword Discovery** - Runtime detection using RF internals
- **Runner First** - Execute via Namespace.get_runner(...).run(...), fallback to BuiltIn.run_keyword
### Session Management
- Auto-configuration based on scenario analysis
- Browser library conflict resolution (Browser vs Selenium)
- Cross-session state persistence
- Mobile capability detection and setup
---
## π Tools Reference
### `analyze_scenario`
Convert natural language test descriptions into structured test intents with automatic session creation.
```python
{
"scenario": "Test user login with valid credentials",
"context": "web",
"session_id": "optional-session-id"
}
```
### `execute_step`
Execute individual Robot Framework keywords with advanced session management.
```python
{
"keyword": "Fill Text",
"arguments": ["css=input[name='username']", "testuser"],
"session_id": "default",
"detail_level": "minimal"
}
```
### `build_test_suite`
Generate production-ready Robot Framework test suites from executed steps.
```python
{
"test_name": "User Login Test",
"session_id": "default",
"tags": ["smoke", "login"],
"documentation": "Test successful user login flow"
}
```
### `get_browser_locator_guidance`
Get comprehensive Browser Library locator strategies and error guidance.
```python
{
"error_message": "Strict mode violation: multiple elements found",
"keyword_name": "Click"
}
```
**Returns:**
- 10 Playwright locator strategies (css=, xpath=, text=, id=, etc.)
- Advanced features (cascaded selectors, iframe piercing, shadow DOM)
- Error-specific guidance and suggestions
- Best practices for element location
### `attach_status`
Inspect the attach bridge configuration and diagnostics before routing `execute_step` calls into a live debug session.
```python
{}
```
**Returns:**
- `configured`: whether attach mode is active (based on `ROBOTMCP_ATTACH_HOST`)
- `host`, `port`: bridge connection values when configured
- `reachable`: true when `/diagnostics` succeeds; includes diagnostics payload when available
- `default_mode`: value of `ROBOTMCP_ATTACH_DEFAULT` (`auto|force|off`)
- `strict`: true when `ROBOTMCP_ATTACH_STRICT` demands a reachable bridge
- `hint`: actionable guidance when not configured or unreachable
### `attach_stop_bridge`
Send a stop command to the McpAttach bridge to exit `MCP Serve` inside the debugged suite.
```python
{}
```
**Returns:**
- `success`: true when the bridge acknowledged the stop request
- `response`: raw payload returned by the bridge (`{"success": true}` on success)
### `get_selenium_locator_guidance`
Get comprehensive SeleniumLibrary locator strategies and troubleshooting.
```python
{
"error_message": "Element not found: name=firstname",
"keyword_name": "Input Text"
}
```
**Returns:**
- 14 SeleniumLibrary locator strategies (id:, name:, css:, xpath:, etc.)
- Locator format analysis and recommendations
- Timeout and waiting strategy guidance
- Element location best practices
*For complete tool documentation, see the source code docstrings.*
---
## π§ͺ Example Generated Test Suite
```robot
*** Settings ***
Documentation Test suite for validating the complete checkout process on Sauce Demo website
Library Browser
Library Collections
Force Tags e2e checkout smoke
*** Variables ***
${URL} https://www.saucedemo.com/
${USERNAME} standard_user
${PASSWORD} secret_sauce
${FIRST_NAME} John
${LAST_NAME} Doe
${POSTAL_CODE} 12345
${EXPECTED_SUCCESS_MSG} Thank you for your order!
*** Test Cases ***
Complete Checkout Process Test
[Documentation] Validates the complete checkout process on Sauce Demo:
... 1. Opens the website
... 2. Logs in with valid credentials
... 3. Adds items to cart
... 4. Completes checkout process
# Setup and login
Open Browser And Navigate To Login Page
Login With Valid Credentials
Verify Successful Login
# Add items to cart
Add Item To Cart id=add-to-cart-sauce-labs-backpack
Verify Item Count In Cart 1
Add Item To Cart id=add-to-cart-sauce-labs-bike-light
Verify Item Count In Cart 2
# Checkout process
Go To Cart
Start Checkout
Fill Checkout Information
Complete Checkout
# Verify successful checkout
Verify Checkout Success
# Cleanup
Close Browser
*** Keywords ***
Open Browser And Navigate To Login Page
New Browser chromium headless=False
New Context viewport={'width': 1280, 'height': 720}
New Page ${URL}
Login With Valid Credentials
Fill Text id=user-name ${USERNAME}
Fill Text id=password ${PASSWORD}
Click id=login-button
Verify Successful Login
Wait For Elements State .inventory_list visible
${current_url}= Get Url
Should Contain ${current_url} inventory.html
Add Item To Cart
[Arguments] ${item_id}
Click ${item_id}
Verify Item Count In Cart
[Arguments] ${expected_count}
${cart_count}= Get Text .shopping_cart_badge
Should Be Equal As Strings ${cart_count} ${expected_count}
Go To Cart
Click .shopping_cart_link
Start Checkout
Click id=checkout
Fill Checkout Information
Fill Text id=first-name ${FIRST_NAME}
Fill Text id=last-name ${LAST_NAME}
Fill Text id=postal-code ${POSTAL_CODE}
Click id=continue
Complete Checkout
Click id=finish
Verify Checkout Success
${success_message}= Get Text h2
Should Be Equal As Strings ${success_message} ${EXPECTED_SUCCESS_MSG}
```
Original prompt:
```bash
Use RobotMCP to create a TestSuite and execute it step wise.
- Open https://www.saucedemo.com/
- Login with valid user
- Assert login was successful
- Add item to cart
- Assert item was added to cart
- Add another item to cart
- Assert another item was added to cart
- Checkout
- Assert checkout was successful
Execute step by step and build final test suite afterwards.
Make a clean and maintainable test suite
```
---
## π Recommended Workflow
### 1. **Analysis Phase**
```
Use analyze_scenario to understand test requirements and create session
```
### 2. **Library Setup**
```
Get recommendations with recommend_libraries
Check availability with check_library_availability
```
### 3. **Interactive Development**
```
Execute steps one by one with execute_step
Get page state with get_page_source
Use locator guidance tools for element issues
```
### 4. **Suite Generation**
```
Validate session with get_session_validation_status
Generate suite with build_test_suite
Validate syntax with run_test_suite_dry
Execute with run_test_suite
```
---
## π― Pro Tips
### π **Element Location**
- Use `get_page_source` with `filtered=true` to see automation-relevant elements
- Leverage locator guidance tools when elements aren't found
- Browser Library supports modern selectors (text=, data-testid=, etc.)
### β‘ **Performance**
- Use `detail_level="minimal"` to reduce response size by 80-90%
- Enable DOM filtering to focus on interactive elements
- Session management maintains state across interactions
### π‘οΈ **Reliability**
- Execute steps individually before building suites
- Use `run_test_suite_dry` to catch issues early
- Leverage native RF integration for maximum compatibility
- Prefer context mode for BuiltIn keywords (Evaluate, Set Variables, control flow)
- `execute_step` auto-retries via RF context when a keyword isnβt found
### π **Cross-Platform**
- Sessions auto-detect context (web/mobile/api) from scenarios
- Library conflicts are automatically resolved
- Mobile sessions configure Appium capabilities automatically
- Test suite paths use `${/}` for OS-independent imports; module names stay as-is
---
## π€ Contributing
We welcome contributions! Here's how to get started:
1. **Fork** the repository
2. **Clone** your fork locally
3. **Install** development dependencies: `uv sync`
4. **Create** a feature branch
5. **Add** comprehensive tests for new functionality
6. **Run** tests: `uv run pytest tests/`
7. **Submit** a pull request
### Optional Dependency Matrix
```bash
# Run Browser/Selenium focused tests
uv run pytest -m optional_web -q
# Run API smoke tests
uv run pytest -m optional_api -q
# Run combined web+api tests
uv run pytest -m optional_web_api -q
# Convenience helper (installs extras + executes markers)
python scripts/run_optional_tests.py web api web+api
```
### Development Commands
```bash
# Run tests
uv run pytest tests/
# Format code
uv run black src/
# Type checking
uv run mypy src/
# Start development server
uv run python -m robotmcp.server
# Build package
uv build
```
---
## π§© RF Context Execution
- Persistent per-session Namespace + ExecutionContext are created on demand.
- Runner-first dispatch: `Namespace.get_runner(...).run(...)`, with fallback to `BuiltIn.run_keyword`.
- Variables and imports persist within the session; `get_context_variables` surfaces a sanitized snapshot.
- RequestsLibrary session keywords default to runner path; disable via `ROBOTMCP_RF_RUNNER_REQUESTS=0`.
- Non-context executions automatically retry in RF context when a keyword cannot be resolved (helps user keywords/resources).
Common cases that require `use_context=true` in `execute_step`:
- BuiltIn control flow and variables: Evaluate, Set Test/Suite/Global Variable, Run Keywords
- Keywords relying on session imports/resources
- Complex named/positional/mixed arguments where RFβs resolver is desired
---
## π¦ CI with uv (GitHub Actions)
- Matrix for Python 3.10β3.12 on Ubuntu, macOS, Windows
- Uses `astral-sh/setup-uv` and `uv sync` for installs
- Initializes Browser Library with `rfbrowser init` (continues on error)
- Runs tests via `uv run pytest`
- Builds artifacts with `uv build` and uploads `dist/*`
---
## π License
Apache 2.0 License - see [LICENSE](LICENSE) file for details.
---
## π Why RobotMCP?
### For AI Agents
- **π€ Agent-Optimized**: Structured responses designed for AI processing
- **π§ Context-Aware**: Rich error messages with actionable guidance
- **β‘ Token-Efficient**: Minimal response mode reduces costs significantly
### For Test Engineers
- **π‘οΈ Production-Ready**: Native Robot Framework integration
- **π§ Flexible**: Multi-library support (Browser, Selenium, Appium, etc.)
- **π Comprehensive**: 20 tools covering complete automation workflow
### For Teams
- **π Maintainable**: Generates clean, documented Robot Framework code
- **π Iterative**: Step-by-step development and validation
- **π Scalable**: Session-based architecture supports complex scenarios
---
## π¬ Support & Community
- π **Issues**: [GitHub Issues](https://github.com/manykarim/rf-mcp/issues)
- π‘ **Feature Requests**: [GitHub Discussions](https://github.com/manykarim/rf-mcp/discussions)
- π **Documentation**: Tool docstrings and examples
- π **Latest Updates**: Check releases for new features
---
**β Star us on GitHub if RobotMCP helps your test automation journey!**
Made with β€οΈ for the Robot Framework and AI automation community.
Raw data
{
"_id": null,
"home_page": null,
"name": "rf-mcp",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": null,
"author": "Many Kasiriha",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/cc/71/095e327557833088c0f33f424bb185bd5d19100727225c4da1c90e7cc5c4/rf_mcp-0.23.0.tar.gz",
"platform": null,
"description": "# \ud83e\udd16 RobotMCP - AI-Powered Test Automation Bridge\n\n[](https://python.org)\n[](https://robotframework.org)\n[](https://github.com/jlowin/fastmcp)\n[](LICENSE)\n\n**Transform natural language into production-ready Robot Framework tests using AI agents and MCP protocol.**\n\nRobotMCP 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.\n\n**Intro**\n\nhttps://github.com/user-attachments/assets/ad89064f-cab3-4ae6-a4c4-5e8c241301a1\n\n**Setup**\n\nhttps://github.com/user-attachments/assets/8448cb70-6fb3-4f04-9742-a8a8453a9c7f\n\n**Debug Bridge**\n\nhttps://github.com/user-attachments/assets/8d87cd6e-c32e-4481-9f37-48b83f69f72f\n\n---\n\n## \u2728 Quick Start\n\n### 1\ufe0f\u20e3 Install\n```bash\npip install rf-mcp\n```\n\n### 2\ufe0f\u20e3 Add to VS Code (Cline/Claude Desktop)\n```json\n{\n \"servers\": {\n \"robotmcp\": {\n \"type\": \"stdio\",\n \"command\": \"python\",\n \"args\": [\"-m\", \"robotmcp.server\"]\n }\n }\n}\n```\n\n### 3\ufe0f\u20e3 Start Testing with AI\n```\nUse RobotMCP to create a TestSuite and execute it step wise.\nCreate a test for https://www.saucedemo.com/ that:\n- Logs in to https://www.saucedemo.com/ with valid credentials\n- Adds two items to cart\n- Completes checkout process\n- Verifies success message\n\nUse Selenium Library.\nExecute the test suite stepwise and build the final version afterwards.\n```\n\n**That's it!** RobotMCP will guide the AI through the entire testing workflow.\n\n---\n\n## \ud83d\ude80 Key Features\n\n### \ud83e\udde0 **Natural Language Processing**\n- Convert human test descriptions into structured actions\n- Intelligent scenario analysis and library recommendations\n- Context-aware test planning (web, mobile, API, database)\n\n### \u26a1 **Interactive Step Execution**\n- Execute Robot Framework keywords step-by-step\n- Real-time state tracking and session management\n- Native RF context runner for correct argument parsing and types\n- Smart error handling with actionable suggestions\n\n### \ud83d\udd0d **Intelligent Element Location**\n- Advanced locator guidance for Browser Library & SeleniumLibrary\n- Cross-library locator conversion (Browser \u2194 Selenium)\n- DOM filtering and element discovery\n\n### \ud83d\udccb **Production-Ready Suite Generation**\n- Generate optimized Robot Framework test suites\n- Maintain proper imports, setup/teardown, and documentation\n- Support for tags, variables, and test organization\n- Includes session Resources/Libraries in *** Settings ***\n- Portable path formatting using ${/} (Windows-safe)\n\n### \ud83c\udf10 **Multi-Platform Support**\n- **Web**: Browser Library (Playwright) & SeleniumLibrary\n- **Mobile**: AppiumLibrary for iOS/Android testing\n- **API**: RequestsLibrary for HTTP/REST testing\n- **Database**: DatabaseLibrary for SQL operations\n\n---\n\n## \ud83e\udded Latest Updates\n\n- MCP Debug Attach Bridge: drive RobotMCP tools against a live Robot Framework debug session via the new `McpAttach` library and attach-aware tools.\n- RF native context execution: persistent per-session Namespace + ExecutionContext.\n- Runner-first keyword execution with BuiltIn fallback for maximum compatibility.\n- New tools to import Resources and custom Python libraries into the session context.\n- Session-aware keyword discovery and documentation.\n- Test suite generation now reflects session imports and uses OS-independent paths.\n- CI pipeline via uv across Windows/macOS/Linux; Browser/Playwright initialization included.\n\nDetails below.\n\n---\n\n## \ud83d\udee0\ufe0f Installation & Setup\n\n### Prerequisites\n- Python 3.10+\n- Robot Framework 6.0+\n\n### Method 1: PyPI Installation (Recommended)\n```bash\n# Install RobotMCP core (minimal dependencies)\npip install rf-mcp\n# or explicitly\npip install rf-mcp[slim]\n\n# Feature bundles (install what you need)\npip install rf-mcp[web] # Browser Library + SeleniumLibrary\npip install rf-mcp[mobile] # AppiumLibrary\npip install rf-mcp[api] # RequestsLibrary\npip install rf-mcp[database] # DatabaseLibrary\npip install rf-mcp[all] # All optional Robot Framework libraries\n\n# Browser Library still needs Playwright browsers\nrfbrowser init\n# or\npython -m Browser.entry install\n```\n\nPrefer installing individual Robot Framework libraries instead? You still can\u2014\neach extra maps 1:1 to the original packages and their setup guidance below.\n\n### Method 2: Development Installation\n```bash\n# Clone repository\ngit clone https://github.com/manykarim/rf-mcp.git\ncd rf-mcp\n\n# Install with uv (recommended)\nuv sync\n\n# Or with pip\npip install -e .\n```\n\n### Playwright/Browsers for UI Tests\n- Browser Library: run `rfbrowser init` (downloads Playwright and browsers)\n\n### Hint: When using a venv \n\nIf you are using a virtual environment (venv) for your project, I recommend to install the `rf-mcp` package within the same venv.\nWhen starting the MCP server, make sure to use the Python interpreter from that venv.\n\n---\n\n## \ud83d\udd27 MCP Integration\n\n### VS Code (GitHub Code)\n\n```json\n{\n \"servers\": {\n \"robotmcp\": {\n \"type\": \"stdio\",\n \"command\": \"uv\",\n \"args\": [\"run\", \"python\", \"-m\", \"robotmcp.server\"]\n }\n }\n}\n```\n\n```json\n{\n \"servers\": {\n \"robotmcp\": {\n \"type\": \"stdio\",\n \"command\": \"python\",\n \"args\": [\"-m\", \"robotmcp.server\"]\n }\n }\n}\n```\n\n**Hint:** \nIf you set up a virtual environment, make sure to also use the python executable from that venv to start the server.\n\n### Claude Desktop\n\n**Location:** `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)\n\n```json\n{\n \"mcpServers\": {\n \"robotmcp\": {\n \"command\": \"python\",\n \"args\": [\"-m\", \"robotmcp.server\"]\n }\n }\n}\n```\n\n### Other AI Agents\nRobotMCP works with any MCP-compatible AI agent. Use the stdio configuration above.\n\n## \ud83e\ude9d Debug Attach Bridge\n\nRobotMCP ships with `robotmcp.attach.McpAttach`, a lightweight Robot Framework library that exposes the live `ExecutionContext` over a localhost HTTP bridge. When you debug a suite from VS Code (RobotCode) or another IDE, the bridge lets RobotMCP reuse the in-process variables, imports, and keyword search order instead of creating a separate context.\n\n### MCP Server Setup\n\nExample configuration with passed environment variables for Debug Bridge\n\n```json\n{\n \"servers\": {\n \"RobotMCP\": {\n \"type\": \"stdio\",\n \"command\": \"uv\",\n \"args\": [\"run\", \"src/robotmcp/server.py\"],\n \"env\": {\n \"ROBOTMCP_ATTACH_HOST\": \"127.0.0.1\",\n \"ROBOTMCP_ATTACH_PORT\": \"7317\",\n \"ROBOTMCP_ATTACH_TOKEN\": \"change-me\",\n \"ROBOTMCP_ATTACH_DEFAULT\": \"auto\"\n }\n }\n }\n}\n```\n\n### Robot Framework setup\n\nImport the library and start the serve loop inside the suite that you are debugging:\n\n```robotframework\n*** Settings ***\nLibrary robotmcp.attach.McpAttach token=${DEBUG_TOKEN}\n\n*** Variables ***\n${DEBUG_TOKEN} change-me\n\n*** Test Cases ***\nServe From Debugger\n MCP Serve port=7317 token=${DEBUG_TOKEN} mode=blocking poll_ms=100\n [Teardown] MCP Stop\n```\n\n- `MCP Serve port=7317 token=${TOKEN} mode=blocking|step poll_ms=100` \u2014 starts the HTTP server (if not running) and processes bridge commands. Use `mode=step` during keyword body execution to process exactly one queued request.\n- `MCP Stop` \u2014 signals the serve loop to exit (used from the suite or remotely via RobotMCP `attach_stop_bridge`).\n- `MCP Process Once` \u2014 processes a single pending request and returns immediately; useful when the suite polls between test actions.\n- `MCP Start` \u2014 alias for `MCP Serve` for backwards compatibility.\n\nThe bridge binds to `127.0.0.1` by default and expects clients to send the shared token in the `X-MCP-Token` header.\n\n### Configure RobotMCP to attach\n\nStart `robotmcp.server` with attach routing by providing the bridge connection details via environment variables (token must match the suite):\n\n```bash\nexport ROBOTMCP_ATTACH_HOST=127.0.0.1\nexport ROBOTMCP_ATTACH_PORT=7317 # optional, defaults to 7317\nexport ROBOTMCP_ATTACH_TOKEN=change-me # optional, defaults to 'change-me'\nexport ROBOTMCP_ATTACH_DEFAULT=auto # auto|force|off (auto routes when reachable)\nexport ROBOTMCP_ATTACH_STRICT=0 # set to 1/true to fail when bridge is unreachable\nuv run python -m robotmcp.server\n```\n\nWhen `ROBOTMCP_ATTACH_HOST` is set, `execute_step(..., use_context=true)` and other context-aware tools first try to run inside the live debug session. Use the new MCP tools to manage the bridge from any agent:\n\n- `attach_status` \u2014 reports configuration, reachability, and diagnostics from the bridge (`/diagnostics`).\n- `attach_stop_bridge` \u2014 sends a `/stop` command, which in turn triggers `MCP Stop` in the debugged suite.\n\n---\n\n## \ud83c\udfaa Example Workflows\n\n### \ud83c\udf10 Web Application Testing\n\n**Prompt:**\n```\nUse RobotMCP to create a TestSuite and execute it step wise.\nCreate a test for https://www.saucedemo.com/ that:\n- Logs in to https://www.saucedemo.com/ with valid credentials\n- Adds two items to cart\n- Completes checkout process\n- Verifies success message\n\nUse Selenium Library.\nExecute the test suite stepwise and build the final version afterwards.\n\n```\n\n**Result:** Complete Robot Framework test suite with proper locators, assertions, and structure.\n\n### \ud83d\udcf1 Mobile App Testing\n\n**Prompt:**\n```\nUse RobotMCP to create a TestSuite and execute it step wise.\nIt shall:\n- Launch app from tests/appium/SauceLabs.apk\n- Perform login flow\n- Add products to cart\n- Complete purchase\n\nAppium server is running at http://localhost:4723\nExecute the test suite stepwise and build the final version afterwards.\n```\n\n**Result:** Mobile test suite with AppiumLibrary keywords and device capabilities.\n\n### \ud83d\udd0c API Testing\n\n**Prompt:**\n```\nRead the Restful Booker API documentation at https://restful-booker.herokuapp.com.\nUse RobotMCP to create a TestSuite and execute it step wise.\nIt shall:\n\n- Create a new booking\n- Authenticate as admin\n- Update the booking\n- Delete the booking\n- Verify each response\n\nExecute the test suite stepwise and build the final version afterwards.\n```\n\n**Result:** API test suite using RequestsLibrary with proper error handling.\n\n### \ud83e\uddea XML/Database Testing\n\n**Prompt:**\n```\nCreate a xml file with books and authors.\nUse RobotMCP to create a TestSuite and execute it step wise.\nIt shall:\n- Parse XML structure\n- Validate specific nodes and attributes\n- Assert content values\n- Check XML schema compliance\n\nExecute the test suite stepwise and build the final version afterwards.\n```\n\n**Result:** XML processing test using Robot Framework's XML library.\n\n---\n\n## \ud83d\udd0d MCP Tools Overview\n\nRobotMCP provides a comprehensive toolset organized by function. Highlights:\n\n### Core Execution\n- `analyze_scenario` - Convert natural language to structured test intent\n- `execute_step` - Execute individual Robot Framework keywords\n- `discover_keywords` - Find appropriate keywords for actions\n\n### State & Context Management\n- `get_application_state` - Capture current application state\n- `get_page_source` - Extract DOM with intelligent filtering\n- `get_session_info` - Session configuration and status\n\n### Test Suite Generation\n- `build_test_suite` - Generate Robot Framework test files\n- `run_test_suite_dry` - Validate test syntax before execution\n- `run_test_suite` - Execute complete test suites\n\n### Library Discovery\n- `recommend_libraries` - Suggest appropriate RF libraries\n- `check_library_availability` - Verify library installation\n- `get_available_keywords` - List all available keywords\n- `search_keywords` - Find keywords by pattern\n\n### RF Context & Imports\n- `import_resource` - Import a `.resource` file into the session RF Namespace\n- `import_custom_library` - Import a custom Python library (module name or file path)\n- `list_available_keywords` - List keywords from session libraries/resources (context-aware)\n- `get_session_keyword_documentation` - Get docs/signature for a session keyword\n- `diagnose_rf_context` - Inspect session RF context (libraries, variables count)\n- `attach_status` - Inspect attach-mode configuration and bridge reachability\n- `attach_stop_bridge` - Stop the active MCP bridge loop inside the debugged suite\n\n### Locator Guidance\n- `get_selenium_locator_guidance` - SeleniumLibrary selector help\n- `get_browser_locator_guidance` - Browser Library (Playwright) guidance\n- `get_appium_locator_guidance` - Mobile locator strategies\n\n### Advanced Features\n- `set_library_search_order` - Control keyword resolution precedence\n- `initialize_context` - Set up test sessions with variables\n- `get_session_validation_status` - Check test readiness\n\n*For detailed tool documentation, see the [Tools Reference](#-tools-reference) section.*\n\n---\n\n## \ud83c\udfd7\ufe0f Architecture\n\n### Service-Oriented Design\n```\n\ud83d\udce6 ExecutionCoordinator (Main Orchestrator)\n\u251c\u2500\u2500 \ud83d\udd24 SessionManager - Session lifecycle & library management\n\u251c\u2500\u2500 \u2699\ufe0f KeywordExecutor - RF keyword execution engine\n\u251c\u2500\u2500 \ud83c\udf10 BrowserLibraryManager - Browser/Selenium library switching\n\u251c\u2500\u2500 \ud83d\udcca PageSourceService - DOM extraction & filtering\n\u251c\u2500\u2500 \ud83d\udd04 LocatorConverter - Cross-library locator translation\n\u2514\u2500\u2500 \ud83d\udccb SuiteExecutionService - Test suite generation & execution\n```\n\n### Native Robot Framework Integration\n- **ArgumentResolver** - Native RF argument parsing\n- **TypeConverter** - RF type conversion (string \u2192 int/bool/etc.)\n- **LibDoc API** - Direct RF documentation access\n- **Keyword Discovery** - Runtime detection using RF internals\n- **Runner First** - Execute via Namespace.get_runner(...).run(...), fallback to BuiltIn.run_keyword\n\n### Session Management\n- Auto-configuration based on scenario analysis\n- Browser library conflict resolution (Browser vs Selenium)\n- Cross-session state persistence\n- Mobile capability detection and setup\n\n---\n\n## \ud83d\udcda Tools Reference\n\n### `analyze_scenario`\nConvert natural language test descriptions into structured test intents with automatic session creation.\n\n```python\n{\n \"scenario\": \"Test user login with valid credentials\",\n \"context\": \"web\",\n \"session_id\": \"optional-session-id\"\n}\n```\n\n### `execute_step`\nExecute individual Robot Framework keywords with advanced session management.\n\n```python\n{\n \"keyword\": \"Fill Text\",\n \"arguments\": [\"css=input[name='username']\", \"testuser\"],\n \"session_id\": \"default\",\n \"detail_level\": \"minimal\"\n}\n```\n\n### `build_test_suite`\nGenerate production-ready Robot Framework test suites from executed steps.\n\n```python\n{\n \"test_name\": \"User Login Test\",\n \"session_id\": \"default\",\n \"tags\": [\"smoke\", \"login\"],\n \"documentation\": \"Test successful user login flow\"\n}\n```\n\n### `get_browser_locator_guidance`\nGet comprehensive Browser Library locator strategies and error guidance.\n\n```python\n{\n \"error_message\": \"Strict mode violation: multiple elements found\",\n \"keyword_name\": \"Click\"\n}\n```\n\n**Returns:**\n- 10 Playwright locator strategies (css=, xpath=, text=, id=, etc.)\n- Advanced features (cascaded selectors, iframe piercing, shadow DOM)\n- Error-specific guidance and suggestions\n- Best practices for element location\n\n### `attach_status`\nInspect the attach bridge configuration and diagnostics before routing `execute_step` calls into a live debug session.\n\n```python\n{}\n```\n\n**Returns:**\n- `configured`: whether attach mode is active (based on `ROBOTMCP_ATTACH_HOST`)\n- `host`, `port`: bridge connection values when configured\n- `reachable`: true when `/diagnostics` succeeds; includes diagnostics payload when available\n- `default_mode`: value of `ROBOTMCP_ATTACH_DEFAULT` (`auto|force|off`)\n- `strict`: true when `ROBOTMCP_ATTACH_STRICT` demands a reachable bridge\n- `hint`: actionable guidance when not configured or unreachable\n\n### `attach_stop_bridge`\nSend a stop command to the McpAttach bridge to exit `MCP Serve` inside the debugged suite.\n\n```python\n{}\n```\n\n**Returns:**\n- `success`: true when the bridge acknowledged the stop request\n- `response`: raw payload returned by the bridge (`{\"success\": true}` on success)\n\n### `get_selenium_locator_guidance`\nGet comprehensive SeleniumLibrary locator strategies and troubleshooting.\n\n```python\n{\n \"error_message\": \"Element not found: name=firstname\",\n \"keyword_name\": \"Input Text\"\n}\n```\n\n**Returns:**\n- 14 SeleniumLibrary locator strategies (id:, name:, css:, xpath:, etc.)\n- Locator format analysis and recommendations\n- Timeout and waiting strategy guidance\n- Element location best practices\n\n*For complete tool documentation, see the source code docstrings.*\n\n---\n\n## \ud83e\uddea Example Generated Test Suite\n\n```robot\n*** Settings ***\nDocumentation Test suite for validating the complete checkout process on Sauce Demo website\nLibrary Browser\nLibrary Collections\nForce Tags e2e checkout smoke\n\n*** Variables ***\n${URL} https://www.saucedemo.com/\n${USERNAME} standard_user\n${PASSWORD} secret_sauce\n${FIRST_NAME} John\n${LAST_NAME} Doe\n${POSTAL_CODE} 12345\n${EXPECTED_SUCCESS_MSG} Thank you for your order!\n\n*** Test Cases ***\nComplete Checkout Process Test\n [Documentation] Validates the complete checkout process on Sauce Demo:\n ... 1. Opens the website\n ... 2. Logs in with valid credentials\n ... 3. Adds items to cart\n ... 4. Completes checkout process\n \n # Setup and login\n Open Browser And Navigate To Login Page\n Login With Valid Credentials\n Verify Successful Login\n \n # Add items to cart\n Add Item To Cart id=add-to-cart-sauce-labs-backpack\n Verify Item Count In Cart 1\n Add Item To Cart id=add-to-cart-sauce-labs-bike-light\n Verify Item Count In Cart 2\n \n # Checkout process\n Go To Cart\n Start Checkout\n Fill Checkout Information\n Complete Checkout\n \n # Verify successful checkout\n Verify Checkout Success\n \n # Cleanup\n Close Browser\n\n*** Keywords ***\nOpen Browser And Navigate To Login Page\n New Browser chromium headless=False\n New Context viewport={'width': 1280, 'height': 720}\n New Page ${URL}\n \nLogin With Valid Credentials\n Fill Text id=user-name ${USERNAME}\n Fill Text id=password ${PASSWORD}\n Click id=login-button\n\nVerify Successful Login\n Wait For Elements State .inventory_list visible\n ${current_url}= Get Url\n Should Contain ${current_url} inventory.html\n\nAdd Item To Cart\n [Arguments] ${item_id}\n Click ${item_id}\n\nVerify Item Count In Cart\n [Arguments] ${expected_count}\n ${cart_count}= Get Text .shopping_cart_badge\n Should Be Equal As Strings ${cart_count} ${expected_count}\n\nGo To Cart\n Click .shopping_cart_link\n\nStart Checkout\n Click id=checkout\n\nFill Checkout Information\n Fill Text id=first-name ${FIRST_NAME}\n Fill Text id=last-name ${LAST_NAME}\n Fill Text id=postal-code ${POSTAL_CODE}\n Click id=continue\n\nComplete Checkout\n Click id=finish\n\nVerify Checkout Success\n ${success_message}= Get Text h2\n Should Be Equal As Strings ${success_message} ${EXPECTED_SUCCESS_MSG}\n```\n\nOriginal prompt:\n```bash\nUse RobotMCP to create a TestSuite and execute it step wise.\n\n- Open https://www.saucedemo.com/\n- Login with valid user\n- Assert login was successful\n- Add item to cart\n- Assert item was added to cart\n- Add another item to cart\n- Assert another item was added to cart\n- Checkout\n- Assert checkout was successful\n\nExecute step by step and build final test suite afterwards.\nMake a clean and maintainable test suite\n```\n\n---\n\n## \ud83d\udd04 Recommended Workflow\n\n### 1. **Analysis Phase**\n```\nUse analyze_scenario to understand test requirements and create session\n```\n\n### 2. **Library Setup**\n```\nGet recommendations with recommend_libraries\nCheck availability with check_library_availability\n```\n\n### 3. **Interactive Development**\n```\nExecute steps one by one with execute_step\nGet page state with get_page_source\nUse locator guidance tools for element issues\n```\n\n### 4. **Suite Generation**\n```\nValidate session with get_session_validation_status\nGenerate suite with build_test_suite\nValidate syntax with run_test_suite_dry\nExecute with run_test_suite\n```\n\n---\n\n## \ud83c\udfaf Pro Tips\n\n### \ud83d\udd0d **Element Location**\n- Use `get_page_source` with `filtered=true` to see automation-relevant elements\n- Leverage locator guidance tools when elements aren't found\n- Browser Library supports modern selectors (text=, data-testid=, etc.)\n\n### \u26a1 **Performance**\n- Use `detail_level=\"minimal\"` to reduce response size by 80-90%\n- Enable DOM filtering to focus on interactive elements\n- Session management maintains state across interactions\n\n### \ud83d\udee1\ufe0f **Reliability**\n- Execute steps individually before building suites\n- Use `run_test_suite_dry` to catch issues early\n- Leverage native RF integration for maximum compatibility\n- Prefer context mode for BuiltIn keywords (Evaluate, Set Variables, control flow)\n- `execute_step` auto-retries via RF context when a keyword isn\u2019t found\n\n### \ud83c\udf10 **Cross-Platform**\n- Sessions auto-detect context (web/mobile/api) from scenarios\n- Library conflicts are automatically resolved\n- Mobile sessions configure Appium capabilities automatically\n- Test suite paths use `${/}` for OS-independent imports; module names stay as-is\n\n---\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! Here's how to get started:\n\n1. **Fork** the repository\n2. **Clone** your fork locally\n3. **Install** development dependencies: `uv sync`\n4. **Create** a feature branch\n5. **Add** comprehensive tests for new functionality\n6. **Run** tests: `uv run pytest tests/`\n7. **Submit** a pull request\n\n### Optional Dependency Matrix\n```bash\n# Run Browser/Selenium focused tests\nuv run pytest -m optional_web -q\n\n# Run API smoke tests\nuv run pytest -m optional_api -q\n\n# Run combined web+api tests\nuv run pytest -m optional_web_api -q\n\n# Convenience helper (installs extras + executes markers)\npython scripts/run_optional_tests.py web api web+api\n```\n\n### Development Commands\n```bash\n# Run tests\nuv run pytest tests/\n\n# Format code\nuv run black src/\n\n# Type checking\nuv run mypy src/\n\n# Start development server\nuv run python -m robotmcp.server\n\n# Build package\nuv build\n```\n\n---\n\n## \ud83e\udde9 RF Context Execution\n\n- Persistent per-session Namespace + ExecutionContext are created on demand.\n- Runner-first dispatch: `Namespace.get_runner(...).run(...)`, with fallback to `BuiltIn.run_keyword`.\n- Variables and imports persist within the session; `get_context_variables` surfaces a sanitized snapshot.\n- RequestsLibrary session keywords default to runner path; disable via `ROBOTMCP_RF_RUNNER_REQUESTS=0`.\n- Non-context executions automatically retry in RF context when a keyword cannot be resolved (helps user keywords/resources).\n\nCommon cases that require `use_context=true` in `execute_step`:\n- BuiltIn control flow and variables: Evaluate, Set Test/Suite/Global Variable, Run Keywords\n- Keywords relying on session imports/resources\n- Complex named/positional/mixed arguments where RF\u2019s resolver is desired\n\n---\n\n## \ud83d\udce6 CI with uv (GitHub Actions)\n\n- Matrix for Python 3.10\u20133.12 on Ubuntu, macOS, Windows\n- Uses `astral-sh/setup-uv` and `uv sync` for installs\n- Initializes Browser Library with `rfbrowser init` (continues on error)\n- Runs tests via `uv run pytest`\n- Builds artifacts with `uv build` and uploads `dist/*`\n\n---\n\n## \ud83d\udcc4 License\n\nApache 2.0 License - see [LICENSE](LICENSE) file for details.\n\n---\n\n## \ud83c\udf1f Why RobotMCP?\n\n### For AI Agents\n- **\ud83e\udd16 Agent-Optimized**: Structured responses designed for AI processing\n- **\ud83e\udde0 Context-Aware**: Rich error messages with actionable guidance\n- **\u26a1 Token-Efficient**: Minimal response mode reduces costs significantly\n\n### For Test Engineers\n- **\ud83d\udee1\ufe0f Production-Ready**: Native Robot Framework integration\n- **\ud83d\udd27 Flexible**: Multi-library support (Browser, Selenium, Appium, etc.)\n- **\ud83d\udcca Comprehensive**: 20 tools covering complete automation workflow\n\n### For Teams\n- **\ud83d\udcdd Maintainable**: Generates clean, documented Robot Framework code\n- **\ud83d\udd04 Iterative**: Step-by-step development and validation\n- **\ud83c\udf10 Scalable**: Session-based architecture supports complex scenarios\n\n---\n\n## \ud83d\udcac Support & Community\n\n- \ud83d\udc1b **Issues**: [GitHub Issues](https://github.com/manykarim/rf-mcp/issues)\n- \ud83d\udca1 **Feature Requests**: [GitHub Discussions](https://github.com/manykarim/rf-mcp/discussions)\n- \ud83d\udcd6 **Documentation**: Tool docstrings and examples\n- \ud83d\ude80 **Latest Updates**: Check releases for new features\n\n---\n\n**\u2b50 Star us on GitHub if RobotMCP helps your test automation journey!**\n\nMade with \u2764\ufe0f for the Robot Framework and AI automation community.\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Robot Framework MCP Server - Natural Language Test Automation Bridge",
"version": "0.23.0",
"project_urls": {
"Bug Tracker": "https://github.com/manykarim/rf-mcp/issues",
"Documentation": "https://github.com/manykarim/rf-mcp#readme",
"Homepage": "https://github.com/manykarim/rf-mcp",
"Repository": "https://github.com/manykarim/rf-mcp"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "66583126728a82582a7e769a3d6fe42243f2fa3db971d28933ff221d42339d49",
"md5": "62339cf9521cec5483a7a30592890ff3",
"sha256": "2a136265781e45977f6b1549b7962005dad8e5311dfc524ce231dfaa9a214ea8"
},
"downloads": -1,
"filename": "rf_mcp-0.23.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "62339cf9521cec5483a7a30592890ff3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 271732,
"upload_time": "2025-10-23T13:42:27",
"upload_time_iso_8601": "2025-10-23T13:42:27.044845Z",
"url": "https://files.pythonhosted.org/packages/66/58/3126728a82582a7e769a3d6fe42243f2fa3db971d28933ff221d42339d49/rf_mcp-0.23.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cc71095e327557833088c0f33f424bb185bd5d19100727225c4da1c90e7cc5c4",
"md5": "95c6fca0c29d8d30f8137534cd4f7d3e",
"sha256": "5246f5db3e0a720c3b5725235f8eae5604860ebe0cb7bbfec3f67f87ce9d1028"
},
"downloads": -1,
"filename": "rf_mcp-0.23.0.tar.gz",
"has_sig": false,
"md5_digest": "95c6fca0c29d8d30f8137534cd4f7d3e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 245465,
"upload_time": "2025-10-23T13:42:34",
"upload_time_iso_8601": "2025-10-23T13:42:34.062979Z",
"url": "https://files.pythonhosted.org/packages/cc/71/095e327557833088c0f33f424bb185bd5d19100727225c4da1c90e7cc5c4/rf_mcp-0.23.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-23 13:42:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "manykarim",
"github_project": "rf-mcp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "rf-mcp"
}