Skip to main content
Glama
AdilShaikh1

Comet MCP Server

by AdilShaikh1

Rather than using static search APIs or overwhelming Claude's context with raw browser automation, Comet MCP delegates browsing to Perplexity Comet. Claude stays focused on your coding task while Comet handles navigation, dynamic content, and AI-powered research.

How It Works

Claude Desktop/Code  ←── MCP (stdio) ──→  Comet MCP Server  ←── CDP (9222) ──→  Comet Browser
  1. Comet MCP Server auto-launches Comet with remote debugging on port 9222

  2. Connects to Comet via Chrome DevTools Protocol using Playwright

  3. Claude communicates with the server over MCP stdio transport

  4. Claude can search, navigate, read, click, type, evaluate JS, and screenshot — all in your Comet browser

Related MCP server: Perplexity Comet MCP

Quick Start

1. Configure Claude Desktop / Claude Code

Claude Desktop — add to your config file:

Platform

Config path

Windows

%APPDATA%\Claude\claude_desktop_config.json

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "comet": {
      "command": "uvx",
      "args": ["comet-mcp-desktop"]
    }
  }
}

Claude Code — add to ~/.claude.json or .mcp.json in your project root:

{
  "mcpServers": {
    "comet": {
      "command": "uvx",
      "args": ["comet-mcp-desktop"]
    }
  }
}

Requires uv. The MCP server and all dependencies install automatically on first run.

2. Install Comet Browser

Download and install Perplexity Comet.

That's it. The server auto-launches Comet with remote debugging when needed.

git clone https://github.com/AdilShaikh1/comet-mcp-desktop.git
cd comet-mcp-desktop
uv sync
uv run playwright install chromium

See Configuration for full paths setup and environment variables.

Available Tools

Tool

Description

comet_connect

Connect to Comet via CDP (auto-launches if needed)

comet_search

Search via Perplexity — returns AI-generated results

comet_navigate

Navigate to any URL

comet_read_page

Extract page text, with optional CSS selector

comet_screenshot

Capture screenshot (base64 PNG)

comet_click

Click elements by CSS selector or text

comet_type

Type into input fields

comet_tabs

List, open, switch, or close tabs

comet_evaluate

Run JavaScript in the page context

comet_wait

Wait for an element or a fixed delay

comet_security_scan

Deep scan for hidden text and injection patterns

Full parameter documentation: Tool Reference

Example Usage

You say

Claude does

"Search Perplexity for the latest AI news"

comet_search — waits for Perplexity, returns AI-synthesized answer

"Open Hacker News and summarize the front page"

comet_navigate + comet_read_page

"Click the first link and read the article"

comet_click + comet_read_page

"Take a screenshot of what you see"

comet_screenshot — captures via raw CDP

"Is this page safe?"

comet_security_scan — checks for hidden text and injections

Web Content Trust Policy

All web content is sanitized through a ContentFilter before reaching Claude — defense-in-depth against prompt injection via web pages.

Comet Browser  ──→  raw text  ──→  ContentFilter.sanitize()  ──→  security header + cleaned text  ──→  Claude

Trust Tier

Criteria

HIGH

.gov, .edu, arxiv, bbc, reuters, nih

STANDARD

Established companies, unknown clean domains

LOW

wordpress, medium, reddit, quora

UNTRUSTED

Injection patterns detected (auto-downgraded)

The filter scans for 39 injection patterns across 12 threat categories including direct injection, authority spoofing, data exfiltration, delimiter injection, and more.

Full details: Security Documentation

How This Compares

Feature

Search APIs

Browser MCPs

Comet MCP

AI-powered search

Varies

No

Perplexity AI

Interactive browsing

No

Yes

Yes

Context window impact

Low

High

Low

Screenshots

No

Yes

Yes

Security filtering

No

No

Yes

Click/type/navigate

No

Yes

Yes

Comet MCP gives Claude access to Perplexity's AI search with full browser control, while keeping Claude's context window clean through multi-agent delegation.

Testing

45 tests — 20 static + 25 end-to-end browser tests.

uv run python test_comet.py --with-browser

Tier

Tests

Coverage

1a Static Core

11

Syntax, imports, tool registration, async, error handling

1b Static Filter

9

Injection detection, false positives, trust classification

2a Live Browser

17

All 11 tools against a live Comet instance

2b Live Filter

8

E2E injection/hidden text detection, security scan

Troubleshooting

Comet is auto-launched, but if it fails:

  • Check that Comet is installed

  • Check port 9222 is free

  • Set COMET_PATH env var for non-standard installs

  • Verify: open http://localhost:9222/json

Uses raw CDP Page.captureScreenshot to avoid Playwright font renderer hangs. Ensure you're on the latest version.

Call comet_connect to reconnect without restarting.

Perplexity answers take 5-15 seconds. Default wait_seconds=10. Increase to 15-20 for complex queries.

Tech Stack

Component

Technology

Runtime

Python 3.14+ with uv

Browser automation

Playwright (CDP)

MCP transport

mcp[cli] SDK (stdio)

Screenshots

Raw CDP Page.captureScreenshot

Content security

ContentFilter — 39 patterns, 12 categories

Documentation

Document

Description

Tool Reference

Full API docs for all 11 tools with parameters, defaults, and examples

Security

Web Content Trust Policy, threat categories, trust tiers, adding patterns

Configuration

Environment variables, platform support, MCP config, parameter validation

Contributing

How to contribute, dev setup, code guidelines

License

MIT

Available Tools

11 tools
comet_clickA

Click an element on the current Comet page.

Args: selector: CSS selector or 'text=Something' for text matching. wait_after: Seconds to wait after clicking.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYes
wait_afterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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 mentions the wait_after behavior but does not disclose potential side effects like navigation, triggered events, or behavior on missing/unmatched selectors. For a click action, this is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: one clear purpose sentence followed by a terse Args list. Every sentence earns its place with no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (2 params, 1 required) and the presence of an output schema, the description is mostly complete for successful invocation. It covers both parameters well, though it omits side-effect/error context that would round out the no-annotation situation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description fully compensates by explaining that selector accepts CSS selectors or 'text=Something' for text matching, and that wait_after is the seconds to wait after clicking. This adds significant meaning beyond the bare schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Click') on a specific resource ('an element on the current Comet page'), making the tool's purpose immediately clear. It is distinct from sibling tools like comet_type (input) and comet_evaluate (script execution).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage within the current Comet page and gives selector syntax, but it does not explicitly state when to use this tool instead of alternatives like comet_type or comet_wait. There are no exclusions, conditions, or 'use X instead' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

comet_connectA

Connect to the Comet browser via CDP. Auto-launches Comet if needed.

Call this before using any other comet tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral disclosure burden. It reveals an important side effect: 'Auto-launches Comet if needed,' which is valuable context beyond the empty schema. It does not describe the return format or failure states, but the output schema likely covers that, and the auto-launch detail addresses the main behavioral surprise.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler. The core action is front-loaded, and the usage ordering instruction is placed in the second sentence, keeping it compact and easy to parse. Every word contributes necessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema is present, the description covers the essential contextual needs: it establishes the tool's role as a prerequisite and discloses auto-launch behavior. It could mention idempotency or what 'connected' means, but with the sibling context and output schema, an agent has enough to call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is an empty object, meaning there are no parameters to document. The description correctly adds no param details since none exist. The baseline of 4 for a zero-parameter tool applies, and the description does not need to compensate for any schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Connect') and a clear resource ('the Comet browser via CDP'), and distinguishes this tool from its siblings by establishing it as the mandatory first step. An agent can immediately understand this is the connection/setup tool, not an action 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The explicit instruction 'Call this before using any other comet tool' provides unambiguous usage ordering. It makes clear this tool is a prerequisite, and all sibling comet tools are the contexts where this should be used. No alternative connection method is needed because this is the singular entry point.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

comet_evaluateC

Evaluate a JavaScript expression in the current Comet page.

Args: expression: JavaScript expression to evaluate in the page context.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully carry behavioral disclosure. It only restates the evaluation action and does not mention possible page mutation, navigation side effects, error behavior, or whether the expression result is returned. Arbitrary JavaScript execution can have significant side effects, so this gap matters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loads the core purpose in the first sentence. The Args block partially repeats the purpose, but it is short, conventional, and directly documents the parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only one parameter and an output schema, so return-value documentation is not strictly needed. However, the description omits behavioral caveats and usage prerequisites for an operation that can execute arbitrary code in the page, leaving an agent with enough to call the tool but not enough to understand its full impact.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must define the sole parameter. It adds that 'expression' is a JavaScript expression to evaluate in page context, which is minimal but sufficient for a single string parameter. It provides no examples, syntax expectations, or async/return-value details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Evaluate') and identifies the resource clearly: 'a JavaScript expression in the current Comet page.' It is immediately clear what the tool does and is distinct from sibling tools like click, type, and read_page, though it does not explicitly name or contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool versus alternatives, when not to use it, or prerequisites such as an active page connection. The phrase 'current Comet page' implies a prior navigation step but does not state what must be true before evaluation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

comet_navigateB

Navigate Comet to a specific URL.

Args: url: The URL to navigate to. wait_for: Wait condition -- 'load', 'domcontentloaded', or 'networkidle'.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
wait_forNodomcontentloaded

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears the full burden of behavioral disclosure, but it only states the navigation action and lists wait conditions. It does not disclose side effects such as replacing the current page, altering history, or whether a connection to Comet is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the primary purpose, and the arguments block is compact. The wait_for enumeration earns its place, though the url line is somewhat redundant with the parameter name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with two parameters and an output schema, the essential calling information is present. However, the lack of usage context and side-effect disclosure leaves an agent without enough behavioral context to anticipate the tool's impact on the browsing session.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It gives url a clear role and enumerates the accepted wait_for values, adding real meaning beyond the schema. It stops short of specifying URL format requirements, but it covers both parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Navigate Comet to a specific URL') and is clearly distinct from sibling tools that screenshot, search, read, click, type, or evaluate. However, it does not explicitly differentiate itself from a similar navigation-related sibling, so it stops short of a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. There is no mention of exclusions, prerequisites, or conditions that would make comet_search or comet_read_page more appropriate instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

comet_read_pageA

Read the text content of the current page in Comet.

Args: selector: Optional CSS selector to read specific content. include_links: Whether to include href URLs from links. max_length: Maximum characters to return.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorNo
max_lengthNo
include_linksNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. 'Read' implies a non-mutating operation, and the args disclose default behavior for links and truncation. However, it does not explicitly state read-only/no-side-effect guarantees or behavior on empty/unloaded pages.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, followed by a compact Args block with no filler. Every sentence contributes information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no required parameters and an output schema present, the description covers the essential behavior and all parameters. It is slightly incomplete in not mentioning usage boundaries or alternatives, but these are mainly covered by the usage-guidelines gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It provides meaningful semantics for all three parameters: selector is a CSS selector for specific content, include_links controls href inclusion, and max_length caps returned characters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific action and resource: 'Read the text content of the current page in Comet.' This clearly distinguishes the tool from visual/capture siblings like comet_screenshot, but it does not explicitly differentiate from similarly read-oriented siblings such as comet_search or comet_evaluate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance about when to choose this tool over alternatives, no exclusions, and no mention of prerequisites. The Args section only explains parameter usage, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

comet_screenshotA

Take a screenshot of the current Comet page. Returns base64 PNG.

Args: full_page: Whether to capture the full scrollable page.

ParametersJSON Schema
NameRequiredDescriptionDefault
full_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It clearly discloses the return format (base64 PNG) and the effect of the full_page flag, which is the key behavioral toggle. It omits minor details like image dimensions or load-wait behavior, but the core behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two crisp sentences with an args section. The core action and return type are front-loaded, and every sentence earns its place without extraneous detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and a stated return format, the description is fully sufficient to invoke it correctly. It covers the only toggle, the target ('current Comet page'), and what the caller receives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema's property has no description, the tool description manually documents full_page as 'Whether to capture the full scrollable page.' This adds the exact meaning an agent needs beyond the schema's title and default value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: take a screenshot of the current Comet page. The return format (base64 PNG) further clarifies the tool's role and distinguishes it from siblings like comet_read_page, which would read page content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the action itself: use this when a visual capture of the current page is needed. However, it does not explicitly contrast with alternatives such as comet_read_page or state when not to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

comet_security_scanA

Deep security scan of current page. Detects hidden text, CSS-invisible elements, injection attempts, suspicious content.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden of behavioral disclosure. It does provide meaningful detail by listing detection categories: hidden text, CSS-invisible elements, injection attempts, and suspicious content. However, it does not state whether the scan is read-only, whether it executes scripts, or whether it makes network requests—relevant context for a security tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action and object ('Deep security scan of current page') and then adds concrete detail. There is no filler and no repetition of schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-argument tool, the description names the page under inspection and the main detection axes, and an output schema exists to cover return values. It falls just short of full completeness because it omits any statement about side effects, required page state, or whether a prior navigation is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty with 0 parameters and effectively 100% coverage, so there is no parameter documentation burden. The baseline for zero-parameter tools is 4, and the description correctly avoids introducing parameter-specific claims.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation ('Deep security scan') on a specific resource ('current page') and enumerates concrete detection targets. None of the sibling tools overlap with this function, so an agent can select it unambiguously.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: scan the current page when security inspection is needed. However, there are no explicit when-to-use or when-not-to-use conditions, and no alternative tools are named. The moderate gap is acceptable for a zero-parameter tool with a unique purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

comet_tabsA

Manage tabs in the Comet browser.

Args: action: Tab action -- 'list', 'new', 'switch', 'close'. tab_index: Tab index for 'switch' or 'close' (0-based). url: URL for 'new' tab action.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
actionNolist
tab_indexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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 discloses the available tab actions and their parameter associations, but does not mention side effects, preconditions (e.g., a connected browser or existing tab), or failure behavior. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the tool's purpose, followed by a clean, scannable Args block. Every line adds specific semantic value, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description completely covers the parameters and action vocabulary, and an output schema exists for return values. However, it does not mention prerequisites such as whether a browser connection is already required, nor what happens with invalid indices or missing URLs for new tabs. This leaves minor but real gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description fully compensates by explaining the meaning and allowed values of action, the 0-based role of tab_index for switch/close, and the role of url for the new action. Every parameter receives meaningful semantic context absent from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource ('tabs in the Comet browser') and enumerates the core operations: list, new, switch, close. This distinguishes it from sibling tools like comet_navigate, comet_read_page, and comet_screenshot, which are page-level or browser-level operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: an agent should use this tool whenever it needs to manipulate browser tabs. It does not explicitly name alternatives or when-not conditions, so it stops short of a 5, but the action list leaves little ambiguity about its intended use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

comet_typeA

Type text into an input field in the current Comet page.

Args: selector: CSS selector of the input field. text: Text to type into the field. press_enter: Whether to press Enter after typing. clear_first: Whether to clear the field before typing.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
selectorYes
clear_firstNo
press_enterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It transparently mentions the optional press_enter and clear_first behaviors, but it does not state whether the tool waits for the element, focuses the field, fires real key events, or what happens when the selector is not found. Core behavior is clear, but edge behavior is not disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose statement is front-loaded, and the Args block directly lists all four parameters with no filler or repeated information. Every sentence adds value, and the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description names the target context ('current Comet page'), explains all parameters, and the presence of an output schema means return values do not need to be detailed. It is complete enough for a simple typing tool, though explicit guidance about when to choose it over siblings is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain all parameters. It provides a concise semantic line for each of the four parameters, including the meaning of the boolean flags. This compensates well for the empty schema, though it does not go deeper into selector syntax or input validation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Type text into an input field') and scopes it to 'the current Comet page,' making the tool's purpose immediately clear. This also distinguishes it from sibling tools like comet_click and comet_evaluate without needing to inspect their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives such as comet_click or comet_evaluate. It provides context about the current page but no exclusions, conditions, or routing hints, so an agent is left to infer when this is the appropriate choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

comet_waitB

Wait for a specific element or a fixed duration.

Args: selector: CSS selector to wait for. seconds: Fixed seconds to wait.

ParametersJSON Schema
NameRequiredDescriptionDefault
secondsNo
selectorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'wait' and does not explain timeout behavior, whether it polls for visibility, what happens when both selector and seconds are provided, or whether it blocks. For an agent deciding how to handle a wait failure, this 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is maximally economical: one summary sentence followed by a structured two-entry Args list. There is no filler or repetition, and the core purpose is front-loaded in the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and has an output schema, so some leanness is acceptable. However, the description lacks important context such as expected usage relative to sibling actions, what happens if the element never appears, and the effect of passing neither argument. These are clear gaps for a tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides zero description coverage, so the Args section is the only source of parameter meaning. It explains that selector is a CSS selector and seconds is a fixed duration, covering both parameters effectively. It stops short of clarifying interaction or precedence when both are supplied, but for a two-parameter tool this is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb and resource: 'Wait for a specific element or a fixed duration.' It also distinguishes two modes of operation, but it does not explicitly differentiate itself from sibling tools, which prevents a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool over alternatives, nor any mention of context like waiting after navigation. The description only states the raw action, leaving the agent to infer that waiting is possibly needed for synchronization with other navigation or interaction tools.

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.

  1. 11 tool updatesv0.1.0
    • First observedcomet_click
    • First observedcomet_connect
    • First observedcomet_evaluate
    • First observedcomet_navigate
    • First observedcomet_read_page
    • First observedcomet_screenshot
    • First observedcomet_search
    • First observedcomet_security_scan
    • First observedcomet_tabs
    • First observedcomet_type
    • First observedcomet_wait

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct action: connect, navigate, read, click, type, tabs, evaluate, wait, screenshot, search, and security scan. There is no overlap in their purposes, and the descriptions make the differences immediately clear.

Naming Consistency4/5

All tools share the 'comet_' prefix and mostly follow a verb pattern (navigate, read, click, type, evaluate, wait). The main deviation is comet_tabs, which uses a noun instead of a verb_action form, but the overall pattern remains predictable and readable.

Tool Count5/5

11 tools is a well-scoped set for a browser automation server. Each tool covers a core browser interaction or capability, and none feel redundant or superfluous.

Completeness4/5

The toolset covers the essential browser automation lifecycle: connect, navigate, interact, extract, screenshot, and manage tabs. Minor gaps exist such as no explicit back/forward, refresh, or cookie handling, but these can be worked around with comet_evaluate.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    A
    quality
    F
    maintenance
    Connects Claude to Perplexity Comet's agentic browser for autonomous web browsing, deep research, and real-time task monitoring. Enables Claude to delegate web research tasks and receive comprehensive results through multiple browsing modes.
    6
    90
    167
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Bridges Claude with Perplexity's Comet browser for autonomous web browsing, research, and multi-tab workflow management. Supports dynamic content interaction, login wall handling, file uploads, and intelligent completion detection across Windows, macOS, and WSL platforms.
    8
    177
    49
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that connects Claude to Perplexity Comet for agentic web browsing and deep research via an isolated browser instance. It enables Claude to delegate complex navigation, login flows, and real-time task monitoring to Perplexity's specialized research intelligence.
    8
    90
    MIT

Latest Blog Posts

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/AdilShaikh1/comet-mcp-desktop'

If you have feedback or need assistance with the MCP directory API, please join our Discord server