Selenium MCP Server
Click on "Install 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., "@Selenium MCP ServerGo to wikipedia.org and search for 'Selenium'"
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.
Selenium MCP Server
A Model Context Protocol (MCP) server that provides browser automation capabilities using Selenium WebDriver.
Features
Browser Automation: Navigate, click, type, and interact with web pages
Element Interaction: Find elements by CSS selectors, wait for elements, get text content
Screenshots: Capture screenshots of the current page
JavaScript Execution: Execute custom JavaScript in the browser
Page Information: Get page title and current URL
Headless Mode: Run browser in headless mode for CI/CD environments
Related MCP server: mcp-chrome-server
Prerequisites
Node.js (v16 or higher)
Chrome browser (for WebDriver)
npm
Installation
Install dependencies:
npm installConfigure the server by editing
config.json:
{
"selenium": {
"browser": "chrome",
"headless": true,
"timeout": 30000,
"windowSize": {
"width": 1920,
"height": 1080
}
}
}Usage
Starting the Server
npm startThe server runs on stdio and communicates using the MCP protocol.
Available Tools
The server provides the following tools:
navigate - Navigate to a URL
Parameters:
url(string, required)
click - Click on an element
Parameters:
selector(string, required) - CSS selector
type - Type text into an element
Parameters:
selector(string, required),text(string, required)
get_text - Get text content of an element
Parameters:
selector(string, required)
wait_for_element - Wait for an element to be present
Parameters:
selector(string, required),timeout(number, optional)
screenshot - Take a screenshot
Parameters:
filename(string, optional)
get_title - Get the page title
Parameters: none
get_url - Get the current URL
Parameters: none
execute_script - Execute JavaScript
Parameters:
script(string, required)
close_browser - Close the browser session
Parameters: none
Configuration
Edit config.json to customize:
browser: Browser to use (chrome, firefox, etc.)
headless: Run in headless mode (true/false)
timeout: Default timeout for operations (milliseconds)
windowSize: Browser window dimensions
Example Usage
Here's an example of how to use the server tools:
Navigate to a page:
navigate: { "url": "https://example.com" }Wait for an element:
wait_for_element: { "selector": "#login-button" }Type into an input:
type: { "selector": "#username", "text": "user123" }Click a button:
click: { "selector": "#login-button" }Take a screenshot:
screenshot: { "filename": "login.png" }Close the browser:
close_browser: {}Troubleshooting
Ensure Chrome browser is installed
Make sure ChromeDriver is compatible with your Chrome version
Check that the port in config.json is not already in use
Verify Node.js version is 16 or higher
License
ISC
AI_Automation_Framework_With_MCP_Server
This is an Automation framework which is built with AI using MCP Server,Java MCP Client and Automated Flows of Google Search
Available Tools
10 toolsclickB
Click on an element by CSS selector
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector of the element to click |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description omits important behavioral details such as whether it waits for the element to appear, scrolls into view, or errors if not found.
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, clear sentence with no extraneous information. Efficiently conveys the core purpose.
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?
For a simple click tool, the description is adequate but lacks details about behavior (e.g., waiting, scoping) that would make it fully self-contained.
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 100%, so the parameter is already documented. The description adds no additional 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 clearly states the action (click) and the resource (element by CSS selector), and it implicitly distinguishes from sibling tools like type, navigate, etc.
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 on when to use click versus alternatives like execute_script or waiting for elements. Lacks context about prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_browserB
Close the browser session
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only says 'close' without revealing whether the session is destroyed, if data is saved, or if the browser process terminates completely. This lack of detail for a destructive operation is a significant 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 short sentence, which is concise and front-loaded. However, it could include a bit more detail without losing brevity.
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 the tool's simplicity (no parameters, no output schema), the description is minimally complete. However, it lacks context on side effects like whether it closes all tabs or just the current window, which would be helpful for an agent.
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?
The tool has no parameters, and schema coverage is 100%. Per instructions, baseline for 0 params is 4 since the description adds no extra parameter meaning, which is acceptable.
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 'Close the browser session' uses a specific verb ('Close') and resource ('browser session'), clearly stating the action and distinguishing it from sibling tools that navigate, click, or retrieve data.
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 provides no guidance on when to use this tool, such as indicating it is typically called at the end of a browser interaction, or when not to use it. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_scriptC
Execute JavaScript in the browser
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | JavaScript code to execute |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states 'Execute JavaScript' without mentioning return values, side effects, security implications, or whether execution is synchronous or asynchronous.
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?
While only one sentence, it is under-specified and lacks essential details. Conciseness should not come at the cost of completeness; the description is too minimal to be helpful.
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 the simplicity of the tool (one parameter, no output schema), the description should still cover basic aspects like return value, execution scope, and potential consequences. It fails to do so.
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?
The description adds no information beyond the input schema's own description of the 'script' parameter. The schema already states 'JavaScript code to execute', so the description is redundant.
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 clearly states the action (Execute) and the target (JavaScript in the browser), which is a distinct capability from sibling tools that focus on UI interactions. However, it does not elaborate on the scope or context of execution.
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 or why to use this tool versus others, nor are any prerequisites or limitations mentioned. The agent receives no context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_textB
Get text content of an element by CSS selector
| Name | Required | Description | Default |
|---|---|---|---|
| selector | Yes | CSS selector of the element |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavior. It states 'Get text content' but does not specify if it retrieves visible text only, what happens if element is missing or multiple matches, or if it waits for the element.
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?
Single sentence, 10 words, directly states purpose. No fluff or redundancy.
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 the context of 9 sibling tools and no output schema, the description lacks details about return format, error handling, and behavior with non-existent elements.
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 100% with a clear description for 'selector'. The tool description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
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 clearly states the action ('Get text content'), the resource ('an element'), and the method ('by CSS selector'). It distinguishes itself from sibling tools like 'click' or 'type'.
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 on when to use this tool versus alternatives (e.g., 'get_inner_html' or using execute_script). Does not mention when not to use or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_titleA
Get the title of the current page
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the basic action but lacks details such as whether the tool blocks, requires a loaded page, or returns a string. For a simple tool with no parameters, this is adequate but minimal.
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, clear sentence with no unnecessary words. It is front-loaded and efficient.
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 the tool's simplicity (no parameters, no output schema), the description is complete. It fully explains the tool's purpose without needing additional context.
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?
There are zero parameters, and schema description coverage is 100% (trivially). Per the rubric, 0 parameters implies a baseline score of 4.
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 explicitly states 'Get the title of the current page,' which is a clear verb+resource combination. It distinguishes from sibling tools like get_url or get_text.
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 on when to use this tool versus alternatives. It does not mention when not to use it or provide context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_urlA
Get the current URL
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks behavioral details such as whether it waits for page load, what happens on error, or side effects. The description adds minimal value beyond the name.
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 unnecessary words. It is appropriately sized for the simplicity of the tool.
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?
For a zero-parameter tool with no output schema, the description is nearly complete. Minor additions like 'of the current browser tab' would improve clarity but are not essential.
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?
The tool has zero parameters, so baseline is 4. The description adds nothing beyond the schema, but schema coverage is 100% and there is no need for parameter details.
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 'Get the current URL' clearly states the verb and resource, distinguishing it from sibling tools like get_text and get_title.
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 explicit guidance on when to use this tool versus alternatives. Usage is implied by the simplicity of the tool, but no exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotB
Take a screenshot of the current page
| Name | Required | Description | Default |
|---|---|---|---|
| filename | No | Filename to save the screenshot (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose behavioral traits such as default file format, overwrite behavior, or whether it captures full page.
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?
Single sentence, front-loaded, no wasted words.
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?
Missing important details like file format, default save location, return value, or behavior without a filename. Not adequate for a screenshot 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 100% for the only parameter 'filename', so description adds no extra meaning 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 clearly states the verb 'take' and resource 'screenshot of the current page', distinguishing it from sibling tools like navigate or click.
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 on when to use this tool vs alternatives (e.g., for visual verification). Lacks context like capturing full page vs viewport.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
typeB
Type text into an element by CSS selector
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to type | |
| selector | Yes | CSS selector of the element |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should fully disclose behavior. It only mentions the mechanism (CSS selector) but does not specify typing behavior, such as whether existing text is cleared, if keyboard events are triggered, or if there are any hidden side effects.
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 very concise and front-loaded with the core action. However, it is slightly too terse, missing potentially useful details, yet it is efficient and contains no redundant information.
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 the lack of output schema and minimal description, the tool's behavior is underdocumented. It does not explain what the tool returns (presumably nothing) or whether it succeeds silently. A typing tool should ideally mention that it waits for the element or clears previous input.
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 100%, so the schema already documents both parameters. The description adds minimal value beyond what the schema provides; it restates the purpose but does not offer finer semantics like allowed characters or special key support.
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 clearly states the action (type) and target (text into an element by CSS selector). It is specific and distinct from sibling tools like 'click' or 'get_text'.
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 provides no guidance on when to use this tool versus alternatives like 'execute_script' for programmatic input or 'click' for interaction. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_elementB
Wait for an element to be present by CSS selector
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Timeout in milliseconds (default: 30000) | |
| selector | Yes | CSS selector of the element to wait for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully convey behavior. It only states 'wait for element to be present,' but lacks details on what 'present' means (e.g., visible in DOM?), what happens on timeout, or other behavioral traits. The description is insufficient.
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 concise sentence that efficiently conveys the core purpose. It is front-loaded and contains no extraneous information.
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 the simplicity of the tool, the description lacks important context such as return value, error handling, and precise definition of 'present.' Without output schema, these details are necessary for proper use.
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 100% with both parameters having descriptions. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.
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 clearly states the action (Wait), the resource (element), and the method (by CSS selector). It is specific and distinguishes from sibling tools like click or navigate which perform different operations.
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 provided on when to use this tool versus alternatives. For example, it does not mention that it should be used before interacting with an element that may not be immediately present, leaving the agent without contextual advice.
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. Dates show when Glama detected each change.
10 tool updates
v1.0.0- First observed
click - First observed
close_browser - First observed
execute_script - First observed
get_text - First observed
get_title - First observed
get_url - First observed
navigate - First observed
screenshot - First observed
type - First observed
wait_for_element
TDQS
Each tool targets a distinct action (click, navigate, type, screenshot, etc.) with no overlap. Even CSS-selector-based tools like click, get_text, type, and wait_for_element are clearly separated by their operation.
All tool names follow a consistent snake_case verb_noun pattern (e.g., close_browser, execute_script, wait_for_element). The naming is predictable and easy to understand.
With 10 tools, the set covers essential browser automation actions without being bloated. Each tool earns its place, and the count is appropriate for the domain.
The tools cover core browsing tasks (navigation, interaction, script execution, screenshots, session control). Minor gaps exist, such as retrieving element attributes or handling alerts, but the surface is largely complete for common workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Access Kernel's cloud-based browsers and app actions via MCP (remote HTTP + OAuth).
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables browser automation using the Selenium WebDriver through MCP, supporting browser management, element location, and both basic and advanced user interactions.907427MIT
- FlicenseCqualityDmaintenanceEnables browser automation, including navigation, form filling, login with CAPTCHA handling, and element manipulation, using a Chrome-based MCP server.364-
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to drive a real, logged-in Chrome browser for web automation tasks like navigation, clicking, typing, and screenshotting.101MIT
- FlicenseNot gradedqualityCmaintenanceEnables MCP clients to control a real local browser window for web automation tasks such as clicking, typing, scrolling, and taking screenshots.51-
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/zulfiqar90/AI_Automation_Framework_With_MCP_Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server