Domain Monitor

io.github.jasoncbraatzPublished by GitHub account jasoncbraatzv0.1.1Updated Oct 24, 2026

Query domain expiration data from domain-monitor.io via AI assistants like Claude.

Overview

AI-generated overview

Unofficial local MCP server that lets an assistant query and add domains in a domain-monitor.io account, including expiry dates and alerts.

What you can do
Check which domains expire soon or within a chosen number of days, and list all monitored domains with pagination and expiry filters. Look up a single domain by name and get its expiry details. Read account statistics, subscription status and active alerts. Add a new domain to monitoring with a configurable alert period and certificate, DNS or blacklist check toggles.
When to use it
Useful if you already have a domain-monitor.io account and want to ask an assistant about upcoming domain expirations, get a health overview, or register new domains for monitoring without opening the website.
Requirements
Runs locally as a Python process (Python 3.10+), installed from the PyPI package or the repository, and configured in an MCP client such as Claude Desktop. Requires a domain-monitor.io account (free or paid) and the environment variables DOMAIN_MONITOR_EMAIL and DOMAIN_MONITOR_PASSWORD. Needs network access to the domain-monitor.io API.
Before you install
The account password is supplied in plain text through DOMAIN_MONITOR_PASSWORD and used to log in to the service's internal API, so treat the config file as sensitive. The add-domain tool writes to your account. The server is unofficial, built by reverse-engineering browser traffic, and the API may change without notice. The API reportedly limits requests per session.

Installation

In SourceWeft

  1. Open Domain Monitor in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

domain-monitor-mcp

An unofficial MCP (Model Context Protocol) server for domain-monitor.io, enabling AI assistants like Claude to query your domain expiration data directly — no browser required.

Note: This is a community project, not officially supported by domain-monitor.io. It uses the internal API discovered by inspecting browser network traffic. If you're the domain-monitor.io developer and would like to collaborate on an official MCP server or public API, please open an issue — we'd love to work with you!


What it does

Once installed, you can ask Claude things like:

  • "Any domains expiring in the next 30 days?"
  • "When does braatz.io expire?"
  • "Give me a domain health overview"
  • "List all my domains sorted by expiry date"
  • "Add newdomain.com to domain monitor with a 60-day alert"

No more digging through emails that landed in spam or SMS alerts that got filtered. Just ask.


Tools provided

ToolDescription
domain_monitor_get_expiring_soonQuick check — domains expiring within your alert window
domain_monitor_list_domainsFull paginated list with optional filter by days-until-expiry
domain_monitor_check_domainLook up a specific domain by name
domain_monitor_get_account_summaryAccount stats, subscription status, and active alerts
domain_monitor_add_domainAdd a new domain to monitoring with configurable alert period and monitoring toggles

Installation

Prerequisites

  • Python 3.10+
  • A domain-monitor.io account (free or paid)
  • Claude Desktop (or any MCP-compatible client)

1. Clone this repo

bash
git clone https://github.com/jasoncbraatz/domain-monitor-mcp.gitcd domain-monitor-mcp

2. Install dependencies

bash
pip install -r requirements.txt

Or with uv (faster):

bash
uv pip install -r requirements.txt

3. Configure Claude Desktop

Add the following to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

json
{  "mcpServers": {    "domain-monitor": {      "command": "python",      "args": ["/absolute/path/to/domain-monitor-mcp/server.py"],      "env": {        "DOMAIN_MONITOR_EMAIL": "[email protected]",        "DOMAIN_MONITOR_PASSWORD": "yourpassword"      }    }  }}

Replace /absolute/path/to/domain-monitor-mcp/server.py with the actual path where you cloned this repo.

4. Restart Claude Desktop

After saving the config, fully quit and relaunch Claude Desktop. The domain-monitor tools will appear in Claude's tool list.


Authentication

This server authenticates using your domain-monitor.io email and password via Laravel Sanctum session auth — the same mechanism the website uses under the hood. Sessions are maintained in memory and automatically refreshed if they expire.

Your credentials are never stored to disk — they live only in the environment variables you configure above, and only in memory while the server is running.


How it works (for the curious / developers)

domain-monitor.io is a Nuxt.js SPA backed by a Laravel API. The API lives at https://api.domain-monitor.io/. Authentication follows the standard Laravel Sanctum CSRF + session cookie flow:

  1. GET https://api.domain-monitor.io/sanctum/csrf-cookie → sets XSRF-TOKEN + domain_monitor_session cookies
  2. POST https://api.domain-monitor.io/login with {email, password} + X-XSRF-TOKEN header → authenticates
  3. Subsequent requests to https://api.domain-monitor.io/api/* use the session cookies + refreshed XSRF token

Key endpoints used:

  • GET /api/account — account info + user ID
  • GET /api/account-dashboard — summary with expiring domains and alerts
  • GET /api/account/{user_id}/domains — paginated domain list with expiry data
  • POST /api/account/{user_id}/domains — add a new domain to monitoring

The POST payload for adding a domain requires these fields:

json
{  "domain": "example.com",  "alert_period": 30,  "certificate_checks_enabled": true,  "dns_checks_enabled": true,  "blacklist_checks_enabled": false}

The API rate limit is 200 requests per session (observed from x-ratelimit-limit response headers).


Contributing

PRs welcome! Some ideas for future improvements:

  • Support for uptime monitor queries
  • Webhook/notification preference management
  • Support for the domain availability checker
  • Delete domain from monitoring (intentionally omitted — destructive actions should go through the web UI)

If you're the domain-monitor.io developer and want to add official API token support, this project would love to adopt it — just open an issue!


Troubleshooting

See OPS.md for detailed troubleshooting, reinstallation steps, and architecture notes.


Disclaimer

This project is not affiliated with, endorsed by, or officially supported by domain-monitor.io. It was built by reverse-engineering the browser network traffic. Use at your own risk. The API may change without notice.

License

MIT - Jason C Braatz

Source: README.md at commit 1da8fcc

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.