io.github.nickjlucker/greynoise
MCP server for GreyNoise API - Check if IPs are internet background noise or targeted attacks
Open source Open in the app JSON README (API)
About
MCP server for GreyNoise API - Check if IPs are internet background noise or targeted attacks
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- nickjlucker
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 0.1.0
- Last push
- 2026-02-26T06:48:56Z
- Repository state
- ativo
- Language
- JavaScript
- License
- MIT
- Added
- 2026-08-29 04:00:54
- Updated
- 2026-08-29 04:00:54
- Origin id
io.github.nickjlucker/greynoise
README
# mcp-greynoise
[](https://www.npmjs.com/package/mcp-greynoise)
[](https://opensource.org/licenses/MIT)
MCP server for the [GreyNoise](https://greynoise.io) API — check if IP addresses are internet background noise or potentially targeted attacks.
## Quick Start
```bash
npx mcp-greynoise
```
That's it. Works out of the box with 10 lookups/day (no API key needed).
## What is GreyNoise?
GreyNoise collects and analyzes internet-wide scan traffic. It tells you:
- **Noise**: Is this IP mass-scanning the internet? (botnets, researchers, crawlers)
- **RIOT**: Is this IP a known benign service? (Google, Cloudflare, Microsoft, etc.)
- **Classification**: Malicious, benign, or unknown
### Why this matters for security
When you see suspicious traffic in your logs:
| GreyNoise Result | Interpretation |
|------------------|----------------|
| **NOISE + Malicious** | Background attack traffic (scanners, botnets) — likely untargeted |
| **NOISE + Benign** | Security researchers, search crawlers — usually safe |
| **RIOT** | Known good service (CDN, DNS, cloud) — almost certainly benign |
| **NOT NOISE** | ⚠️ This IP is NOT mass-scanning — traffic may be **targeted at you** |
The "NOT NOISE" case is often the most important — it suggests someone is specifically interested in your systems.
## Demo
<!-- TODO: Add GIF of Claude Desktop calling check_ip -->
**Example output from `check_ip`:**
```
IP: 51.91.185.74
Classification: MALICIOUS
Noise: YES - This IP has been observed scanning the internet
RIOT: NO - Not a known benign service IP
Last Seen: 2024-01-15
Details: https://viz.greynoise.io/ip/51.91.185.74
--- Interpretation ---
🚨 This IP is actively scanning the internet and classified as MALICIOUS.
Likely a scanner, botnet, or threat actor.
```
## Installation
### npm (recommended)
```bash
npm install -g mcp-greynoise
```
### npx (no install)
```bash
npx mcp-greynoise
```
### From source
```bash
git clone https://github.com/nickjlucker/mcp-greynoise.git
cd mcp-greynoise
npm install
npm run build
node build/index.js
```
## Configuration
### Claude Desktop
Add to your `claude_desktop_config.json`:
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"greynoise": {
"command": "npx",
"args": ["mcp-greynoise"],
"env": {
"GREYNOISE_API_KEY": "your-api-key-here"
}
}
}
}
```
### Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `GREYNOISE_API_KEY` | No | API key for higher rate limits (50/day vs 10/day) |
Get a free API key at [viz.greynoise.io/signup](https://viz.greynoise.io/signup).
> ⚠️ **Never commit API keys.** See `.env.example` for the recommended setup.
## Tools
### `check_ip`
Check a single IP address against GreyNoise.
**Input:**
- `ip` (string): IPv4 address to check
### `check_ips`
Check multiple IP addresses in one call (max 10).
**Input:**
- `ips` (string[]): Array of IPv4 addresses
**Example output:**
```
=== Results ===
8.8.8.8: RIOT (benign service) [Google]
51.91.185.74: NOISE - MALICIOUS
192.168.1.1: NOT NOISE (potentially targeted)
--- Legend ---
RIOT: Known benign service (CDN, DNS, etc.)
NOISE: IP is mass-scanning the internet
NOT NOISE: IP is NOT mass-scanning (traffic may be targeted)
```
## Resources
### `greynoise://status`
Returns API status and rate limit information.
## Rate Limits
| Tier | Daily Lookups |
|------|---------------|
| Unauthenticated | 10 |
| Free account | 50 |
| Paid plans | Higher |
Rate limits are shared between API calls and the [GreyNoise Visualizer](https://viz.greynoise.io).
## Security
This server:
- **Only reads** from the GreyNoise API (no scanning, no exploitation)
- **Does not store** any data beyond the current request
- **Does not transmit** your API key anywhere except to GreyNoise
- Performs **reputation/telemetry enrichment only**
Your API key is passed via environment variable and never logged.
## Use Cases
- **SOC Triage**: Quickly determine if alert IPs are background noise or targeted
- **Incident Response**: Identify if attacker IPs are mass-scanners or focused threats
- **Threat Hunting**: Find IPs in your logs that aren't mass-scanners (potentially targeted)
- **Log Analysis**: Reduce false positives by filtering out known scanners
## Development
```bash
# Install dependencies
npm install
# Run in development mode
npm run dev
# Build for production
npm run build
# Run built version
npm start
```
## License
MIT
## Links
- [GreyNoise](https://greynoise.io)
- [GreyNoise API Docs](https://docs.greynoise.io)
- [Model Context Protocol](https://modelcontextprotocol.io)
- [MCP Registry](https://registry.modelcontextprotocol.io)