RobotMCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ROBOTMCP_ATTACH_HOST | No | Attach bridge host (enables attach mode) | |
| ROBOTMCP_ATTACH_PORT | No | Attach bridge port | 7317 |
| ROBOTMCP_OUTPUT_MODE | No | Default get_session_state response mode: auto, full, delta | auto |
| ROBOTMCP_ATTACH_TOKEN | No | Shared auth token for attach bridge | change-me |
| ROBOTMCP_INSTRUCTIONS | No | Instruction mode: off, default, or custom | default |
| ROBOTMCP_MEMORY_MODEL | No | Embedding model for similarity search | potion-base-8M |
| ROBOTMCP_TOOL_PROFILE | No | Default tool profile: browser_exec, api_exec, discovery, minimal_exec, full | auto |
| ROBOTMCP_USE_SAMPLING | No | Enable LLM-powered scenario analysis: true, 1, yes | |
| ROBOTMCP_ATTACH_STRICT | No | Fail if bridge unreachable: 0 or 1 | 0 |
| ROBOTMCP_FRONTEND_HOST | No | Dashboard host | localhost |
| ROBOTMCP_FRONTEND_PORT | No | Dashboard port | 8001 |
| ROBOTMCP_ATTACH_DEFAULT | No | Attach routing mode: auto, force, off | auto |
| ROBOTMCP_FRONTEND_DEBUG | No | Django debug mode: 0 or 1 | 1 |
| ROBOTMCP_MEMORY_DB_PATH | No | SQLite database path for memory storage | ./robotmcp_memory.db |
| ROBOTMCP_MEMORY_ENABLED | No | Enable persistent semantic memory: true, 1, yes | |
| ROBOTMCP_PRE_VALIDATION | No | Enable element pre-validation before actions: 0 or 1 | 1 |
| ROBOTMCP_ENABLE_FRONTEND | No | Enable dashboard: 0 or 1 | 0 |
| ROBOTMCP_STARTUP_CLEANUP | No | Session cleanup on server start: auto, on, off | auto |
| ROBOTMCP_OUTPUT_VERBOSITY | No | Response detail level: compact, standard, verbose | standard |
| ROBOTMCP_INSTRUCTIONS_FILE | No | Path to custom instructions file | |
| ROBOTMCP_FRONTEND_BASE_PATH | No | URL base path prefix | / |
| ROBOTMCP_INSTRUCTIONS_TEMPLATE | No | Instruction template: minimal, standard, detailed, browser-focused, api-focused | standard |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| manage_library_pluginsC | Inspect or reload library plugins. |
| recommend_librariesA | Recommend libraries for a scenario or generate/merge sampling prompts. WHEN TO USE THIS TOOL:
This tool analyzes scenario text and suggests relevant libraries, saving you from guessing which libraries to import. |
| analyze_scenarioA | Analyze a natural-language scenario into structured intent and create a session. WORKFLOW: This is the single front door — your FIRST tool call for any test scenario. It CREATES the session, so do NOT also call manage_session(action="init") for the same scenario (that causes redundant session churn). Reuse the returned session_id in every later call. What this tool does:
CRITICAL: Save the session_id from the response and use it in all other tool calls. |
| find_keywordsA | Discover Robot Framework keywords using multiple strategies. WHEN TO USE THIS TOOL:
|
| manage_sessionA | Manage session lifecycle: initialize, configure libraries/variables, and organize tests. For a NEW scenario, prefer analyze_scenario — it is the front door that CREATES the session (and auto-configures libraries). Use manage_session for explicit session ops on an existing session (importing extra libraries/resources/variables, multi-test structure). Do NOT call action="init" right after analyze_scenario — the session already exists; that only causes redundant churn. Workflows: Single test: analyze_scenario -> execute_step (repeat) -> build_test_suite Multi-test: analyze_scenario -> set_suite_setup -> start_test -> execute_step (repeat) -> end_test -> start_test -> ... -> build_test_suite (action="init" is the explicit alternative when you are NOT starting from analyze_scenario, e.g. driving a bare session directly.) Actions and parameters (session_id is always required): Returns: Dict with success, session_id, and action-specific details. On failure: error and guidance fields are present. Examples: Initialize session with libraries: manage_session(action="init", session_id="s1", libraries=["Browser", "BuiltIn", "Collections"]) |
| execute_flowB | Execute structured flow (if/for/try) within a session. |
| get_session_stateC | Retrieve aggregated session state for debugging and visibility. |
| execute_stepB | Execute a single Robot Framework keyword (or Evaluate) within a session. |
| build_test_suiteC | Generate a Robot Framework test suite from previously executed steps. |
| check_library_availabilityA | Verify that specified Robot Framework libraries can be imported/installed. Recommended as step 3 after analyze_scenario and recommend_libraries; use the recommended names to avoid unnecessary checks. |
| execute_batchA | Execute multiple RF keywords in one call with recovery and variable chaining. Reduces N MCP round-trips to 1. Steps run sequentially; each step's return value is available to later steps via ${STEP_N} references in arguments. Both 0-based (${STEP_0} = first step) and 1-based (${STEP_1} = first step) indexing are accepted. When ambiguous, 1-based is preferred. |
| resume_batchA | Resume a failed batch from its failure point, optionally inserting fix steps. After execute_batch returns status=FAIL with a batch_id, call this to:
|
| get_keyword_infoA | Get keyword/library docs or parse a signature. Call this before execute_step when you know the keyword name but not its arguments. Modes: "keyword" (default — document one keyword), "library" (list a library's keywords), "session" (resolve against the live session namespace), "parse" (parse a signature string). Pass session_id to scope the lookup to that session's libraries. |
| set_library_search_orderC | Set explicit library search order for keyword resolution. |
| get_locator_guidanceA | Provide locator/selector guidance for Browser, SeleniumLibrary, AppiumLibrary, PlatynUI.BareMetal, or RequestsLibrary. For API testing, call with library="requests" (or "api") to get a RequestsLibrary request/response cookbook — session setup, response-field access (${resp.json()["field"]}), the $resp-in-Evaluate rule, Status Should Be, JSON body/headers, the Cookie token header, and expected_status= for non-2xx — BEFORE writing Evaluate-based assertions. For VISUAL validation, call with library="visual" (or "screenshot") to learn WHEN a screenshot beats the DOM/ARIA tree (canvas/image text, layout/overlap, obscured elements, color, charts) and the dual read-back pattern — useful for any UI library (Browser/Selenium/Appium/PlatynUI) when a multimodal model drives rf-mcp. |
| visual_checkA | Capture a screenshot of the current UI for VISUAL validation (change: visual-inspection-guidance). Token-cheap by DEFAULT: saves the screenshot to disk and returns the PATH as text — a multimodal agent WITH file access reads that file on demand for checks the DOM/ARIA can't do (canvas/image text, layout/overlap, obscured elements, color, charts). Call get_locator_guidance(library="visual") for when to use it. Set return_image=true ONLY if your model is multimodal AND cannot read the saved file (e.g. a hosted/remote MCP): the response then includes an image content block. This requires ROBOTMCP_SCREENSHOT_MODE to allow images (image|auto); text-only deployments (mode=file, the default) always return just the path so a text-only model is never sent unsupported image content. Works across Browser/SeleniumLibrary/AppiumLibrary/PlatynUI (uses the session's screenshot keyword). Degrades cleanly if capture fails. |
| run_test_suiteC | Validate or execute a Robot Framework suite. |
| manage_attachC | Inspect or control attach bridge configuration. |
| intent_actionA | Execute a high-level intent that auto-resolves to the correct library keyword. Valid intents: navigate, click, fill, hover, select, assert_visible, extract, wait_for. Also accepted but DEPRECATED:
The intent is resolved based on the session's active library (Browser/SeleniumLibrary/AppiumLibrary). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| automate | Uses RobotMCP to create a test suite from a scenario description |
| learn | Guides a user through automation and explains the generated code/choices. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/manykarim/rf-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server