apex-browser-mcp
The apex-browser-mcp server provides a multi-session browser automation interface via MCP, letting you programmatically control real browsers (Chrome, Chromium, WebKit, Safari) locally or attach to an existing Chrome session.
Session Management
browser_new_session: Launch isolated browser sessions using Chrome, Chromium, WebKit, or Safaribrowser_attach: Connect to a running Chrome instance (adopting its real logged-in session with cookies, or opening a fresh isolated context)browser_list_sessions: View all active sessions with their engine type and current URLbrowser_close_session: Cleanly close and free any open session
Navigation & Page State
browser_navigate: Direct any session to load a specified URLbrowser_snapshot: Capture the page title, current URL, and an indexed list of interactive elements (buttons, inputs, links, etc.) with reference IDs for subsequent interactions
Interaction
browser_click: Click any interactive element using a reference ID from a snapshotbrowser_type: Fill text into form fields by reference, with optional Enter/submit supportbrowser_evaluate: Execute arbitrary JavaScript expressions in the page context and return results
Artifacts
browser_screenshot: Save a PNG of the current browser view and return its file path
The server supports both HTTP daemon and stdio transport, configurable at startup.
Allows controlling real Safari.app via WebDriver for browser automation.
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., "@apex-browser-mcpNavigate to https://example.com and take a screenshot."
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.
apex-browser-mcp
Local multi-session browser MCP for real Chrome, Chromium, WebKit, and real Safari, plus attach to an already-running Chrome session without moving the work into a cloud browser.
Release posture: npm package @apexradius/browser-mcp, version 1.0.0 from
package.json.
Choose your path
You are... | Start here | Then |
Running the daemon or stdio server | Quick start below | |
Auditing browser routing or attach behavior | ||
Reviewing the MCP tool surface |
Related MCP server: mcp-chromium-cdp
Architecture
flowchart TD
U[AI operator] --> C[MCP client]
C --> T[stdio or HTTP transport]
T --> S[MCP server]
S --> M[BrowserManager]
M --> P[SessionPool]
M --> F[SafariLane]
P --> B[Chrome Chromium WebKit sessions]
P --> D[Attached Chrome via CDP]
F --> R[Real Safari.app session]Request flow
flowchart TD
A[Operator opens or attaches a browser session] --> B[Selected MCP tool]
B --> C{New session or attach?}
C -- new --> D[BrowserManager creates session]
C -- attach --> E[Connect to CDP endpoint]
D --> F[Session stored in pool]
E --> F
F --> G[Subsequent navigate snapshot click type evaluate tools]
G --> H[Return text or screenshot path to MCP client]Quick start
Install dependencies and browser engines.
npm install
npx playwright install chromium webkitStart the shared HTTP daemon.
APEX_BROWSER_TRANSPORT=http node src/index.jsRegister it in your MCP client.
{
"mcpServers": {
"apex-browser": {
"type": "http",
"url": "http://127.0.0.1:3010/mcp"
}
}
}Available tools
Tool group | Tools | Purpose |
Session lifecycle |
| Open, adopt, inspect, and close sessions |
Navigation and state |
| Load pages and capture indexed interactive refs |
Interaction |
| Drive page interactions and execute page JS |
Artifacts |
| Save a PNG and return its path |
Runtime proof
Claim | Proof |
Package entry point is stable |
|
HTTP and stdio transports are both first-class | Transport selection in |
Session routing is engine-aware |
|
Tool registration is centralized |
|
Repo map
Path | Purpose |
Process entry point, transport selection, HTTP daemon | |
MCP tool registration and request handlers | |
Unified routing across SessionPool and SafariLane | |
Multi-session Playwright and CDP attach backend | |
Real Safari.app lane | |
Setup, env, validation, common failures | |
Component map and runtime lifecycle |
Validation
Check | Command |
Core regression suite |
|
Attached-Chrome concurrency |
|
README/docs links stay local |
|
License
MIT
Available Tools
10 toolsbrowser_attachAttach to running ChromeA
Attach to a Chrome already running with --remote-debugging-port. mode: default (adopt your logged-in session — real cookies) | isolated (fresh stealthed context on the same Chrome). Returns a session id usable with all other tools.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | default | |
| cdpEndpoint | No | http://127.0.0.1:9222 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides important behavioral details about the two modes (adopting logged-in session vs fresh isolated context) and mentions the return value (session id). It does not disclose safety or side effects, but the attach action is inherently non-destructive.
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 concise and front-loaded, using two sentences to convey the purpose, mode options, and return value without extraneous information. Every sentence adds value.
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 (2 optional parameters, no output schema), the description covers the essential context: the prerequisite, mode semantics, and the returned session id. The cdpEndpoint parameter is not explained, but its default value and commonality reduce the gap.
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 explains the 'mode' parameter with explicit meanings for each enum value, but does not describe the 'cdpEndpoint' parameter beyond its default value. Since schema coverage is 0%, the description partially compensates by clarifying one of two parameters.
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 attaches to an existing Chrome instance with a specific prerequisite (--remote-debugging-port), and the verb 'attach' combined with the resource 'Chrome' makes the purpose distinct from sibling tools like browser_new_session.
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 explains when to use the tool (Chrome already running with debugging port) and describes mode options (default vs isolated), but does not explicitly state when not to use it or provide alternative tools. However, the context implies the usage boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_clickClickC
Click an element by ref from the latest snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| session | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full transparency burden. It only states 'click an element' without disclosing potential side effects (e.g., navigation, page changes), error conditions (e.g., invalid ref), or whether the session must be active.
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 with no unnecessary words. It could be slightly expanded for clarity, but it remains 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 two required parameters, no output schema, and no annotations, the description is minimal. It lacks details on return values, waiting behavior, frame handling, and error scenarios, making it incomplete for a click action 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 coverage is 0%, and the description adds meaning for the 'ref' parameter (by stating it refers to an element from the latest snapshot) but does not explain the 'session' parameter beyond its existence. This partially compensates for the lack of schema descriptions.
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 'Click an element by ref from the latest snapshot,' which specifies the action (click) and the resource/context (element identified by ref from a snapshot). It distinguishes from siblings like browser_type (typing) and browser_navigate (navigation).
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, nor when not to use it. The description implies a prerequisite (latest snapshot) but does not explicitly state that a snapshot must be taken first via browser_snapshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_close_sessionClose sessionC
Close and free a session.
| Name | Required | Description | Default |
|---|---|---|---|
| session | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates that the session will be closed and freed, implying irreversible termination. However, without annotations, it does not specify side effects like resource cleanup or impact on pending operations.
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 extremely concise with a single phrase. It avoids redundancy, but could be slightly more structured to include parameter hints 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 (one parameter, readOperation is false), the description is minimally adequate but lacks details about the parameter's origin, session state requirements, or return behavior.
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 has one parameter 'session' with no description, and the tool description does not elaborate on its meaning, expected format, or valid values. With 0% schema description coverage, the description fails to compensate.
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 ('Close and free a session') with a specific verb and resource. It distinguishes itself from sibling tools like browser_new_session (create) and browser_list_sessions (list) by focusing on termination.
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, such as browser_attach or browser_new_session. There is no mention of prerequisite conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_evaluateEvaluateC
Run a JS expression in the page, return the result.
| Name | Required | Description | Default |
|---|---|---|---|
| session | Yes | ||
| expression | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is straightforward but lacks details on side effects, security implications, or limitations. With no annotations, it carries full burden, but the tool's purpose is simple enough that agents can infer basic behavior.
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, a single sentence. It could be slightly more detailed without losing brevity, but it is not overly 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?
No output schema is provided, and the description only says 'return the result' without specifying the format or potential errors. The tool is simple but the description lacks completeness for an agent to fully understand behavior.
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 the meaning or format of 'session' or 'expression'. The agent must rely on parameter names alone, which may be insufficient.
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 it runs a JavaScript expression and returns the result. It is specific and distinguishes from sibling tools like click or navigate.
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, no prerequisites or context provided. The agent has no hints about appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_list_sessionsList sessionsA
List all open sessions with engine and 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, so the description carries full burden. It only lists what it does without mentioning behavioral traits like read-only, destructive nature, rate limits, or side effects. The minimal description leaves the agent uninformed about any potential constraints.
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 contains no unnecessary words. Every part is informative.
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 has no parameters and no output schema, so the description is minimal but covers the essential purpose. However, it does not mention output format, pagination, or session lifecycle context. For a simple list tool, this is adequate but could be more complete.
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 has zero parameters, so schema description coverage is 100%. There is no need for parameter details, and the description adds no value beyond the schema, which is acceptable. Baseline 4 is appropriate for a parameterless tool.
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 (list) and resource (open sessions) with specific output fields (engine and current URL). It distinguishes from sibling tools which are all actions like click, navigate, etc., making it obvious this is a read-only listing tool.
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?
Usage is implied as it is the only listing tool among siblings, but there is no explicit guidance on when to use versus other tools, nor any prerequisites or exclusions. The description does not mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_new_sessionNew sessionA
Open an isolated browser session. engine: chrome (real Chrome) | chromium | webkit (Safari engine, multi) | safari (real Safari.app, single-session). Returns a session id.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | chromium |
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 mentions 'isolated browser session' and 'returns a session id', but does not disclose behavioral traits such as whether the session is headless, destructive effects (e.g., closing existing sessions), authentication needs, rate limits, or whether it opens a visible browser window. The notes on engine options (e.g., 'real Chrome', 'single-session') add some context but are insufficient for a complete behavioral picture.
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 extremely concise: two sentences with no filler. The first sentence states the core purpose, the second lists engine options with brief annotations. Every word adds value, and the most critical information is front-loaded.
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 has only one parameter, no output schema, and no annotations, the description provides the essential purpose and parameter details. However, it lacks details on the return format (just 'session id' without type or structure), implications of 'isolated', and any error conditions. It is adequate but leaves some gaps.
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 has one parameter 'engine' with enum values but 0% schema description coverage. The description adds significant meaning by explaining each engine option: 'chrome (real Chrome)', 'chromium', 'webkit (Safari engine, multi)', 'safari (real Safari.app, single-session)'. This goes beyond the raw enum values and helps the agent choose appropriately.
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 'Open an isolated browser session' with the verb 'open' and resource 'isolated browser session'. It also lists engine options and mentions 'Returns a session id', which distinguishes it from sibling tools like browser_attach (attaches to existing session) and browser_list_sessions (lists sessions).
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. It lists engine options but provides no guidance on which to choose or scenarios where this tool is appropriate. There is no mention of prerequisites, required context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_screenshotScreenshotC
Save a PNG of the current view, return its path.
| Name | Required | Description | Default |
|---|---|---|---|
| session | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It states the tool saves a PNG and returns a path, but does not mention side effects (e.g., file creation, disk usage), permissions needed, or behavior on invalid session. The description is too minimal for full 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 extremely concise—a single sentence that covers the core action and output. Every word is meaningful, and there is no 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 lack of output schema, no annotations, and a sibling tool that may overlap, the description should provide more context about return value details, side effects, or usage tips. The current description is complete for a trivial tool but insufficient for decision-making.
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 adds no detail about the 'session' parameter beyond its name. While the parameter is simple, the description should at least clarify its purpose (e.g., which browser session to capture). It fails to add 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 action 'Save a PNG of the current view' and the result 'return its path'. It specifies the file format and action, making the purpose clear. However, it does not differentiate from the sibling tool 'browser_snapshot', which might capture the same view in a different format.
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 like 'browser_snapshot' or other screenshot methods. There is no indication of prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_snapshotSnapshotC
Title, URL, and indexed interactive elements (ref=e1,e2,...). Use a ref with click/type.
| Name | Required | Description | Default |
|---|---|---|---|
| session | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as read-only nature, side effects, or state changes. It fails to clarify that this is a read operation (likely safe) and offers no insight into potential pitfalls.
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 short at two sentences, but the first sentence is a fragment and the second is an instruction. It is not structured to clearly convey purpose and usage; it sacrifices clarity for 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 (single parameter, no output schema), the description is incomplete. It does not specify the output format (e.g., a list of elements with refs), how refs are derived, or how to use the snapshot with click/type tools. More detail is needed for reliable invocation.
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 has a single 'session' parameter with no description in the schema (schema coverage 0%). The tool description does not explain this parameter at all, leaving the agent to infer its meaning from sibling tools. It fails to compensate for the lack of schema documentation.
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 mentions 'Title, URL, and indexed interactive elements' which gives a sense of what is returned, but the verb 'snapshot' is ambiguous (could be interpreted as a screenshot or a page summary). It implies the tool provides references for interaction but does not clearly state its core function.
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 siblings like browser_screenshot or browser_click. The phrase 'Use a ref with click/type' hints at its role but does not provide a clear decision rule or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browser_typeTypeC
Fill text into an element by ref; submit:true presses Enter.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | ||
| text | Yes | ||
| submit | No | ||
| session | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. Only one behavioral trait is disclosed: submit:true presses Enter. Missing: what happens if element not found, if text is long, or if the element is not input; no mention of side effects or auth needs.
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 with the main action. No unnecessary words. Could benefit from structured param explanation, but remains 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 no output schema and no annotations, the description is too sparse. It does not cover return value, error handling, or prerequisites (e.g., session must be active). Needs more detail to be fully actionable.
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 has 0% coverage, so description must compensate. It explains 'text' and 'submit' partially, but 'ref' is left undefined and 'session' is not mentioned. Provides some meaning but incomplete.
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?
Description clearly states the action: 'Fill text into an element by ref'. The specific verb 'Fill' and resource 'element' make the purpose clear. It also mentions a special submission behavior. It distinguishes from siblings like browser_click and browser_navigate.
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. There is no mention of prerequisites (e.g., session must exist) or exclusions. The description lacks context for decision-making among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct, non-overlapping purpose: session management, navigation, interaction, evaluation, and page capture. No two tools could be easily confused.
All tools use the consistent pattern 'browser_<action>' with snake_case, making them predictable and easy to understand.
10 tools is well-scoped for browser automation, covering the essential operations without being excessive or insufficient.
The set covers core actions (session creation, navigation, interaction, page inspection), though a few operations like back/forward or tab management are missing, but the surface is mostly adequate.
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.
MCP server to assist with JxBrowser development.
Automate cloud Chrome—navigate, click, type, screenshot, run code, record screen video
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server that connects to your browser to capture screenshots, inspect console logs, network requests, and more via Chrome DevTools Protocol.62MIT
- AlicenseAqualityDmaintenanceMCP server for controlling Chromium/Chrome via Chrome DevTools Protocol. Supports cross-platform automation, auto-launch, and automatic reconnection.251MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server for QA and test automation that provides runtime switching between multiple browser profiles (Chromium, Firefox, WebKit) without restart, enabling cross-browser regression testing, multi-account testing, localization QA, and more.18MIT
- AlicenseAqualityCmaintenanceMCP server that drives Safari on a physically attached iPhone via Apple's safaridriver, enabling navigation, screenshots, DOM snapshots, console logs, network timings, and tap/type/scroll actions on the real device. No Xcode, Appium, or WebDriverAgent required.16MIT
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/apexradius/browser-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server