npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@onestepat4time/asteria

v1.1.3

Published

MCP server for Perplexity Comet browser management

Readme


How It Works

Asteria is an MCP server that bridges AI assistants with Perplexity Comet — the agentic browser that researches, browses, and answers questions autonomously. Unlike simple search APIs, Comet navigates pages, follows links, and reasons over live web content. Asteria exposes all of that through 13 MCP tools via Chrome DevTools Protocol (CDP), with no Puppeteer or Playwright dependencies.

graph LR
  A["AI Agent\n(Claude / GPT / Gemini)"] -->|"MCP stdio"| B["Asteria\nMCP Server"]
  B -->|"CDP WebSocket"| C["Perplexity\nComet Browser"]
  C -->|"HTTP requests"| D["Web Pages\n& Sources"]
  D -->|"Response + Sources"| C
  C -->|"Research results"| B
  B -->|"Formatted response"| A

The agent sends a prompt through MCP. Asteria connects to Comet over CDP, submits the query, monitors Comet's agentic research cycle, and returns the full response with cited sources.


Features

| | Feature | Description | |---|---------|-------------| | 🔌 | 13 MCP tools | Connect, ask, poll, wait, stop, screenshot, mode switch, tab management, source extraction, conversation history, page content | | ⚡ | Non-blocking polling | Submit a prompt and poll for completion — the agent keeps working while Comet researches | | ⏳ | Blocking wait | comet_wait blocks until Comet finishes, ideal when comet_ask times out mid-response | | 🔍 | Auto-detect Comet | Finds Comet on Windows, macOS, and Linux; launches it with the correct debug port | | 🔄 | Auto-reconnect | Exponential backoff with health checks — survives Comet restarts without dropping the session | | 🧠 | Version-aware selectors | Auto-detects Comet's Chrome version and routes to the correct CSS selectors | | 📑 | Tab categorization | Tracks main, sidecar, agent-browsing, and overlay tabs separately | | 🚫 | Zero browser dependencies | No Puppeteer or Playwright — uses CDP directly via chrome-remote-interface | | 🛠️ | CLI included | asteria detect to check installation, asteria snapshot to capture DOM structure |


Requirements

  • Node.js >= 18
  • Perplexity Comet installed and running
  • Windows, macOS, or Linux (Linux requires setting COMET_PATH)

Installation

npm install -g @onestepat4time/asteria

Quick Start

1. Add to your MCP client config

Claude Code (~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "asteria": {
      "type": "stdio",
      "command": "asteria",
      "args": ["start"]
    }
  }
}

Cursor (~/.cursor/mcp.json) — same format.

2. Make sure Comet is running

Open Perplexity Comet on your machine. Asteria auto-detects the running instance.

3. Use in your agent

> Ask Perplexity what the latest AI research papers are this week

Asteria connects to Comet, sends the query, waits for the full research response, and returns it with cited sources to your assistant.


Tools

| Tool | Description | Docs | |------|-------------|------| | comet_connect | Connect to or launch Perplexity Comet | Reference | | comet_ask | Send a prompt and start an agentic search | Reference | | comet_poll | Check current agent status, steps, and response content | Reference | | comet_wait | Block until the agent finishes responding; use after comet_ask times out | Reference | | comet_stop | Stop the currently running agent | Reference | | comet_screenshot | Capture a screenshot of the active tab | Reference | | comet_mode | Get or switch the search mode (standard, deep-research, model-council, etc.) | Reference | | comet_list_tabs | List all open tabs by category (main, sidecar, agent-browsing, overlay) | Reference | | comet_switch_tab | Switch focus to a specific tab by ID or title | Reference | | comet_get_sources | Extract cited sources from the current response | Reference | | comet_list_conversations | List recent conversation links visible on the page | Reference | | comet_open_conversation | Navigate to a specific conversation URL | Reference | | comet_get_page_content | Extract full text from the active page | Reference |


CLI

asteria start      # Start MCP stdio server
asteria detect     # Detect Comet installation path and debug port
asteria --version  # Print version
asteria --help     # Print help

Configuration

All settings can be overridden via environment variables:

| Variable | Default | Description | |----------|---------|-------------| | ASTERIA_PORT | 9222 | CDP debug port | | COMET_PATH | auto-detect | Path to Comet executable | | ASTERIA_LOG_LEVEL | info | Log level: debug / info / warn / error | | ASTERIA_TIMEOUT | 30000 | Comet launch timeout (ms) | | ASTERIA_RESPONSE_TIMEOUT | 180000 | Max wait for response (ms) | | ASTERIA_POLL_INTERVAL | 1000 | Status poll interval (ms) | | ASTERIA_SCREENSHOT_FORMAT | png | Screenshot format: png / jpeg | | ASTERIA_MAX_RECONNECT | 5 | Max reconnection attempts | | ASTERIA_RECONNECT_DELAY | 5000 | Max reconnection backoff delay (ms) |

See Configuration for the full reference.


Guides

| Guide | Description | |-------|-------------| | Tool Reference | All 13 tools with parameters, return values, and examples | | Integration Guide | Set up with Claude Code, Cursor, or custom MCP clients | | Configuration | Environment variables and config files | | Troubleshooting | Common issues and error codes | | Architecture | How Asteria works internally |


Architecture

graph TD
  subgraph MCP["MCP Protocol Layer"]
    T1[comet_connect] & T2[comet_ask] & T3[comet_poll]
    T4[comet_wait] & T5[comet_stop] & T6[comet_screenshot]
    T7[comet_mode] & T8[comet_list_tabs] & T9[comet_switch_tab]
    T10[comet_get_sources] & T11[comet_list_conversations]
    T12[comet_open_conversation] & T13[comet_get_page_content]
  end

  subgraph UI["UI Automation"]
    S[Selector Strategies]
    I[Prompt Input]
    ST[Status Detection]
    EX[Content Extraction]
  end

  subgraph CDP["CDP Transport"]
    BR[Browser Launcher]
    CO[WebSocket Connection]
    TA[Tab Management]
    RC[Auto-Reconnect]
  end

  T2 --> I
  T3 --> ST
  T4 --> ST
  T10 & T13 --> EX
  T6 & T8 --> TA
  I & ST & EX --> S
  CO --> BR
  TA & RC --> CO
  CO --> Comet[Perplexity Comet]

Roadmap

  • [ ] Streaming responses — stream Comet responses token-by-token instead of polling
  • [ ] MCP Resources — expose Perplexity pages as MCP resources for direct reading
  • [ ] Multi-Comet sessions — control multiple Comet instances simultaneously
  • [ ] HTTP/SSE transport — support N8N and REST clients in addition to stdio
  • [ ] Browser extension — package as a browser extension for tighter integration

Contributing

Contributions are welcome. Open an issue before submitting large PRs.

git clone https://github.com/OneStepAt4time/asteria.git
cd asteria
npm install
npm run build
npm test

See Contributing for code style, adding Comet versions, and commit conventions.


Support the Project

If Asteria saves you time, consider sponsoring:


License

MIT © 2026 OneStepAt4time