{
  "markdown": "# domain-monitor-mcp\n\nAn unofficial MCP (Model Context Protocol) server for [domain-monitor.io](https://domain-monitor.io), enabling AI assistants like Claude to query your domain expiration data directly — no browser required.\n\n> **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!\n\n---\n\n## What it does\n\nOnce installed, you can ask Claude things like:\n\n- *\"Any domains expiring in the next 30 days?\"*\n- *\"When does braatz.io expire?\"*\n- *\"Give me a domain health overview\"*\n- *\"List all my domains sorted by expiry date\"*\n- *\"Add newdomain.com to domain monitor with a 60-day alert\"*\n\nNo more digging through emails that landed in spam or SMS alerts that got filtered. Just ask.\n\n---\n\n## Tools provided\n\n| Tool | Description |\n|------|-------------|\n| `domain_monitor_get_expiring_soon` | Quick check — domains expiring within your alert window |\n| `domain_monitor_list_domains` | Full paginated list with optional filter by days-until-expiry |\n| `domain_monitor_check_domain` | Look up a specific domain by name |\n| `domain_monitor_get_account_summary` | Account stats, subscription status, and active alerts |\n| `domain_monitor_add_domain` | Add a new domain to monitoring with configurable alert period and monitoring toggles |\n\n---\n\n## Installation\n\n### Prerequisites\n\n- Python 3.10+\n- A [domain-monitor.io](https://domain-monitor.io) account (free or paid)\n- Claude Desktop (or any MCP-compatible client)\n\n### 1. Clone this repo\n\n```bash\ngit clone https://github.com/jasoncbraatz/domain-monitor-mcp.git\ncd domain-monitor-mcp\n```\n\n### 2. Install dependencies\n\n```bash\npip install -r requirements.txt\n```\n\nOr with uv (faster):\n\n```bash\nuv pip install -r requirements.txt\n```\n\n### 3. Configure Claude Desktop\n\nAdd the following to your Claude Desktop config file:\n\n**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n**Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"domain-monitor\": {\n      \"command\": \"python\",\n      \"args\": [\"/absolute/path/to/domain-monitor-mcp/server.py\"],\n      \"env\": {\n        \"DOMAIN_MONITOR_EMAIL\": \"your@email.com\",\n        \"DOMAIN_MONITOR_PASSWORD\": \"yourpassword\"\n      }\n    }\n  }\n}\n```\n\n> Replace `/absolute/path/to/domain-monitor-mcp/server.py` with the actual path where you cloned this repo.\n\n### 4. Restart Claude Desktop\n\nAfter saving the config, fully quit and relaunch Claude Desktop. The `domain-monitor` tools will appear in Claude's tool list.\n\n---\n\n## Authentication\n\nThis 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.\n\n**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.\n\n---\n\n## How it works (for the curious / developers)\n\ndomain-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:\n\n1. `GET https://api.domain-monitor.io/sanctum/csrf-cookie` → sets `XSRF-TOKEN` + `domain_monitor_session` cookies\n2. `POST https://api.domain-monitor.io/login` with `{email, password}` + `X-XSRF-TOKEN` header → authenticates\n3. Subsequent requests to `https://api.domain-monitor.io/api/*` use the session cookies + refreshed XSRF token\n\nKey endpoints used:\n- `GET /api/account` — account info + user ID\n- `GET /api/account-dashboard` — summary with expiring domains and alerts\n- `GET /api/account/{user_id}/domains` — paginated domain list with expiry data\n- `POST /api/account/{user_id}/domains` — add a new domain to monitoring\n\nThe POST payload for adding a domain requires these fields:\n```json\n{\n  \"domain\": \"example.com\",\n  \"alert_period\": 30,\n  \"certificate_checks_enabled\": true,\n  \"dns_checks_enabled\": true,\n  \"blacklist_checks_enabled\": false\n}\n```\n\nThe API rate limit is 200 requests per session (observed from `x-ratelimit-limit` response headers).\n\n---\n\n## Contributing\n\nPRs welcome! Some ideas for future improvements:\n\n- Support for uptime monitor queries\n- Webhook/notification preference management\n- Support for the domain availability checker\n- Delete domain from monitoring (intentionally omitted — destructive actions should go through the web UI)\n\nIf 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!\n\n---\n\n## Troubleshooting\n\nSee [OPS.md](OPS.md) for detailed troubleshooting, reinstallation steps, and architecture notes.\n\n---\n\n## Disclaimer\n\nThis 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.\n\n## License\n\nMIT - Jason C Braatz\n",
  "bytes": 5214,
  "sha": "467c018db6e9f05b408224242c250c72dec37d5f1c78178bbe2e9b3a42d1d11e",
  "repo_slug": "jasoncbraatz/domain-monitor-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_jasoncbraatz_domain_monitor_mc_5f87be45/readme"
}