Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ROBOTMCP_ATTACH_HOSTNoAttach bridge host (enables attach mode)
ROBOTMCP_ATTACH_PORTNoAttach bridge port7317
ROBOTMCP_OUTPUT_MODENoDefault get_session_state response mode: auto, full, deltaauto
ROBOTMCP_ATTACH_TOKENNoShared auth token for attach bridgechange-me
ROBOTMCP_INSTRUCTIONSNoInstruction mode: off, default, or customdefault
ROBOTMCP_MEMORY_MODELNoEmbedding model for similarity searchpotion-base-8M
ROBOTMCP_TOOL_PROFILENoDefault tool profile: browser_exec, api_exec, discovery, minimal_exec, fullauto
ROBOTMCP_USE_SAMPLINGNoEnable LLM-powered scenario analysis: true, 1, yes
ROBOTMCP_ATTACH_STRICTNoFail if bridge unreachable: 0 or 10
ROBOTMCP_FRONTEND_HOSTNoDashboard hostlocalhost
ROBOTMCP_FRONTEND_PORTNoDashboard port8001
ROBOTMCP_ATTACH_DEFAULTNoAttach routing mode: auto, force, offauto
ROBOTMCP_FRONTEND_DEBUGNoDjango debug mode: 0 or 11
ROBOTMCP_MEMORY_DB_PATHNoSQLite database path for memory storage./robotmcp_memory.db
ROBOTMCP_MEMORY_ENABLEDNoEnable persistent semantic memory: true, 1, yes
ROBOTMCP_PRE_VALIDATIONNoEnable element pre-validation before actions: 0 or 11
ROBOTMCP_ENABLE_FRONTENDNoEnable dashboard: 0 or 10
ROBOTMCP_STARTUP_CLEANUPNoSession cleanup on server start: auto, on, offauto
ROBOTMCP_OUTPUT_VERBOSITYNoResponse detail level: compact, standard, verbosestandard
ROBOTMCP_INSTRUCTIONS_FILENoPath to custom instructions file
ROBOTMCP_FRONTEND_BASE_PATHNoURL base path prefix/
ROBOTMCP_INSTRUCTIONS_TEMPLATENoInstruction template: minimal, standard, detailed, browser-focused, api-focusedstandard

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

CapabilityDetails
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

NameDescription
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:

  • IMMEDIATELY after analyze_scenario, before execute_step

  • When you encounter "No keyword with name" errors

  • To discover which libraries provide needed functionality

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:

  1. Creates a new session with unique session_id (or reuses provided one)

  2. Analyzes scenario to detect context (web/api/mobile/desktop)

  3. Auto-configures libraries based on scenario text

  4. Returns session_id for use in ALL subsequent tool calls

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:

  • ALWAYS before calling execute_step with an unfamiliar keyword

  • When you're unsure of exact keyword name or spelling

  • To discover what keywords are available in imported libraries

  • When error says "No keyword with name 'X' found"

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):

init             - Create session and load libraries (explicit entry; for a new
                   scenario prefer analyze_scenario instead).
                   Params: libraries (list of library names),
                           variables (dict or list to pre-set).

import_library   - Add a library to an existing session.
                   Params: library_name, args (constructor args), alias.

import_resource  - Import a Robot Framework resource file.
                   Params: resource_path, args.

set_variables    - Set variables in the session.
                   Params: variables (dict {"NAME": "value"} or list ["NAME=value"]),
                           scope ("test" | "suite" | "global", default "suite").

import_variables - Load variables from a Python variable file.
                   Params: variable_file_path, args (passed to get_variables()).

start_test       - Begin a named test (enables multi-test mode). Local mode only.
                   Params: test_name (required),
                           test_documentation, test_tags,
                           test_setup (dict {"keyword": "...", "arguments": [...]}),
                           test_teardown (same format as test_setup).
                   Alias: start_task.

end_test         - End the current test. Local mode only.
                   Params: test_status ("pass" or "fail", default "pass"),
                           test_message (optional error description).
                   NOTE: test_status and test_message are session tracking metadata.
                   They do NOT affect the .robot file generated by build_test_suite.
                   Alias: end_task.

add_data_row     - Add a data row to the current data-driven (template) test.
                   Requires an active test with template set via start_test.
                   Params: args (list of values matching the template keyword's [Arguments]).
                   Alias: data_row.
                   Example:
                     manage_session(action="start_test", test_name="Cart Test",
                                  template="Add And Verify Product")
                     manage_session(action="add_data_row", args=["Backpack", "1", "$29.99"])
                     manage_session(action="add_data_row", args=["Bike Light", "2", "$39.98"])
                     manage_session(action="end_test")
                   The data rows appear under [Template] in the generated .robot file.

list_tests       - List all tests in the session with their status and step counts.
                   Params: (none).

set_suite_setup    - Set a suite-level setup keyword (appears in *** Settings ***).
                     Params: keyword (required), args (keyword arguments).

set_suite_teardown - Set a suite-level teardown keyword (appears in *** Settings ***).
                     Params: keyword (required), args (keyword arguments).

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"])

Set suite-level variables:
    manage_session(action="set_variables", session_id="s1",
                   variables={"BASE_URL": "https://example.com", "TIMEOUT": "30"})

Import a library with constructor arguments:
    manage_session(action="import_library", session_id="s1",
                   library_name="Browser", args=["chromium"])

Load a Python variable file:
    manage_session(action="import_variables", session_id="s1",
                   variable_file_path="config/variables.py",
                   args=["production", "secret_key"])

Start a named test (multi-test mode):
    manage_session(action="start_test", session_id="s1",
                   test_name="Login Test", test_tags=["smoke"],
                   test_setup={"keyword": "Open Browser", "arguments": ["chromium"]})

End the current test:
    manage_session(action="end_test", session_id="s1")

Set suite setup (for generated .robot file):
    manage_session(action="set_suite_setup", session_id="s1",
                   keyword="New Browser", args=["chromium"])

Set suite teardown:
    manage_session(action="set_suite_teardown", session_id="s1",
                   keyword="Close Browser")
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:

  1. Re-run the failed step (with optional fix_steps injected before it)

  2. Continue executing remaining steps from the original batch

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:

  • extract_text — equivalent to extract with mode="text". The extract verb is the canonical mode-aware getter (text / attribute / count / value / url / title) and additionally surfaces extracted_value at the top level of the response. extract_text will be removed in a future release; prefer intent="extract" for new code.

The intent is resolved based on the session's active library (Browser/SeleniumLibrary/AppiumLibrary).

Prompts

Interactive templates invoked by user choice

NameDescription
automateUses RobotMCP to create a test suite from a scenario description
learnGuides a user through automation and explains the generated code/choices.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/manykarim/rf-mcp'

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