web-automation-mcp
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., "@web-automation-mcpAsk ChatGPT: What is the capital of France?"
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.
Web Automation MCP Server
An MCP (Model Context Protocol) server that enables Claude Code CLI to interact with Cloud Desktop, ChatGPT, and Gemini web interfaces through browser automation.
Features
Multi-Service Support: Interact with Cloud Desktop, ChatGPT, and Gemini
Browser Automation: Uses Playwright for reliable web automation
Session Persistence: Maintains browser sessions across requests
Response Extraction: Automatically extracts and returns responses
Conversation Management: Clear conversation history when needed
Related MCP server: codex-cli-mcp-tool
Installation
Clone the repository:
cd ~/web-automation-mcpInstall dependencies:
npm installBuild the project:
npm run buildConfiguration
Add the server to your Claude MCP settings (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"web-automation": {
"command": "node",
"args": ["/Users/YOUR_USERNAME/web-automation-mcp/dist/index.js"]
}
}
}Usage
Natural Language Support
The MCP server now supports natural language queries through the web_automation_query tool:
# Ask ChatGPT a question
"Ask ChatGPT: What is quantum computing?"
# Send to Gemini
"Send to Gemini: Explain machine learning"
# Clear conversation
"Clear ChatGPT conversation"
# Get latest response
"Get the latest response from Gemini"
# Browser control
"Initialize browser in visible mode"
"Close browser"Available Tools
web_automation_query - Process natural language queries
query: string - Natural language description of what you want to do
initialize_browser - Initialize the browser
headless: boolean (default: false) - Run in headless mode
send_to_service - Send input to a service and get response
service: "clouddesktop" | "chatgpt" | "gemini"content: string - The message to send
get_latest_response - Get the latest response from a service
service: "clouddesktop" | "chatgpt" | "gemini"
clear_conversation - Clear conversation history
service: "clouddesktop" | "chatgpt" | "gemini"
cleanup_browser - Close all browser windows
Example Usage in Claude Code
Natural language examples:
# Ask ChatGPT
Use web_automation_query with query: "Ask ChatGPT about the history of computing"
# Send to Gemini
Use web_automation_query with query: "Send to Gemini: write a Python function to sort a list"
# Clear conversation
Use web_automation_query with query: "Clear ChatGPT conversation"Direct tool usage:
# Initialize browser (visible mode)
Use the initialize_browser tool with headless: false
# Send a message to ChatGPT
Use the send_to_service tool with service: "chatgpt" and content: "What is the capital of France?"
# Clean up when done
Use the cleanup_browser toolImportant Notes
Manual Login Required: You must manually log in to each service in the browser window the first time
Service URLs: Update the URLs in the handler files if they change:
src/handlers/cloudDesktop.ts- Update Cloud Desktop URLsrc/handlers/chatgpt.ts- ChatGPT URLsrc/handlers/gemini.ts- Gemini URL
Selectors: The CSS selectors in handlers may need updates if the services change their UI
Development
To run in development mode:
npm run devTo modify service handlers, edit the files in src/handlers/.
Troubleshooting
Login Required Error: Open the browser in non-headless mode and log in manually
Selector Not Found: The service UI may have changed - update selectors in the handler
Timeout Errors: Increase timeout values in the handlers for slower connections
License
MIT
Available Tools
6 toolscleanup_browserA
Close all browser windows and clean up resources
| Name | Required | Description | Default |
|---|---|---|---|
No 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 of disclosing behavior. It states 'Close all browser windows and clean up resources' but does not explain side effects such as potential data loss, whether the cleanup is permanent, or if it affects other browser sessions. The vague 'clean up resources' leaves undefined what exactly is cleaned and whether the action is reversible.
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 sentence with no filler or redundancy. It is appropriately front-loaded, immediately stating the primary action 'Close all browser windows' followed by the secondary resource cleanup. This is an efficient and well-structured description.
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 tool with no parameters and no output schema, the description provides the core purpose. However, contextual gaps remain regarding the relationship with sibling tools (e.g., whether it must follow initialize_browser), optional behavior (e.g., whether it only closes current session windows), and potential consequences. The description is minimally complete but not fully self-sufficient.
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 accepts zero parameters, and the input schema is empty with no properties. Thus, the schema coverage is 100%, and the description need not clarify parameters. The baseline of 4 for zero-parameter tools applies, and the description adds no unnecessary parameter clutter.
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 tool's action: 'Close all browser windows and clean up resources.' This distinguishes it from siblings like initialize_browser (which starts the browser) and clear_conversation (which affects conversation data), making the purpose explicit and unambiguous.
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 or scenarios where it should be avoided. It does not mention that it should be invoked after browser automation or before other operations, nor does it reference any alternative tools. Without usage context, the agent must infer the usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_conversationB
Clear the conversation history in a service
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | The service to clear conversation in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that it clears history but does not mention permanence, side effects (e.g., whether the service becomes unused), or any confirmation/undo behavior. This is a significant gap for a destructive operation.
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 wasted words. It is concise and directly states the action, though it could have added value with more context without becoming verbose.
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 with one parameter and no output schema, yet the description lacks essential behavioral context (e.g., irreversible nature, any required setup). It is minimally viable but leaves the agent to infer the implications of clearing, which is incomplete for a mutating tool with no annotations.
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% ('service' is clearly described with an enum), so the baseline is 3. The description adds no additional parameter semantics beyond the schema, which is acceptable given the schema's completeness.
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 ('Clear') and the target ('conversation history'), with scope ('in a service'). It distinguishes this tool from siblings like send_to_service or get_latest_response, as none of them perform a clearing operation.
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 on when to use this tool versus alternatives, no mention of prerequisites (e.g., browser or service initialization), and no exclusions. The description merely restates the operation without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_responseC
Get the latest response from a service
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | The service to get response from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'Get the latest response', implying a read operation but not explaining side effects, return format, or dependency on browser initialization. This is minimal transparency.
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 redundancy. It captures the core purpose efficiently, though it sacrifices detail.
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 tool with one parameter, no annotations, no output schema, and several siblings, the description is too sparse. It does not explain the return value, prerequisite conditions, or how it fits into the workflow among the sibling tools.
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%: the 'service' parameter has a clear description and enum values. The description adds no new meaning beyond what the schema already provides. 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) and resource (latest response from a service), with the enum parameter specifying the service. It does not explicitly distinguish from siblings like 'web_automation_query', but the name and wording make the purpose fairly distinct.
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 such as 'web_automation_query' or 'send_to_service'. No context about prerequisites (e.g., whether 'initialize_browser' must be called first) or edge cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initialize_browserA
Initialize the browser (use headless: false to see the browser)
| Name | Required | Description | Default |
|---|---|---|---|
| headless | No | Whether to run browser in headless mode |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing side effects. It only hints at browser visibility with headless flag but does not mention resource allocation, persistence, the need for cleanup_browser, or any potential side effects of initialization. This is minimal behavioral information.
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 that states the purpose and includes a useful parameter tip. Every word earns its place, with no filler 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?
The tool is simple with one parameter and no output schema, and the description covers the core action and a parameter nuance. However, it lacks any mention of lifecycle (e.g., whether this must be paired with cleanup_browser) or what the initialization actually sets up, leaving some gaps for a non-expert 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 schema already describes the headless parameter (100% coverage), so the baseline is 3. The description adds practical value by explicitly instructing 'use headless: false to see the browser', which clarifies the effect of the parameter beyond its schema description, earning a 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 clearly states the action 'Initialize the browser' with a specific resource. It is distinct from sibling tools like web_automation_query, cleanup_browser, etc., making it easy to identify when this tool is relevant.
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 a parameter-specific tip ('use headless: false to see the browser') but does not explain when to use this tool versus alternatives, such as whether it should be called before web_automation_query or if it is a prerequisite for other operations. No exclusions or context for tool selection are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_to_serviceA
Send input to Cloud Desktop, ChatGPT, or Gemini and get response
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The content to send | |
| service | Yes | The service to send input to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description offers only the generic action of sending and receiving a response. It does not disclose side effects (e.g., state change on the service, rate limits, authentication requirements), whether the operation blocks, or what happens on errors. This is insufficient for a tool that interacts with external services.
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 sentence, front-loaded with the action and target services. Every word contributes meaning, and there is no superfluous 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?
While the tool is simple and has complete schema coverage, the description lacks important context: it does not describe response format, synchronization behavior, or how this tool relates to the sibling tools in the workflow. The absence of annotations and output schema places the burden on the description, which is not fully met.
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 input schema already provides full descriptions for both parameters (service enum, content string). The description does not add any additional meaning, such as format constraints, examples, or service-specific behaviors. With 100% schema coverage, the baseline 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 tool's function: sending input to one of three named services and receiving a response. It distinguishes from sibling tools like get_latest_response (which retrieves responses) and web_automation_query (which queries the web), making the purpose specific and actionable.
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 does not explicitly state when to use this tool versus alternatives or provide exclusions. The context implies usage for sending content to supported services, but there is no guidance on how it fits with siblings like get_latest_response or initialize_browser, and no mention of prerequisites or fallback tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_automation_queryA
Process natural language queries to interact with ChatGPT, Gemini, or Cloud Desktop. Examples: "Ask ChatGPT about quantum computing", "Send to Gemini: explain machine learning", "Clear ChatGPT conversation"
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language query describing what you want to do |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only says 'process natural language queries' and gives examples but does not mention side effects, state changes, return values, or any limitations. For a tool that can clear conversations, this is a significant transparency 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 two sentences long, with the first sentence front-loading the purpose and the second providing three illustrative examples. Every sentence earns its place with no redundant wording.
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 (one parameter, no nested objects), but the description does not explain what the tool returns or whether it requires prior browser initialization (evident from sibling initialize_browser). This leaves functional gaps that the examples do not cover.
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 schema already provides a 100% covered description for the sole parameter, and the tool description adds value by giving concrete examples of valid queries, illustrating the variety of natural language commands the tool accepts. This goes beyond the basic schema definition.
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 the specific verb 'process' and clearly names target resources (ChatGPT, Gemini, Cloud Desktop), making the tool's function unambiguous. Examples further differentiate it from sibling tools like send_to_service and clear_conversation, which handle specific operations while this is the general NL interface.
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 implies usage via natural language commands with examples, but it never explicitly states when to use this tool versus the sibling tools (e.g., send_to_service, clear_conversation). It lacks direct guidance on alternative selection.
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.
6 tool updates
v1.0.0- First observed
cleanup_browser - First observed
clear_conversation - First observed
get_latest_response - First observed
initialize_browser - First observed
send_to_service - First observed
web_automation_query
TDQS
web_automation_query overlaps heavily with send_to_service and also covers clearing conversations, making it unclear when to use which tool. Other tools are distinct, but the primary query tool's broad scope creates ambiguity.
Most tools follow a consistent verb_noun pattern (send_to_service, get_latest_response, clear_conversation, initialize_browser, cleanup_browser), but web_automation_query breaks the pattern as a noun_phrase, causing a minor inconsistency.
With 6 tools, the set is well-scoped for browser automation covering initialization, querying, response retrieval, conversation clearing, and cleanup. Each tool has a clear place in the workflow, and the count is appropriate.
The tool set covers the core lifecycle: initialize, send query, get response, clear conversation, and cleanup. Minor gaps exist (e.g., listing available services or fetching full conversation history), but they are not critical for the primary purpose.
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 MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAn MCP server that orchestrates AI coding assistants (Claude Code CLI and Gemini CLI) to perform complex programming tasks autonomously, allowing remote control of your local development environment from anywhere.24140MIT
- AlicenseNot gradedqualityFmaintenanceAn MCP server that allows Claude Code to interact with the OpenAI Codex CLI.2921MIT
- AlicenseCqualityDmaintenanceAn MCP server that gives Claude Code real browser control for web automation, testing, and screenshots.3255151MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that allows Claude Desktop to remotely control Claude Code instances for executing commands and managing files.30GPL 3.0
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/ssql2014/web-automation-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server