Repository avatar
Communication
v1.0.0
active

mcp-notify

io.github.nirholas/mcp-notify

Monitor MCP registry for new servers - Discord Slack notifications alerts

Documentation

MCP Notify

MCP Notify

Real-time monitoring and notifications for the MCP Registry ecosystem.

Go Version License MCP Registry

FeaturesQuick StartDocsDeployContributing

MCP Notify Docs MCP Notify Dashboard


Never miss an MCP update again. MCP Notify monitors the official MCP Registry for changes and delivers instant notifications through Discord, Slack, email, webhooks, and more.

MCP Notify monitors the official MCP Registry for changes and delivers notifications through multiple channels. Track new servers, version updates, and removals across the entire ecosystem or filter to specific namespaces and keywords.

✨ Features

Core Capabilities

  • Real-time Monitoring: Poll the MCP Registry at configurable intervals
  • Smart Diffing: Detect new servers, updates, version changes, and removals
  • Flexible Filtering: Subscribe to specific namespaces, keywords, or server patterns
  • Change History: Full audit trail of all detected changes with timestamps

Notification Channels

  • Discord: Rich embeds with server details and direct links
  • Slack: Interactive messages with action buttons
  • Email: Digest emails (immediate, hourly, daily, weekly)
  • Webhooks: Generic HTTP webhooks for custom integrations
  • RSS/Atom: Subscribe via any feed reader
  • Telegram: Bot notifications via Telegram Bot API
  • Microsoft Teams: Adaptive Cards with full Teams integration

Deployment Options

  • Hosted Service: Use our hosted instance at watch.mcpregistry.dev
  • Self-Hosted: Deploy your own instance via Docker or Kubernetes
  • CLI Tool: One-off checks and local monitoring

Developer Experience

  • REST API: Full API for programmatic subscription management

  • Web Dashboard: Visual configuration and monitoring interface

  • Go SDK: Embed in your own applications

  • OpenAPI Spec: Generate clients in any language

    🏗️ Architecture

┌────────────────────────────────────────────────────────────────┐
│                        MCP Notify                              │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│  ┌──────────┐    ┌──────────┐    ┌──────────────────────────┐  │
│  │  Poller  │───▶│  Differ  │───▶│  Notification Dispatcher │  │
│  └──────────┘    └──────────┘    └──────────────────────────┘  │
│       │               │                      │                 │
│       ▼               ▼                      ▼                 │
│  ┌──────────┐    ┌──────────┐    ┌──────────────────────────┐  │
│  │ Registry │    │ Snapshot │    │        Channels          │  │
│  │   API    │    │  Store   │    │  ┌───────┐ ┌───────────┐ │  │
│  └──────────┘    └──────────┘    │  │Discord│ │   Slack   │ │  │
│                       │          │  └───────┘ └───────────┘ │  │
│                       ▼          │  ┌───────┐ ┌───────────┐ │  │
│                  ┌──────────┐    │  │ Email │ │  Webhook  │ │  │
│                  │PostgreSQL│    │  └───────┘ └───────────┘ │  │
│                  └──────────┘    │  ┌───────┐               │  │
│                                  │  │  RSS  │               │  │
│                                  │  └───────┘               │  │
│                                  └──────────────────────────┘  │
│                                                                │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │                       REST API                           │  │
│  │  /subscriptions  /changes  /feeds  /health  /metrics     │  │
│  └──────────────────────────────────────────────────────────┘  │
│                                                                │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │                    Web Dashboard                         │  │
│  │  React + TypeScript + Tailwind + shadcn/ui               │  │
│  └──────────────────────────────────────────────────────────┘  │
│                                                                │
└────────────────────────────────────────────────────────────────┘

🚀 Quick Start

Using the Hosted Service

# Create a webhook subscription via API
curl -X POST https://watch.mcpregistry.dev/api/v1/subscriptions \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My DeFi Alerts",
    "filters": {
      "keywords": ["defi", "ethereum", "swap"],
      "namespaces": ["io.github.*"]
    },
    "channels": [{
      "type": "discord",
      "config": {
        "webhook_url": "https://discord.com/api/webhooks/..."
      }
    }]
  }'

Self-Hosted with Docker

# Clone the repository
git clone https://github.com/nirholas/mcp-notify.git
cd mcp-notify

# Configure environment
cp .env.example .env
# Edit .env with your settings

# Start services
docker compose up -d

# Access dashboard at http://localhost:8080

Using the CLI

# Install CLI
go install github.com/nirholas/mcp-notify/cmd/mcp-notify-cli@latest

# Check for recent changes
mcp-notify-cli changes --since 24h

# Watch with live output
mcp-notify-cli watch --filter "defi,blockchain" --output json

# Subscribe to notifications
mcp-notify-cli subscribe \
  --discord-webhook "https://discord.com/api/webhooks/..." \
  --filter "io.github.myorg/*"

📦 Installation

Prerequisites

  • Go 1.22+ (for building from source)
  • PostgreSQL 15+ (for persistence)
  • Redis 7+ (optional, for caching)
  • Docker & Docker Compose (for containerized deployment)

From Source

git clone https://github.com/nirholas/mcp-notify.git
cd mcp-notify
make build
./bin/mcp-notify --config config.yaml

Docker

docker pull ghcr.io/nirholas/mcp-notify:latest
docker run -p 8080:8080 -v $(pwd)/config.yaml:/app/config.yaml \
  ghcr.io/nirholas/mcp-notify:latest

Kubernetes

helm repo add mcp-notify https://YOUR_USERNAME.github.io/mcp-notify
helm install mcp-notify mcp-notify/mcp-notify \
  --set config.registryUrl=https://registry.modelcontextprotocol.io \
  --set notifications.discord.enabled=true

🔧 Configuration

Environment Variables

VariableDescriptionDefault
MCP_WATCH_REGISTRY_URLMCP Registry API URLhttps://registry.modelcontextprotocol.io
MCP_WATCH_POLL_INTERVALPolling interval5m
MCP_WATCH_DATABASE_URLPostgreSQL connection stringRequired
MCP_WATCH_REDIS_URLRedis connection stringOptional
MCP_WATCH_API_PORTAPI server port8080
MCP_WATCH_LOG_LEVELLog level (debug, info, warn, error)info

Configuration File

# config.yaml
server:
  port: 8080
  host: "0.0.0.0"
  cors:
    origins: ["*"]

registry:
  url: "https://registry.modelcontextprotocol.io"
  poll_interval: 5m
  timeout: 30s
  retry_attempts: 3

database:
  url: "postgres://user:pass@localhost:5432/mcp_watch?sslmode=disable"
  max_connections: 25
  
redis:
  url: "redis://localhost:6379/0"
  
notifications:
  discord:
    enabled: true
    rate_limit: 30/min
  slack:
    enabled: true
    rate_limit: 30/min
  email:
    enabled: true
    smtp:
      host: "smtp.example.com"
      port: 587
      username: ""
      password: ""
      from: "mcp-notify@example.com"
  webhook:
    enabled: true
    timeout: 10s
    retry_attempts: 3
  rss:
    enabled: true
    items_per_feed: 100
    
telemetry:
  metrics:
    enabled: true
    port: 9090
  tracing:
    enabled: false
    endpoint: ""

📡 API Reference

Subscriptions

# Create subscription
POST /api/v1/subscriptions

# List subscriptions
GET /api/v1/subscriptions

# Get subscription
GET /api/v1/subscriptions/{id}

# Update subscription
PUT /api/v1/subscriptions/{id}

# Delete subscription
DELETE /api/v1/subscriptions/{id}

# Pause/resume subscription
POST /api/v1/subscriptions/{id}/pause
POST /api/v1/subscriptions/{id}/resume

Changes

# Get recent changes
GET /api/v1/changes?since=2025-01-01T00:00:00Z&limit=100

# Get change details
GET /api/v1/changes/{id}

# Get changes for specific server
GET /api/v1/changes?server=io.github.example/my-server

Feeds

# RSS feed (all changes)
GET /api/v1/feeds/rss

# Atom feed (all changes)
GET /api/v1/feeds/atom

# Filtered feed
GET /api/v1/feeds/rss?namespace=io.github.*&keywords=defi

Health & Metrics

# Health check
GET /health

# Readiness check
GET /ready

# Prometheus metrics
GET /metrics

Full API documentation available at /api/docs when running the server, or see docs/api/openapi.yaml.

🔔 Notification Formats

Discord

Discord notification example

Rich embeds include:

  • Server name and description
  • Change type (new, updated, removed)
  • Version information
  • Direct link to registry
  • Package registry links (npm, PyPI, etc.)

Slack

Interactive messages with:

  • Expandable server details
  • Quick action buttons
  • Thread support for related changes

Email Digest

Configurable digest emails:

  • Immediate (per-change)
  • Hourly summary
  • Daily digest
  • Weekly roundup

Webhook Payload

{
  "event_type": "server.updated",
  "timestamp": "2025-01-04T12:00:00Z",
  "server": {
    "name": "io.github.example/my-server",
    "description": "An example MCP server",
    "version": "2.0.0",
    "previous_version": "1.5.0",
    "packages": [...],
    "remotes": [...]
  },
  "changes": [
    {
      "field": "version",
      "old_value": "1.5.0",
      "new_value": "2.0.0"
    },
    {
      "field": "description",
      "old_value": "...",
      "new_value": "..."
    }
  ],
  "registry_url": "https://registry.modelcontextprotocol.io/v0/servers/io.github.example%2Fmy-server"
}

📸 Screenshots

Click to expand screenshots

Dashboard Overview

Dashboard Overview

Changes Explorer

Changes Explorer

Subscription Management

Subscription Management

Server Browser

Server Browser

Settings

Settings

📖 Documentation

DocumentDescription
ArchitectureSystem design, components, and data flow
API ReferenceComplete REST API documentation
Deployment GuideDocker, Kubernetes, and production setup
Notification ChannelsChannel configuration and troubleshooting
Demo GuideHands-on walkthrough and examples
ContributingDevelopment setup and guidelines

🧪 Testing

# Run unit tests
make test

# Run integration tests (requires Docker)
make test-integration

# Run e2e tests
make test-e2e

# Run all tests with coverage
make test-coverage

🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development Setup

# Clone repo
git clone https://github.com/nirholas/mcp-notify.git
cd mcp-notify

# Install dependencies
make deps

# Start development services
make dev-services

# Run in development mode with hot reload
make dev

# Run linters
make lint

# Generate code (API clients, mocks, etc.)
make generate

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

📞 Support


Made with ❤️ for the MCP community


Built with ❤️ for the MCP community