robot-ai-mcp
Provides tools for Robot Framework test automation, including discovering tests and resources, creating test drafts from requirements, dry-running and executing suites, and parsing Robot Framework output.xml results.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@robot-ai-mcplist all test cases in the login suite"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Robot AI Tools
An MCP server for agentic development with Robot Framework.
What's Included
robot-ai-mcp: local MCP server exposing Robot Framework operations.
The MCP server provides these tools:
robot_list_tests: discover test cases, tags, source files, and line numbers without executing them.robot_list_resources: discover.resourcefiles, keywords, arguments, and imports without executing them.robot_create_test: create a reviewable draft from a natural-language requirement using project.resourcefiles, libraries, and matched keywords.robot_dry_run: validate imports, variables, and keyword resolution without running test keywords.robot_run: execute selected suites with optional include/exclude tags and return compact results and failure details.robot_parse_results: summarize a Robotoutput.xmlfile.
All paths are resolved relative to the workspace and must remain inside it. Execution uses argument-list subprocesses, bounded responses, and a timeout.
Related MCP server: RobotMCP
Trust Boundary
The MCP server is intended for a trusted local workspace. It does not sandbox Robot Framework, Python libraries, variable files, subprocesses, network access, or environment variables. A Robot suite can therefore read files, access the network, start processes, and execute Python code with the same OS permissions as the MCP server.
Only point the server at repositories and test dependencies that you trust. Do not expose this local server to untrusted clients or use it as a security boundary. The server rejects paths outside the workspace, but that check does not replace operating-system isolation.
By default, execution removes obvious credential-like environment variables
such as tokens, passwords, secrets, and API keys. If a trusted test requires
one of them, list its name in ROBOT_AI_ENV_ALLOWLIST as a comma-separated
environment variable. Test output and Robot-generated HTML artifacts can still
contain sensitive data and must be handled accordingly.
Requirements
Python 3.10 or newer
Robot Framework 6.1 or newer
Setup
Install the locked dependencies and run the test suite:
uv sync --locked --all-groups
uv run --locked --no-sync pytest
uv run --locked --no-sync ruff check src tests
uv run --locked --no-sync mypy srcRun the MCP server directly when needed:
uv run --locked --no-sync robot-ai-mcpThe repository does not include client-specific agent configuration. Configure the MCP server in the client of your choice using the local STDIO transport.
OpenCode
Add the following entry to your OpenCode configuration, such as the project
opencode.json or your user configuration:
{
"mcp": {
"robot-framework": {
"type": "local",
"command": [
"uv",
"--directory",
"/absolute/path/to/robot-ai-tools",
"run",
"--locked",
"--no-sync",
"robot-ai-mcp"
],
"enabled": true,
"timeout": 360000
}
}
}Replace /absolute/path/to/robot-ai-tools with the repository path. Restart
the client after changing its MCP configuration.
Kilo Code
Kilo Code supports this MCP through the local STDIO transport. Create a
project-level kilo.jsonc in the repository root, or use .kilo/kilo.jsonc:
{
"mcp": {
"robot-framework": {
"type": "local",
"command": [
"uv",
"--directory",
"/absolute/path/to/robot-ai-tools",
"run",
"--locked",
"--no-sync",
"robot-ai-mcp"
],
"enabled": true,
"timeout": 360000
}
}
}Replace /absolute/path/to/robot-ai-tools with the path to this repository.
The timeout value is in milliseconds. Kilo Code will then discover
robot_list_tests, robot_list_resources, robot_create_test, robot_run,
robot_dry_run, and robot_parse_results. Approve the tools in Kilo Code when
prompted, or add them to its MCP permissions according to your local policy.
The server is intended for trusted workspaces and is not sandboxed. See Trust Boundary before enabling it for a project.
Other MCP Clients
For another MCP-compatible agent, add a local/STDIO server using the same
command and arguments shown above. Clients that use separate command and
args fields should configure them as follows:
command: uv
args: --directory /absolute/path/to/robot-ai-tools run --locked --no-sync robot-ai-mcpUse the client's equivalent of enabled, configure a timeout of at least five
minutes for long-running Robot suites, and pass workspace explicitly when the
client does not start the server from the repository directory.
Typical Workflow
Use the tools in this order when adding or changing a test:
Discover the relevant suite with
robot_list_testsand existing keywords withrobot_list_resources.Create a draft with
robot_create_testwhen starting from a requirement.Replace the draft's intentional
Failplaceholder with real keywords and assertions.Run
robot_dry_runafter changing imports, variables, or keyword names.Run the smallest relevant scope with
robot_run.Use
robot_parse_resultsto inspect the generatedoutput.xml.
Each execution gets a fresh result directory when output_dir is omitted.
When an explicit directory is supplied, the server removes only the previous
Robot result artifacts before starting, so an old output.xml cannot be
reported as the current execution.
Drafts are tagged ai-generated and draft, document the requirement,
import project .resource files and libraries, and scaffold initial test steps
from matching keywords with argument placeholders. Existing files are protected
unless overwrite=true is explicitly supplied.
Example tool calls:
robot_list_tests(workspace=".", path="tests")
robot_list_resources(workspace=".", path="tests")
robot_create_test(
workspace=".",
request="A valid user can sign in. Show the account page.",
target_path="tests/sign_in.robot",
tags=["auth"]
)
robot_dry_run(workspace=".", paths=["tests/sign_in.robot"])
robot_run(workspace=".", paths=["tests/sign_in.robot"], include_tags=["smoke"])
robot_parse_results(
workspace=".",
output_xml=".robot-ai/results/<run>/output.xml"
)Project Layout
src/robot_ai_tools/ Runner and MCP server implementation
tests/ Python tests and Robot fixturesExtending
Keep tool behavior in src/robot_ai_tools/runner.py and expose thin MCP
wrappers in mcp_server.py. New tools should return structured JSON, enforce
workspace containment, use argument-list subprocesses, and provide bounded or
persisted output. Add agent guidance only for repeatable workflows.
Available Tools
6 toolsrobot_create_testC
Create a reviewable Robot draft using nearby resources, libraries, and reusable keywords.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | ||
| request | Yes | ||
| overwrite | No | ||
| test_name | No | ||
| workspace | No | . | |
| target_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that the result is a reviewable draft, which suggests no immediate execution, but it does not mention file creation, overwrite behavior, side effects, or input expectations. For a creation tool this is a substantial gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant wording. It is appropriately short, though 'nearby resources, libraries, and reusable keywords' is somewhat vague and could be replaced with more precise behavioral content without hurting conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a creation tool with six parameters, no annotations, and no schema descriptions, the description is too thin to let an agent invoke it correctly. It conveys the high-level purpose but omits essential information about required inputs, output behavior, and overwrite semantics. The presence of an output schema helps but does not make up for the missing parameter and behavior guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the six parameters. 'Nearby resources, libraries, and reusable keywords' hints at context but does not clarify the meaning or relationship of request, target_path, workspace, tags, test_name, or overwrite. The description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create') and resource ('reviewable Robot draft'), and the modifier 'reviewable' plus 'draft' distinguishes it from execution-oriented siblings like robot_run and robot_dry_run. It stops short of explicitly naming the output artifact (e.g., a Robot file) or target path, so it is clear but not fully precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool instead of robot_run, robot_dry_run, or robot_list_tests. The 'reviewable draft' phrasing implies it is for authoring rather than executing, but no explicit conditions or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
robot_dry_runA
Validate Robot imports, variables, and keywords without test execution.
Robot libraries and variable files may still execute code while importing.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| timeout | No | ||
| workspace | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It usefully warns that 'Robot libraries and variable files may still execute code while importing', which is a critical non-obvious behavior. It does not describe how validation results are returned, but the output schema likely covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, purposeful sentences. The first states the tool's function and scope; the second adds an important caveat. There is no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's core purpose and a key behavioral warning, and the existence of an output schema reduces the need to explain return values. However, it omits parameter semantics and does not explicitly guide an agent on when to choose this over robot_run or other siblings, leaving some operational context incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no parameter-level guidance. It does not explain what paths should point to, what timeout controls, or how workspace is used. The parameter names are somewhat self-explanatory, but the description adds no semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Validate'), a clear resource ('Robot imports, variables, and keywords'), and an explicit boundary ('without test execution'). This clearly distinguishes it from sibling tools like robot_run and robot_list_tests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without test execution' provides clear usage context: this is a pre-flight validation tool rather than a test runner. It does not explicitly name alternatives, but the execution boundary and the validate-focused wording make the primary use case clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
robot_list_resourcesA
List Robot resource files, keywords, and imports without executing them.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . | |
| workspace | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and explicitly discloses the key behavioral trait: no execution occurs. It clearly signals a safe, read-only operation. It does not describe file discovery behavior or error conditions, but the main side-effect concern is addressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly worded sentence with no filler. It front-loads the core action and scope, then adds the important non-execution qualifier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are unnecessary. However, with zero schema parameter descriptions and no mention of path/workspace roles, the description is not fully complete for correct invocation, even though both parameters are optional with defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented 'path' and 'workspace' parameters. It does not mention either parameter, leaving their meaning and relationship entirely to the agent's guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List'), a clear resource ('Robot resource files, keywords, and imports'), and an explicit qualifier ('without executing them'). This distinguishes it from siblings like robot_run, robot_dry_run, and especially robot_list_tests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without executing them' implies this is for static inspection rather than execution, but the description does not explicitly state when to prefer this over robot_parse_results or robot_list_tests. Sibling differentiation is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
robot_list_testsB
List Robot test cases, tags, source files, and line numbers without executing them.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . | |
| workspace | No | . |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden; it does disclose the key non-execution guarantee, which is valuable for an agent weighing side effects. However, it does not mention file/path expectations, default workspace behavior, or any failure modes, so behavioral coverage remains partial rather than complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no filler; every phrase ('List', 'test cases, tags, source files, and line numbers', 'without executing them') earns its place. The verb and object are front-loaded, making the intent immediately visible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so return values need not be re-described, but the description still lacks parameter semantics and explicit usage guidance for 2 defaults-only parameters. An agent can infer basic behavior from the name and 'without executing,' yet important invocation details (what path/workspace mean, when this is preferable to parsing results) are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never discusses the 'path' or 'workspace' parameters, leaving their meaning, relationship, and constraints entirely to the sparse schema field names and defaults. The description also doesn't clarify whether 'path' refers to a file, directory, or suite pattern, so it fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and concrete resource ('Robot test cases, tags, source files, and line numbers'), and adds 'without executing them' to set it apart from execution-oriented siblings like robot_run and robot_dry_run. This makes the tool's intent immediately actionable and differentiates it from robot_list_resources by naming test cases rather than resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without executing them' implies a safe inspection use case and distinguishes it from run/dry_run, but it never names an alternative or states conditions for choosing this tool over robot_parse_results or robot_list_resources. The guidance is therefore implied rather than explicit, leaving the agent to infer selection rules from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
robot_parse_resultsA
Parse output.xml and return compact test statistics and failure messages.
| Name | Required | Description | Default |
|---|---|---|---|
| workspace | Yes | ||
| output_xml | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. 'Parse... and return' signals a read-only analysis operation and states the shape of the result, but it does not mention error behavior, workspace requirements, or side effects (even though side effects are unlikely).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every word earns its place: the verb, subject, and output are all stated directly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and has an output schema, so return format does not need to be explained. However, the missing workspace semantics and lack of usage guidance leave a moderate gap for an agent deciding whether and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clarifies that output_xml refers to an output.xml file, but it says nothing about the workspace parameter, leaving half of the parameters under-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Parse'), a specific resource ('output.xml'), and the return content ('compact test statistics and failure messages'). This lets an agent distinguish it from sibling tools like robot_run, robot_list_tests, or robot_dry_run, which have clearly different verbs and purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool instead of a sibling, or when not to use it. It implies post-run analysis of a Robot Framework output file, but the agent is left to infer that from the name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
robot_runB
Run selected Robot suites and return JSON with status, failures, and output location.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| timeout | No | ||
| workspace | No | . | |
| output_dir | No | ||
| exclude_tags | No | ||
| include_tags | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It does disclose the core behavior: running suites and returning JSON with status, failures, and output location. However, it does not mention side effects like writing output artifacts, executing arbitrary test code, or consuming significant time/resources beyond the implied execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is concise and places the primary action first, though the brevity contributes to under-specification elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are not the main burden. Still, the description lacks context for tag filtering, workspace semantics, timeout meaning, and when to choose this over robot_dry_run or robot_parse_results, leaving the definition adequate but incomplete for a six-parameter runner tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the six parameters. It only hints at 'selected Robot suites' for paths and 'output location' for output_dir, leaving timeout, workspace, exclude_tags, and include_tags without meaningful explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Run') and resource ('selected Robot suites'), and it names the return payload. However, it does not explicitly distinguish this from the sibling robot_dry_run, so an agent must infer that 'run' means actual execution rather than dry-run.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as robot_dry_run, robot_parse_results, or robot_list_tests. The description does not mention exclusions, prerequisites, or conditions that would route an agent to a sibling.
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.
6 tool updates
v0.1.0- First observed
robot_create_test - First observed
robot_dry_run - First observed
robot_list_resources - First observed
robot_list_tests - First observed
robot_parse_results - First observed
robot_run
TDQS
Scored across 6 tools
Each tool targets a distinct phase of the Robot Framework workflow: static discovery, draft creation, validation, execution, and result analysis. There is no meaningful overlap between listing tests, listing resources, dry-running, running, or parsing results.
Tools consistently use the robot_ prefix and snake_case, with a clear verb_noun pattern for most names (parse_results, list_tests, list_resources, create_test). robot_run and robot_dry_run deviate slightly by omitting an object noun, but the pattern remains predictable and readable.
Six tools is well-scoped for a Robot Framework assistant, covering the essential actions without redundancy. Each tool earns its place in the workflow.
The surface covers the core lifecycle: discover tests/resources, create tests, validate, execute, and parse results. Minor gaps exist such as no tool for updating/deleting tests or detailed log inspection, but these are workarounds rather than dead ends.
Maintenance
Related MCP Connectors
Direct access to Cypress tests results and accessibility reports in your AI workflow.
Approved test intent, reviewed Playwright automation and run evidence, inside your editor.
1Roast any AI agent idea from your IDE: verdict tier, readiness score, top risk, shareable URL.
Agent-readiness scanner (0-5 score), robots.txt + llms.txt generators, managed agent enablement.
Related MCP Servers
FlicenseAqualityFmaintenanceEnables AI agents to run and create Squish test scripts and test suites and analyze the results.1913-- AlicenseAqualityAmaintenanceRobotMCP 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.19114Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables generating Robot Framework test cases with SeleniumLibrary, creating page object models, and performing performance monitoring through natural language.6 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to drive Robot Framework through natural language, discovering keywords, running live test steps across web, mobile, API, database, and desktop targets, and generating clean .robot test suites from plain-English instructions.Apache 2.0