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

event-channel-mcp

v0.1.0

Published

Push platform events into your AI coding session. A Claude Code Channel that monitors any CLI command, webhook, or script and delivers real-time notifications.

Downloads

94

Readme

event-channel-mcp

Push platform events into your AI coding session. Monitor any CLI command, API, or webhook and get real-time notifications in Claude Code.

Platform events (Twitter, GitHub, HN, email...)
    ↓ polling / webhook
event-channel-mcp (MCP stdio server)
    ↓ claude/channel protocol
Claude Code session ← notification appears here

Install

npm install -g event-channel-mcp

Quick Start

1. Create config

mkdir -p ~/.config/event-channel-mcp
cat > ~/.config/event-channel-mcp/config.yaml << 'EOF'
sources:
  # Monitor Hacker News top stories
  - name: hackernews
    command: "curl -s https://hacker-news.firebaseio.com/v0/topstories.json"
    interval: 300
    enabled: true

  # Monitor GitHub notifications (requires gh CLI)
  - name: github-notifications
    command: "gh api /notifications"
    interval: 120
    enabled: true

  # Monitor your server health
  - name: server-health
    command: "curl -s https://api.myapp.com/health"
    interval: 60
    enabled: true

webhook:
  enabled: true
  port: 8788
  token: ""
EOF

2. Register in Claude Code

Add to ~/.claude.json under mcpServers:

{
  "event-channel-mcp": {
    "command": "event-channel-mcp",
    "type": "stdio"
  }
}

Or for development:

{
  "event-channel-mcp": {
    "command": "npx",
    "args": ["event-channel-mcp"],
    "type": "stdio"
  }
}

3. Launch

claude --dangerously-load-development-channels server:event-channel-mcp

Events will now push into your session automatically.

Configuration

Polling Sources

Any command that outputs a JSON array can be a polling source:

sources:
  - name: my-source          # display name
    command: "curl -s ..."    # shell command (must output JSON)
    interval: 60              # seconds between polls (min: 30)
    enabled: true             # toggle on/off
    dedupField: "id"          # optional: override dedup key field
    jsonPath: "data.items"    # optional: extract array from nested JSON

Dedup key priority: id > url > title > name > SHA-256 hash

Examples:

| Source | Command | |--------|---------| | GitHub notifications | gh api /notifications | | Hacker News | curl -s https://hacker-news.firebaseio.com/v0/topstories.json | | RSS feed (with jq) | curl -s https://example.com/feed.json \| jq '.items' | | Docker containers | docker ps --format json | | Custom script | node my-monitor.js | | Any CLI tool | Any command that outputs JSON |

Webhook

Receive events via HTTP POST:

webhook:
  enabled: true
  port: 8788                  # localhost only
  token: "my-secret"          # optional Bearer token, supports $ENV_VAR

Send events:

curl -X POST http://127.0.0.1:8788/events \
  -H "Content-Type: application/json" \
  -d '{"source": "ci", "event": "build_failed", "message": "Build failed on main"}'

Webhook payload:

| Field | Type | Description | |-------|------|-------------| | source | string | Platform name | | event | string | Event type | | message | string | Human-readable summary | | data | object | Optional raw data |

Environment Variables

| Variable | Description | |----------|-------------| | EVENT_CHANNEL_CONFIG | Override config file path |

How It Works

  1. Polling sources execute your shell command on an interval
  2. Results are compared against the previous snapshot (diff detection)
  3. Only new items are pushed as notifications
  4. Webhook source accepts HTTP POST and pushes immediately
  5. Events go through a bounded queue (200 max, dedup by ID)
  6. Notifications are delivered via MCP claude/channel protocol

Error Handling

  • Command fails: Exponential backoff (×2, ×4, max 5min), one notification to user
  • Invalid JSON output: Skip cycle, log warning
  • Queue overflow: Discard oldest silently
  • Session disconnect: Graceful shutdown

Requirements

  • Node.js >= 20
  • Claude Code >= 2.1.80 (Channels is research preview)
  • claude.ai login (API key auth not supported for Channels)

License

MIT