{
  "markdown": "# Outlook SNDS MCP\n\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![Built with MCPB](https://img.shields.io/badge/built%20with-MCPB-7C3AED.svg)](https://github.com/anthropics/mcpb)\n[![Node](https://img.shields.io/badge/node-%3E%3D18-339933.svg)](https://nodejs.org)\n[![Dependencies](https://img.shields.io/badge/runtime%20deps-0-success.svg)](#why-zero-dependencies)\n\nAn [MCP](https://modelcontextprotocol.io) server that brings the **Outlook.com\nSmart Network Data Services (SNDS)** REST API into Claude / Cowork / Claude\nDesktop and any other MCP client.\n\nSign in once with your Microsoft account — the server handles the full OAuth 2.0\nauthorization-code + PKCE flow over a loopback (`http://localhost`) redirect,\ncaches the tokens, and refreshes them automatically. Then just ask for your IP\nreputation data.\n\n> SNDS gives senders per-IP insight into how Outlook.com sees their mail:\n> volume, complaint rates, spam-filter verdicts, trap hits, and block/bot status.\n\nBuilt & maintained by the **[Postmaster+](https://postmasterplus.com)** team at **[OptiPub](https://optipub.com)**.\n\n## Install\n\n**From a release (recommended)**\n\n1. Download `outlook-snds.mcpb` from the [latest release](../../releases/latest).\n2. In Cowork / Claude Desktop: **Settings → Capabilities → install extension**, pick the file (or just double-click it).\n3. No configuration required.\n\n**From source** — see [Build](#build).\n\n## Use with other MCP clients (Cursor, VS Code, Windsurf, …)\n\nThe `.mcpb` is just a packaging convenience for Claude Desktop / Cowork.\nUnderneath, this is a standard **stdio MCP server**, so any client that runs\nlocal MCP servers can use it directly — no `.mcpb` required. Just point the\nclient at `server/index.js`.\n\nClone or download the repo first, then add a server entry:\n\n**Cursor** — edit `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (per project):\n\n```json\n{\n  \"mcpServers\": {\n    \"outlook-snds\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/outlook-snds-mcp/server/index.js\"]\n    }\n  }\n}\n```\n\n**VS Code** (`.vscode/mcp.json`), **Windsurf**, **Claude Desktop** (manual\nconfig), and most other clients use the same `command` + `args` shape — only the\nconfig file location differs. Optional environment overrides (see\n[Configuration](#configuration-optional)) go in an `\"env\": { ... }` object.\n\nThe first tool call opens your browser for the SNDS sign-in, exactly as in\nCowork — the localhost OAuth loopback works on any local desktop client.\n\n> **Remote-only clients (e.g. Perplexity, ChatGPT connectors):** these accept\n> only a remote HTTPS MCP server URL, not a local command, so this stdio build\n> can't be added directly. Using it there would require hosting it as a remote\n> server with a web-based OAuth redirect.\n\n## Usage\n\nRun `snds_authenticate` once (your browser opens for a Microsoft sign-in), then:\n\n| Ask | Tool |\n| --- | --- |\n| \"Sign me in to SNDS\" | `snds_authenticate` |\n| \"Am I signed in to SNDS?\" | `snds_auth_status` |\n| \"Show my latest SNDS data report\" | `get_data_report` |\n| \"SNDS data for 2026-12-31\" | `get_data_report { date: \"2026-12-31\" }` |\n| \"SNDS data for 1.2.3.4 on 2026-12-31\" | `get_data_report { date: \"2026-12-31\", ip: \"1.2.3.4\" }` |\n| \"Any blocked/bot/junked IPs?\" | `get_ip_status` |\n| \"Sign me out of SNDS\" | `snds_sign_out` |\n\n`get_data_report` takes an optional `date` (`yyyy-MM-dd`) and an optional `ip`\n(IPv4). A date is required to filter by IP, because the API path is\n`/api/report/data/{date}/{ip}`.\n\n## How authentication works\n\n| Field | Value |\n| --- | --- |\n| Authorize | `https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize` |\n| Token | `https://login.microsoftonline.com/consumers/oauth2/v2.0/token` |\n| Client ID | `a53a6cc1-a1cd-46f7-a4aa-281cdabec33c` (the SNDS portal's **public** client) |\n| Scope | `a53a6cc1-a1cd-46f7-a4aa-281cdabec33c/.default offline_access openid profile` |\n| Redirect | `http://localhost:<dynamic-port>` (loopback) |\n\nOn sign-in the server starts a short-lived HTTP listener on `127.0.0.1`, opens\nyour browser to the Microsoft login, receives the authorization code on the\nloopback URL, and exchanges it (with the PKCE code verifier) for tokens.\n\n**No secrets ship in this repo.** It's a public OAuth client using PKCE — there\nis no client secret. Tokens are stored only on your machine at\n`~/.snds-mcp/tokens.json` with `0600` permissions, and are git-ignored.\n\n## REST endpoints wrapped\n\nBase URL: `https://substrate.office.com/ip-domain-management-snds`\n\n- `GET /api/report/data/{date?}/{ip?}` — IP Data report\n- `GET /api/report/status/ip` — IP Status report\n\n## Configuration (optional)\n\nEverything defaults to the SNDS portal values. Override via environment\nvariables if you need to:\n\n| Variable | Default |\n| --- | --- |\n| `SNDS_CLIENT_ID` | `a53a6cc1-a1cd-46f7-a4aa-281cdabec33c` |\n| `SNDS_AUTHORITY` | `https://login.microsoftonline.com/consumers` |\n| `SNDS_SCOPE` | `<client-id>/.default offline_access openid profile` |\n| `SNDS_API_BASE` | `https://substrate.office.com/ip-domain-management-snds` |\n| `SNDS_TOKEN_DIR` | `~/.snds-mcp` |\n| `SNDS_LOGIN_TIMEOUT_MS` | `180000` |\n| `SNDS_REQUEST_TIMEOUT_MS` | `60000` |\n\n## Build\n\nRequires Node 18+.\n\n```bash\nnpx @anthropic-ai/mcpb validate manifest.json\nnpx @anthropic-ai/mcpb pack . outlook-snds.mcpb\n```\n\nPushing a tag like `v1.0.0` triggers CI to validate, pack, and attach the\n`.mcpb` to a GitHub Release automatically (see\n[`.github/workflows/release.yml`](.github/workflows/release.yml)).\n\n## Why zero dependencies\n\nThe runtime uses only Node.js built-ins (`http`, `https`, `crypto`,\n`readline`). That keeps the bundle tiny (~11 KB), removes supply-chain risk, and\nmeans there's nothing to `npm install` at runtime.\n\n## Contributing\n\nPRs and issues welcome — see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\n[MIT](LICENSE) © OptiPub\n\n---\n\n*Not affiliated with or endorsed by Microsoft. \"Outlook\", \"Outlook.com\", and\n\"SNDS\" are trademarks of Microsoft Corporation.*\n",
  "bytes": 6001,
  "sha": "2d3540b9a882b3ee16ea028b4e53bc9f30c14af5327feec0db86d601c23d4ea6",
  "repo_slug": "optipub/outlook-snds-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_optipub_outlook_snds_e32e8078/readme"
}