Model Context Protocol implementation for Robot Framework
npm install robotframework-mcpA Model Context Protocol (MCP) server implementation for Robot Framework's SeleniumLibrary, enabling browser automation through standardized MCP clients like Claude Desktop, Goose, and others.
* Start browser sessions with Chrome and Firefox (with customizable options)
* Navigate to URLs
* Find elements using various locator strategies
* Element interactions (click, type, hover, drag and drop)
* Keyboard input handling
* Screenshot capabilities
* File uploads
* Support for headless mode
* Node.js (v14 or later)
* Robot Framework
* Robot Framework SeleniumLibrary
* Selenium WebDriver
``bash`
npm install -g robotframework-mcp
1. Clone this repository
2. Navigate to the project directory
3. Install dependencies:
`bash`
npm install
Start the MCP server from the command line:
`bash`
robotframework-mcp
Options:
- --port, -p : Port to listen on (default: 3000)--auto-port, -a
- : Automatically find an available port if the specified one is busy--help, -h
- : Display help message--version, -v
- : Display version information
#### Troubleshooting Port Conflicts
If you see an error like EADDRINUSE: address already in use, it means the default port (3000) is already being used by another application. You can:
1. Specify a different port:
`bash`
robotframework-mcp --port 3001
2. Use the auto-port feature to automatically find an available port:
`bash`
robotframework-mcp --auto-port
You can also use the package programmatically in your own Node.js projects:
`javascript
const { startServer } = require('robotframework-mcp');
// Start the MCP server on port 3000
startServer(3000);
// Now you can use MCP clients to interact with Robot Framework
`
For handling port conflicts programmatically, you can implement your own port detection logic or catch the error and retry with a different port:
`javascript
const { startServer } = require('robotframework-mcp');
function startServerWithRetry(port, maxRetries = 5) {
try {
startServer(port);
console.log(Server started on port ${port});Port ${port} in use, trying ${port + 1}...
} catch (error) {
if (error.code === 'EADDRINUSE' && maxRetries > 0) {
console.log();
startServerWithRetry(port + 1, maxRetries - 1);
} else {
throw error;
}
}
}
startServerWithRetry(3000);
`
Configure your MCP client to use this server:
`json`
{
"mcpServers": {
"robotframework": {
"command": "npx",
"args": ["-y", "robotframework-mcp"]
}
}
}
The following MCP tools are supported:
- start_browser: Launches a browser sessionnavigate
- : Navigates to a URLclose_session
- : Closes the browser sessiontake_screenshot
- : Captures a screenshot
- find_element: Locates an element on the pageclick_element
- : Clicks an elementsend_keys
- : Types text into an input elementget_element_text
- : Gets the text content of an elementhover
- : Moves the mouse over an elementdrag_and_drop
- : Drags an element to another elementdouble_click
- : Performs a double-click on an elementright_click
- : Performs a right-click on an elementupload_file
- : Uploads a file using a file input element
- press_key: Simulates pressing a keyboard key
This MCP server acts as a bridge between MCP clients and Robot Framework:
1. The MCP client sends a tool request to the server
2. The server translates the MCP tool request into Robot Framework commands
3. The server generates a temporary Robot Framework script
4. Robot Framework executes the script
5. The server processes the result and returns it to the MCP client
To add new tools:
1. Create a new function in the appropriate tool file
2. Add the function to the exports in the tool file
3. Add the tool to the tools map in src/lib/tools/index.js`
MIT