Skip to main content
Glama

comet-mcp

npm version

Give Claude Code a browser that thinks.

An MCP server that connects Claude Code to Perplexity Comet - enabling agentic web browsing, deep research, and real-time task monitoring.

Demo

Why?

Existing web tools for Claude Code fall into two categories, both with limitations:

1. Search APIs (Tavily, Perplexity API, WebFetch)

Return static text. No interaction, no login, no dynamic content. Great for quick lookups, but can't navigate complex sites or fill forms.

2. Browser Automation (browser-use, Puppeteer MCP, Playwright MCP)

Can interact with pages, but use a one-agent-do-all approach: the same reasoning model that's writing your code is also deciding where to click, what to type, and how to navigate. This overwhelms the context window and fragments focus.

3. Comet MCP: Multi-Agent Delegation

Comet MCP takes a different approach. Instead of Claude controlling a browser directly, it delegates to Perplexity Comet - an AI purpose-built for web research and browsing.

  • Claude stays focused on your coding task

  • Comet handles the browsing: navigation, login walls, dynamic content, deep research

  • Result: Claude's coding intelligence + Perplexity's web intelligence, working together

Related MCP server: Perplexity Comet MCP

Quick Start

1. Configure Claude Code

Add to ~/.claude.json or .mcp.json:

{
  "mcpServers": {
    "comet-bridge": {
      "command": "npx",
      "args": ["-y", "comet-mcp"]
    }
  }
}

2. Install Comet Browser

Download and install Perplexity Comet.

That's it! The MCP server automatically launches Comet with remote debugging when needed.

3. Use in Claude Code

You: "Use Comet to research the top AI frameworks in 2025"
Claude: [delegates to Comet, monitors progress, returns results]

You: "Log into my GitHub and check my notifications"
Claude: [Comet handles the login flow and navigation]

Tools

Tool

Description

comet_connect

Connect to Comet (auto-starts if needed)

comet_ask

Send a task and wait for response

comet_poll

Check progress on long-running tasks

comet_stop

Stop current task

comet_screenshot

Capture current page

comet_mode

Switch modes: search, research, labs, learn

How It Works

Claude Code  →  MCP Server  →  CDP  →  Comet Browser  →  Perplexity AI
   (reasoning)     (bridge)                              (web browsing)

Claude sends high-level goals ("research X", "log into Y"). Comet figures out the clicks, scrolls, and searches. Results flow back to Claude.

Requirements

Windows & WSL Support

Native Windows

Works out of the box. Comet MCP auto-detects Windows and launches Comet from its default install location.

WSL2 (Windows Subsystem for Linux)

WSL2 requires mirrored networking to connect to Comet running on Windows:

  1. Enable mirrored networking (one-time setup):

    # Create/edit %USERPROFILE%\.wslconfig (Windows side)
    [wsl2]
    networkingMode=mirrored
  2. Restart WSL:

    wsl --shutdown
    # Then reopen your WSL terminal
  3. That's it! Comet MCP auto-detects WSL and uses PowerShell to communicate with Windows.

If mirrored networking isn't available, you'll see a helpful error message with setup instructions.

Custom Comet Path

If Comet is installed in a non-standard location:

{
  "mcpServers": {
    "comet-bridge": {
      "command": "npx",
      "args": ["-y", "comet-mcp"],
      "env": {
        "COMET_PATH": "/path/to/your/Comet"
      }
    }
  }
}

Troubleshooting

"Cannot connect to Comet"

  • macOS: Ensure Comet is installed at /Applications/Comet.app

  • Windows: Comet should be in %LOCALAPPDATA%\Perplexity\Comet\Application\

  • Check if port 9222 is available

"WSL cannot connect to Windows localhost"

  • Enable mirrored networking (see WSL section above)

  • Or run Claude Code from Windows PowerShell instead of WSL

"Tools not showing in Claude"

  • Restart Claude Code after config changes

License

MIT


Report Issues · Contribute

Available Tools

6 tools
comet_askA

Send a prompt to Comet/Perplexity and wait for the complete response (blocking). Ideal for tasks requiring real browser interaction (login walls, dynamic content, filling forms) or deep research with agentic browsing.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesQuestion or task for Comet - focus on goals and context
newChatNoStart a fresh conversation (default: false)
timeoutNoMax wait time in ms (default: 15000 = 15s)

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the blocking nature and ideal use cases, but lacks details on potential side effects, error handling, or response format. It doesn't mention authentication needs, rate limits, or what constitutes a 'complete response.'

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 extremely concise and front-loaded: the first sentence states the core functionality, and the second provides usage guidelines. Every sentence earns its place with no wasted words or redundant information.

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?

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is adequate but has gaps. It explains the purpose and ideal use cases well, but doesn't address what the response looks like, error conditions, or how it differs from sibling tools. For a tool that interacts with an external service, more behavioral context would be helpful.

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?

The schema has 100% description coverage, so parameters are well-documented in the schema itself. The description doesn't add any parameter-specific information beyond what's in the schema. The baseline score of 3 reflects that the schema adequately covers parameter semantics without needing description reinforcement.

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 purpose: 'Send a prompt to Comet/Perplexity and wait for the complete response (blocking).' It specifies the verb ('send'), resource ('Comet/Perplexity'), and behavior ('blocking'). However, it doesn't explicitly differentiate from sibling tools like comet_connect or comet_poll, which likely handle different aspects of Comet interaction.

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 usage context: 'Ideal for tasks requiring real browser interaction (login walls, dynamic content, filling forms) or deep research with agentic browsing.' This gives specific scenarios when to use this tool, but it doesn't explicitly mention when NOT to use it or name alternatives among the sibling tools.

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 Comet browser (auto-starts if needed)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that the tool may auto-start the browser, a key behavioral trait. However, it does not mention side effects, permissions, or confirm whether it blocks or returns a status.

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, front-loaded sentence with no extraneous words. Every part adds value, achieving maximum conciseness.

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?

Given zero parameters and no output schema, the description is minimally sufficient but lacks details on return behavior or blocking nature. It could be more informative without being verbose.

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 has 0 parameters, so no parameter description is needed. According to guidelines, 0 parameters yields a baseline of 4, meriting credit for having no missing param info.

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 verb 'Connect' and the resource 'Comet browser', with added context 'auto-starts if needed'. This distinguishes it from sibling tools like comet_ask, comet_stop, etc., which are clearly different actions.

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 this tool is used to establish a connection or start the browser, but provides no explicit guidance on when to use it versus alternatives, nor any conditions or prerequisites.

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

comet_modeA

Switch Perplexity search mode. Modes: 'search' (basic), 'research' (deep research), 'labs' (analytics/visualization), 'learn' (educational). Call without mode to see current mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoMode to switch to (optional - omit to see current mode)

TDQS

A4.1/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It discloses that calling without mode retrieves the current state (read behavior) and calling with mode switches it (write behavior). However, it does not mention any side effects, prerequisites, or what happens on failure.

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 extremely concise, using three short sentences. It front-loads the action and lists modes efficiently, with no redundant information.

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, but the description lacks details about return values (e.g., confirmation or error messages). It implies a read behavior without mode but does not specify output format. Given the simplicity, it is somewhat adequate but has gaps.

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 coverage is 100% with an enum and description. The description adds value by explaining each mode's purpose in parentheses, which is more informative than the enum labels alone. This complements the schema effectively.

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 verb 'Switch' and the resource 'Perplexity search mode', listing all modes with brief explanations. It distinguishes from sibling tools (e.g., comet_ask, comet_connect) by focusing solely on mode management.

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 explicitly instructs when to call without a mode to see the current mode, providing clear usage context. However, it does not offer guidance on when to use specific modes or alternatives among the modes themselves.

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

comet_pollA

Check agent status and progress. Call repeatedly to monitor agentic tasks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 must disclose behavior. It implies a read-only, safe polling operation by saying 'check' and 'monitor', but does not mention what happens if the agent is idle or fails, nor any rate limits. Adequate but minimal.

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

Conciseness5/5

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

Two sentences, no wasted words. Front-loaded with purpose, then usage hint. Every sentence earns its place.

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 is mostly complete for a simple no-param polling tool: what it does and how to use it. It lacks detail on return format, but given no output schema, the agent can infer a status summary. Slight gap in describing the response nature.

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?

There are no parameters (schema coverage 100% trivially), so the baseline is 4. The description adds meaning about repeated calls, which is helpful for an empty-schema tool.

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 it checks agent status and progress, with the verb 'check' and resource 'agent status/progress'. It distinguishes from siblings like comet_ask (single query) and comet_stop (stop) by emphasizing repeated calling for monitoring.

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 explicitly says 'Call repeatedly to monitor agentic tasks', giving clear when-to-use context for polling. It does not explicitly exclude alternatives, but the purpose is well-defined given sibling names.

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

comet_screenshotB

Capture a screenshot of current page

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are given, and the description does not disclose any behavioral traits like required permissions, side effects (e.g., page scrolling), or output format.

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 a single concise sentence that directly states the tool's purpose, with no unnecessary words.

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

Completeness2/5

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

Given the absence of an output schema, the description should explain what the tool returns (e.g., image data or a file path), but it does not, leaving the agent uninformed about the output.

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?

With zero parameters and 100% schema coverage, the description meets the baseline of 4, as there is no additional parameter information needed beyond 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 action 'Capture a screenshot' and the resource 'current page', distinguishing it from sibling tools like comet_ask, comet_tabs, etc.

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, such as comet_tabs for navigation or comet_upload for file operations.

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

comet_stopA

Stop the current agent task if it's going off track

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Describes the core behavior (stop a task), but lacks detail on side effects, reversibility, or post-stop state. Without annotations, the description carries the full burden and is minimally adequate.

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?

Single sentence with no extraneous words, fully front-loaded with action and condition. Every word earns its place.

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 stop tool with no params or output schema, the description is sufficient to understand purpose and usage condition. Minor improvement could include mention of irreversibility or effect on subsequent tasks.

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 tool has no parameters, so the description cannot add meaning beyond the schema. Baseline score of 4 applies per guidelines.

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?

Clearly states the action ('stop') and resource ('current agent task'), with a specific condition ('if it's going off track'). Distinguishes from sibling tools like comet_ask or comet_connect by its specific verb and context.

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?

Provides a clear condition for use ('if it's going off track'), implying when to invoke. However, no explicit mention of when not to use or alternatives, which would fully round out the guidance.

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.

  1. 6 tool updates
    • First observedcomet_ask
    • First observedcomet_connect
    • First observedcomet_mode
    • First observedcomet_poll
    • First observedcomet_screenshot
    • First observedcomet_stop

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: comet_ask sends prompts, comet_connect establishes browser connection, comet_mode switches search modes, comet_poll checks status, comet_screenshot captures visuals, and comet_stop halts tasks. The descriptions clearly differentiate their functions, eliminating any ambiguity.

Naming Consistency5/5

All tools follow a consistent 'comet_verb' naming pattern (e.g., comet_ask, comet_connect, comet_mode). This uniform prefix and snake_case structure make the set predictable and easy to understand, with no deviations in style or convention.

Tool Count5/5

With 6 tools, the count is well-scoped for a browser/agent interaction server. Each tool serves a specific, necessary function in the workflow (e.g., connecting, querying, monitoring, controlling), and none feel redundant or missing for the domain's core operations.

Completeness4/5

The tool set covers essential CRUD-like operations for browser-based tasks: initiating (comet_connect), querying (comet_ask), configuring (comet_mode), monitoring (comet_poll), capturing (comet_screenshot), and stopping (comet_stop). A minor gap is the lack of a tool for direct page navigation or interaction beyond prompts, but agents can work around this using comet_ask for such actions.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Integrates the Sonar API to provide Claude with real-time web-wide research capabilities. Enables conversational web searches through Perplexity's AI-powered search engine for up-to-date information retrieval.
    1,255 npm
    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
    113 npm
    50
    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
    63 npm
    MIT