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

wiretap-mcp

v2.0.0

Published

MCP Server — Real-time React Native debugging for Claude Code. Terminal logs, Hermes/CDP runtime, network inspector, Reactotron integration, iOS/Android crash reports.

Downloads

118

Readme


The Problem

When debugging React Native with Claude Code, you constantly copy-paste logs, describe errors manually, and lose context switching between terminal, Reactotron, and your editor. Claude is powerful, but blind to what your app is actually doing.

The Solution

Wiretap is an MCP server that taps directly into every signal your app emits. Terminal logs, JS runtime output, network traffic, state changes, native crashes. Claude Code sees it all in real time, and you interact with it through natural language.

No copy-paste. No context switching. Just ask.

Features

Zero copy-paste. Claude reads your Metro and Expo logs directly.

JS runtime logs. console.log, console.warn, and console.error captured from Hermes via Chrome DevTools Protocol.

Network inspector. HTTP requests captured via CDP with no proxy or in-app setup needed.

Reactotron integration. API calls, Redux and Zustand state, and benchmarks flow into Claude's context automatically.

Native crash reports. iOS crash reports and Android crashes captured with full stack traces.

Persistent logs. Optionally persist logs to disk so they survive server restarts.

Always watching. Auto-detects Metro and Expo processes, reconnects to Reactotron and Hermes on its own.

Installation

claude mcp add wiretap -- npx wiretap-mcp

After restarting Claude Code, ask:

"What's the app status?"

You should see connection info for all active monitors.

How It Works

┌─────────────────────────────────────────────────────────┐
│                    Your RN App                          │
│                                                         │
│   Metro/Expo    Hermes Runtime    Reactotron    Native  │
│       │              │               │            │     │
└───────┼──────────────┼───────────────┼────────────┼─────┘
        │              │               │            │
        ▼              ▼               ▼            ▼
┌─────────────────────────────────────────────────────────┐
│                                                         │
│                    ⚡ Wiretap MCP                        │
│                                                         │
│   Terminal      Hermes/CDP      Reactotron    Crash     │
│   Monitor       Monitor         Monitor      Monitor    │
│                                                         │
└────────────────────────┬────────────────────────────────┘
                         │
                         ▼
                  ┌──────────────┐
                  │  Claude Code │
                  │              │
                  │  "What went  │
                  │   wrong?"    │
                  └──────────────┘

Tools

| Tool | Description | |------|-------------| | get_terminal_logs | Metro/Expo terminal output with severity filtering | | get_hermes_logs | JS runtime logs (console.log/warn/error) from Hermes via CDP | | get_network_calls | HTTP network calls via CDP, filterable by URL and status code | | get_reactotron_logs | Reactotron logs filtered by type (api, state, log, benchmark) | | get_errors | Consolidated errors from terminal, Reactotron, and Hermes | | get_api_calls | HTTP requests from Reactotron, filterable by endpoint | | get_state_changes | Redux/MobX/Zustand dispatches with before/after diffs | | get_native_crashes | Native crash reports from iOS and Android | | get_app_status | Dashboard with all monitor statuses, error counts, and uptime | | get_performance | Benchmark and render time metrics from Reactotron | | search_logs | Regex search across all log sources | | clear_logs | Reset all buffers |

Usage

Once installed, just talk to Claude naturally:

"What errors happened in the last few minutes?"
"Show me the failing API calls"
"What's the JS console output?"
"Show me the network requests to /api/auth"
"Did the app crash natively?"
"What state changes happened after the login action?"
"Search the logs for 'timeout'"

Configuration

Create a wiretap.config.json in your project root. All fields are optional. Defaults work out of the box.

{
  "reactotronPort": 9090,
  "metroPort": 8081,
  "autoDetectTerminal": true
}

All Options

| Option | Default | Description | |--------|---------|-------------| | reactotronPort | 9090 | WebSocket port for Reactotron | | terminalLogBufferSize | 500 | Max terminal log entries in memory | | reactotronLogBufferSize | 500 | Max Reactotron entries in memory | | autoDetectTerminal | true | Auto-detect Metro/Expo processes | | filterPatterns | [] | Regex patterns to exclude from logs | | hermesEnabled | true | Capture JS runtime logs via Hermes/CDP | | metroPort | 8081 | Metro bundler port for CDP discovery | | cdpCaptureNetwork | true | Capture HTTP network calls via CDP | | persistLogs | false | Persist logs to disk (JSONL) | | persistPath | ~/.wiretap | Directory for persisted logs | | persistFlushIntervalMs | 5000 | Flush interval in ms | | persistMaxEntriesOnLoad | 200 | Max entries to reload on startup | | iosCrashMonitorEnabled | true | Watch iOS crash reports (macOS only) | | iosCrashReportPath | ~/Library/Logs/DiagnosticReports | iOS crash report directory | | androidCrashMonitorEnabled | true | Monitor Android crashes via adb | | adbPath | adb | Path to adb binary |

Requirements

  • Node.js >= 18
  • Claude Code
  • React Native project with Metro or Expo
  • Reactotron (optional)
  • adb (optional, for Android crash monitoring)

Contributing

Contributions are welcome. Please open an issue first to discuss what you would like to change.

License

MIT