@sentinelsup/mcp 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/index.js +9 -6
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@ Neither mode performs a browser visit. VPN/proxy and device evidence require a b
|
|
|
18
18
|
### Claude Code
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
claude mcp add sentinel -e
|
|
21
|
+
claude mcp add sentinel -e MASKBREAK_API_KEY=sk_live_your_key -- npx -y @sentinelsup/mcp
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
### Claude Desktop
|
|
@@ -31,7 +31,7 @@ Add to `claude_desktop_config.json`:
|
|
|
31
31
|
"sentinel": {
|
|
32
32
|
"command": "npx",
|
|
33
33
|
"args": ["-y", "@sentinelsup/mcp"],
|
|
34
|
-
"env": { "
|
|
34
|
+
"env": { "MASKBREAK_API_KEY": "sk_live_your_key" }
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -39,7 +39,7 @@ Add to `claude_desktop_config.json`:
|
|
|
39
39
|
|
|
40
40
|
### Cursor / other MCP clients
|
|
41
41
|
|
|
42
|
-
Any client that speaks stdio MCP works the same way: command `npx`, args `["-y", "@sentinelsup/mcp"]`, env `
|
|
42
|
+
Any client that speaks stdio MCP works the same way: command `npx`, args `["-y", "@sentinelsup/mcp"]`, env `MASKBREAK_API_KEY`.
|
|
43
43
|
|
|
44
44
|
### Hosted endpoint (no install)
|
|
45
45
|
|
|
@@ -66,7 +66,7 @@ Illustrative unknown-IP response, not a live lookup:
|
|
|
66
66
|
|
|
67
67
|
| Variable | Required | Default | Purpose |
|
|
68
68
|
|----------|----------|---------|---------|
|
|
69
|
-
| `
|
|
69
|
+
| `MASKBREAK_API_KEY` | recommended | — | API key from your [dashboard](https://maskbreak.com/dashboard); unlocks 1,000 lookups/hour. Since v0.1.5; the older `SENTINEL_API_KEY` name is still read |
|
|
70
70
|
| `SENTINEL_BASE_URL` | no | `https://maskbreak.com` | Override for testing |
|
|
71
71
|
|
|
72
72
|
## Failures and local checks
|
package/index.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
// Maskbreak MCP server — IP fraud intelligence for MCP clients (Claude Code,
|
|
3
3
|
// Claude Desktop, Cursor, ...). One stdio server, two tools.
|
|
4
4
|
//
|
|
5
|
-
// With
|
|
6
|
-
// (GET /v1/lookup/{ip}, 1,000 req/hr on the
|
|
7
|
-
// fall back to the free web-tool endpoint,
|
|
8
|
-
// but rate-limited to a handful of lookups
|
|
5
|
+
// With MASKBREAK_API_KEY set (the older SENTINEL_API_KEY still works), lookups
|
|
6
|
+
// go through the authenticated API (GET /v1/lookup/{ip}, 1,000 req/hr on the
|
|
7
|
+
// free tier). Without a key they fall back to the free web-tool endpoint,
|
|
8
|
+
// which is fine for trying it out but rate-limited to a handful of lookups
|
|
9
|
+
// per minute.
|
|
9
10
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
10
11
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
11
12
|
import { z } from 'zod';
|
|
@@ -18,7 +19,9 @@ const { version: VERSION } = JSON.parse(
|
|
|
18
19
|
);
|
|
19
20
|
|
|
20
21
|
const BASE = (process.env.SENTINEL_BASE_URL || 'https://maskbreak.com').replace(/\/+$/, '');
|
|
21
|
-
|
|
22
|
+
// MASKBREAK_API_KEY is the name every doc surface uses; SENTINEL_API_KEY is
|
|
23
|
+
// the older name, still read so existing client configs keep working.
|
|
24
|
+
const API_KEY = process.env.MASKBREAK_API_KEY || process.env.SENTINEL_API_KEY || '';
|
|
22
25
|
const TIMEOUT_MS = 5000;
|
|
23
26
|
|
|
24
27
|
async function requestJson(path, init = {}, keylessLookup = false) {
|
|
@@ -39,7 +42,7 @@ async function requestJson(path, init = {}, keylessLookup = false) {
|
|
|
39
42
|
}
|
|
40
43
|
if (!res.ok) {
|
|
41
44
|
const hint = keylessLookup && res.status === 429
|
|
42
|
-
? ' (keyless mode is tightly rate-limited — set
|
|
45
|
+
? ' (keyless mode is tightly rate-limited — set MASKBREAK_API_KEY for 1,000 lookups/hour; free key at https://maskbreak.com/signup)'
|
|
43
46
|
: '';
|
|
44
47
|
throw new Error(`${data?.error || `HTTP ${res.status}`}${hint}`);
|
|
45
48
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentinelsup/mcp",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"mcpName": "
|
|
3
|
+
"version": "0.1.6",
|
|
4
|
+
"mcpName": "com.maskbreak/mcp",
|
|
5
5
|
"description": "MCP server for Maskbreak — look up public cloud-hosting and Tor IP signals, with limited reputation evidence and API status, from an MCP client.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"mcp",
|