Skip to main content
Glama
X3r0K

Shodan MCP Server

by X3r0K
README.md
# shodan-mcp-server

This is a Model Context Protocol (MCP) server that provides access to the Shodan API. It allows you to programmatically query Shodan for information about devices, vulnerabilities, and more.

## Table of Contents

- [Introduction](#introduction)
- [Installation](#installation)
- [Configuration](#configuration)
- [Usage with Node.js](#usage-with-nodejs)
- [API Documentation](#api-documentation)
  - [get_ip_info](#get_ip_info)
  - [dns_lookup](#dns_lookup)
  - [get_vulnerabilities](#get_vulnerabilities)
  - [cve_info](#cve_info)
  - [search](#search)
- [Project Structure](#project-structure)
- [Contributing](#contributing)
- [License](#license)

## Introduction

The `shodan-mcp-server` provides a simple way to integrate Shodan intelligence into your applications using the Model Context Protocol (MCP). It exposes several tools that allow you to query Shodan for various types of information.

## Features

Host Information: Get detailed information about an IP address
Search: Query Shodan's database using their search syntax
DNS Lookup: Resolve domain names
CVE Information: Get details about specific CVE vulnerabilities

## Installation

1.  Clone the repository:

    ```bash
    git clone https://github.com/X3r0K/Shodan-MCP-Server.git
    cd shodan-mcp-server
    ```

2.  Install the dependencies:

    ```bash
    npm install
    ```

3.  Build the project:

    ```bash
    npm run build
    ```

## Configuration

1.  Obtain a Shodan API key from [Shodan](https://account.shodan.io/).
2.  Configure the MCP server in your MCP settings file (e.g., `~/.config/mcp/settings.json`):

    ```json
    {
      "mcpServers": {
        "shodan": {
          "command": "node",
          "args": ["/path/to/shodan-mcp-server/build/index.js"],
          "env": {
            "SHODAN_API_KEY": "<your_shodan_api_key>"
          },
          "disabled": false,
          "autoApprove": []
        }
      }
    }
    ```

    Replace `<your_shodan_api_key>` with your actual Shodan API key and `/path/to/shodan-mcp-server` with the actual path to the shodan-mcp-server directory.

## Usage with Node.js

You can use the MCP server with Node.js using the `@modelcontextprotocol/sdk` package.

1.  Install the MCP SDK:

    ```bash
    npm install @modelcontextprotocol/sdk
    ```

2.  Use the `use_mcp_tool` function to call the tools:

    ```javascript
    import { use_mcp_tool } from '@modelcontextprotocol/sdk';

    async function getIpInfo(ip) {
      const result = await use_mcp_tool('shodan', 'get_ip_info', { ip });
      console.log(result);
    }

    getIpInfo('8.8.8.8');
    ```

## API Documentation

### get\_ip\_info

Get information about a specific IP address.

**Input:**

```json
{
  "ip": "string" // The IP address to query
}
```

**Output:**

A JSON object containing information about the IP address.

### dns\_lookup

Perform DNS lookups for a given domain.

**Input:**

```json
{
  "hostname": "string" // The hostname to resolve
}
```

**Output:**

A JSON object containing the resolved IP address.

### get\_vulnerabilities

Track vulnerabilities associated with a specific IP address.

**Input:**

```json
{
  "ip": "string" // The IP address to query for vulnerabilities
}
```

**Output:**

A JSON object containing a list of vulnerabilities associated with the IP address.

### cve\_info

Retrieve information about a specific CVE ID.

**Input:**

```json
{
  "cve": "string" // The CVE ID to query
}
```

**Output:**

A JSON object containing information about the CVE ID.

### search

Search Shodan for devices matching a query.

**Input:**

```json
{
  "query": "string" // The search query
}
```

**Output:**

A JSON object containing a list of devices matching the query.

## Project Structure

```
shodan-mcp-server/
├── .gitignore
├── package.json
├── README.md
├── tsconfig.json
└── src/
    ├── index.ts
    └── index.mts
```

## License

MIT