stealthmole-mcp 1.0.0
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 +89 -0
- package/bin/cli.mjs +20 -0
- package/package.json +23 -0
package/README.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# StealthMole MCP
|
|
2
|
+
|
|
3
|
+
Connect [Claude Desktop](https://claude.ai/download), [Cursor](https://cursor.sh), [Windsurf](https://codeium.com/windsurf), and other MCP clients to the [StealthMole](https://www.stealthmole.com) Threat Intelligence API.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"mcpServers": {
|
|
10
|
+
"stealthmole": {
|
|
11
|
+
"command": "npx",
|
|
12
|
+
"args": ["-y", "stealthmole-mcp"]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Add this to your MCP client configuration file:
|
|
19
|
+
|
|
20
|
+
| Client | Config File |
|
|
21
|
+
|--------|-------------|
|
|
22
|
+
| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
23
|
+
| Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
|
|
24
|
+
| Cursor | `.cursor/mcp.json` in your project root |
|
|
25
|
+
| Windsurf | `~/.codeium/windsurf/mcp_config.json` |
|
|
26
|
+
|
|
27
|
+
## How It Works
|
|
28
|
+
|
|
29
|
+
1. Run `npx stealthmole-mcp` (or your MCP client starts it automatically)
|
|
30
|
+
2. A browser window opens for Keycloak authentication
|
|
31
|
+
3. After login, the OAuth token is cached in `~/.mcp-auth/`
|
|
32
|
+
4. The stdio-to-HTTP bridge connects your MCP client to the remote server
|
|
33
|
+
|
|
34
|
+
## Requirements
|
|
35
|
+
|
|
36
|
+
- **Node.js 18+**
|
|
37
|
+
- A StealthMole account with API access
|
|
38
|
+
|
|
39
|
+
## Available Tools
|
|
40
|
+
|
|
41
|
+
Once connected, your MCP client will have access to:
|
|
42
|
+
|
|
43
|
+
- **Dark Web Tracker** - Search dark web content by various indicators
|
|
44
|
+
- **Telegram Tracker** - Search Telegram content for threat intelligence
|
|
45
|
+
- **Credential Lookout** - Search for leaked credentials
|
|
46
|
+
- **Compromised Dataset** - Search compromised data from breaches
|
|
47
|
+
- **Combo Binder** - Search leaked ID/Password combinations
|
|
48
|
+
- **ULP Binder** - Search URL-Login-Password combinations
|
|
49
|
+
- **Ransomware Monitoring** - Track ransomware activities
|
|
50
|
+
- **Government Monitoring** - Monitor government sector threats
|
|
51
|
+
- **Leaked Monitoring** - Monitor enterprise data leaks
|
|
52
|
+
|
|
53
|
+
## CLI Options
|
|
54
|
+
|
|
55
|
+
All `mcp-remote` flags are passed through:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
npx stealthmole-mcp --debug # Enable debug logging
|
|
59
|
+
npx stealthmole-mcp --port 3335 # Use custom callback port
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Advanced Usage
|
|
63
|
+
|
|
64
|
+
You can also use `mcp-remote` directly:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx mcp-remote https://mcp.stealthmole.com/mcp \
|
|
68
|
+
--static-oauth-client-info '{"client_id":"stealthmole_mcp_client","token_endpoint_auth_method":"none","redirect_uris":["http://127.0.0.1"]}'
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Troubleshooting
|
|
72
|
+
|
|
73
|
+
### Reset authentication
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
rm -rf ~/.mcp-auth/
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Then restart your MCP client to re-authenticate.
|
|
80
|
+
|
|
81
|
+
### Connection issues
|
|
82
|
+
|
|
83
|
+
1. Ensure Node.js 18+ is installed: `node --version`
|
|
84
|
+
2. Try with debug logging: `npx stealthmole-mcp --debug`
|
|
85
|
+
3. Check that your StealthMole account has API access
|
|
86
|
+
|
|
87
|
+
## License
|
|
88
|
+
|
|
89
|
+
MIT
|
package/bin/cli.mjs
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const SERVER_URL = "https://mcp.stealthmole.com/mcp";
|
|
4
|
+
const CLIENT_INFO = JSON.stringify({
|
|
5
|
+
client_id: "stealthmole_mcp_client",
|
|
6
|
+
token_endpoint_auth_method: "none",
|
|
7
|
+
redirect_uris: ["http://127.0.0.1"],
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
// 서버 URL을 argv 첫 번째 인자로 주입
|
|
11
|
+
// mcp-remote의 proxy.js는 argv[2]를 서버 URL로 파싱
|
|
12
|
+
process.argv.splice(2, 0, SERVER_URL);
|
|
13
|
+
|
|
14
|
+
// 사용자가 직접 --static-oauth-client-info를 지정하지 않은 경우에만 주입
|
|
15
|
+
if (!process.argv.includes("--static-oauth-client-info")) {
|
|
16
|
+
process.argv.push("--static-oauth-client-info", CLIENT_INFO);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// mcp-remote 프록시 실행
|
|
20
|
+
await import("mcp-remote/dist/proxy.js");
|
package/package.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "stealthmole-mcp",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "StealthMole Threat Intelligence MCP client - connect Claude Desktop, Cursor, and other MCP clients to StealthMole API",
|
|
5
|
+
"bin": {
|
|
6
|
+
"stealthmole-mcp": "./bin/cli.mjs"
|
|
7
|
+
},
|
|
8
|
+
"type": "module",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"mcp-remote": "~0.1.38"
|
|
12
|
+
},
|
|
13
|
+
"engines": {
|
|
14
|
+
"node": ">=18.0.0"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"mcp",
|
|
18
|
+
"stealthmole",
|
|
19
|
+
"threat-intelligence",
|
|
20
|
+
"cybersecurity",
|
|
21
|
+
"model-context-protocol"
|
|
22
|
+
]
|
|
23
|
+
}
|