shodan-mcp
by radeksh
README.md
# shodan-mcp
Serwer MCP udostepniajacy API Shodan.IO, oparty o [FastMCP](https://gofastmcp.com)
i oficjalna biblioteke [shodan-python](https://shodan.readthedocs.io).
## Wymagania
- Python 3.13+
- [uv](https://docs.astral.sh/uv/)
- Klucz API Shodan
## Instalacja
```bash
uv sync
```
## Konfiguracja klucza API
Klucz pobierany jest wylacznie ze zmiennej srodowiskowej `SHODAN_API_KEY`.
Nie zapisuj klucza w repozytorium. Do lokalnych testow skopiuj `.env.example` do `.env`.
## Uruchomienie
Transport: stdio (domyslny dla lokalnego Claude Code / Claude Desktop).
```bash
SHODAN_API_KEY=... uv run server.py
```
## Konfiguracja klienta MCP
Przyklad wpisu (`.mcp.json` lub `claude mcp add`):
```json
{
"mcpServers": {
"shodan": {
"command": "uv",
"args": ["run", "--directory", "/home/ra/secra/shodan-mcp", "server.py"]
}
}
}
```
## Tool: `search`
Generalne wyszukiwanie przez API Shodan. Laczy wolny tekst (`query`) z opcjonalnymi
filtrami-dorkami, ktore tool sklada w finalne zapytanie Shodan.
Obslugiwane filtry: `org`, `hostname`, `net`, `ip`, `port`, `country`, `city`,
`product`, `version`, `os`, `asn`, `isp`, `title` (http.title), `http_status`
(http.status), `ssl`, `vuln`, `tag`, `after`, `before`, `has_screenshot`.
Dodatkowe parametry: `page` (strona wynikow), `facets` (agregacje, np. `port:10,org:5`),
`raw` (gdy `true`, zwraca pelny surowy JSON zamiast przycietego zestawu pol).
Przyklad: `query="nginx"`, `country="PL"`, `port=443` -> zapytanie `nginx country:PL port:443`.
## Tool: `host`
Lookup po adresie IP. Zwraca szczegoly hosta (org, isp, asn, lokalizacja, porty,
tagi, podatnosci) oraz liste wykrytych uslug.
Parametry: `ip` (wymagany), `history` (pelna historia banerow), `minify` (okrojony
zestaw pol), `raw` (pelny surowy JSON zamiast przycietego).
## Roadmap
Kolejne toole: `count` (sam licznik), `search_cursor` (paginacja kursorowa),
`scan` / `alerts`.
TDQS
A3.9/5.0
Scored across 2 tools
Disambiguation5/5
The 'host' and 'search' tools have clearly distinct purposes: one retrieves details for a specific IP, the other performs general queries with filters. No overlap.
Naming Consistency5/5
Both tool names are single lowercase verbs ('host', 'search') following a consistent simple pattern. No mixing of styles.
Tool Count3/5
With only 2 tools, the set feels thin for a comprehensive Shodan interface. While it covers basic operations, more tools (e.g., count, DNS) would improve scope.
Completeness3/5
The tools cover core Shodan functionality (IP lookup and search), but missing common operations like count or streaming. A minor gap for a minimal server.
Maintenance
ActivityInactive
ResponsivenessNo issues