README.md•11.3 kB
# ExploitDB MCP Server
A Model Context Protocol server that provides access to ExploitDB functionality, developed by [Cyreslab.ai](https://cyreslab.ai). This server enables AI assistants like Claude to query information about security exploits and vulnerabilities, enhancing cybersecurity research and threat intelligence capabilities.
**GitHub Repository**: [https://github.com/Cyreslab-AI/exploitdb-mcp-server](https://github.com/Cyreslab-AI/exploitdb-mcp-server)
**Contact**: [contact@cyreslab.ai](mailto:contact@cyreslab.ai)
## Features
- **Exploit Search**: Search for exploits by keywords, CVE IDs, platforms, and more
- **Exploit Details**: Get comprehensive information about specific exploits, including code
- **CVE Lookup**: Find all exploits related to specific CVE IDs
- **Recent Exploits**: Track newly added exploits
- **Statistics**: Get insights into exploit distribution by platform, type, and year
- **Automatic Updates**: Keep the database up-to-date with scheduled updates
## Installation
### Prerequisites
- Node.js (v16 or higher)
- npm (v7 or higher)
### Installation Steps
1. Clone the repository:
```bash
git clone https://github.com/Cyreslab-AI/exploitdb-mcp-server.git
cd exploitdb-mcp-server
```
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
4. Configure the server:
- Create a `.env` file in the root directory based on `.env.example`
- Adjust settings as needed (data directory, update frequency, etc.)
5. Initialize the database:
```bash
npm run update-db
```
**Note**: The initial database update may take several minutes as it processes ~47,000 exploits from the ExploitDB CSV file. The script handles missing or malformed data gracefully by using fallback values for required fields.
6. Run the server:
```bash
node build/index.js
```
### MCP Configuration
To use this server with Claude or other MCP-compatible assistants, add it to your MCP configuration:
```json
{
"mcpServers": {
"mcp-exploitdb-server": {
"command": "node",
"args": ["/path/to/exploitdb-mcp-server/build/index.js"]
}
}
}
```
## Available Tools
The ExploitDB MCP server provides 18 comprehensive tools for querying and analyzing exploit data:
### Core Search Tools
1. **search_exploits** - General search with multiple filters
2. **get_exploit** - Get detailed information about a specific exploit
3. **find_by_cve** - Find exploits by CVE ID
4. **get_recent_exploits** - Get recently added exploits
5. **get_statistics** - Get database statistics
### Advanced Search Tools
6. **search_by_platform** - Search exploits for a specific platform with filters
7. **search_by_type** - Search by exploit type (webapps, remote, local, dos, hardware)
8. **search_by_author** - Find all exploits by a specific author
9. **search_by_date_range** - Find exploits within a date range
10. **search_by_tags** - Search by generated tags (sql injection, xss, etc.)
### Analysis & Intelligence Tools
11. **get_platform_statistics** - Get detailed statistics for a specific platform
12. **get_trending_exploits** - Find recently added exploits (configurable time period)
13. **compare_exploits** - Compare multiple exploits side-by-side
14. **get_exploit_timeline** - Get chronological timeline of exploits
### Utility Tools
15. **batch_get_exploits** - Retrieve multiple exploits efficiently (up to 50)
16. **get_related_exploits** - Find related exploits by platform, author, CVE, or tags
17. **validate_exploit_id** - Check if an exploit ID exists
18. **export_search_results** - Export search results in JSON or CSV format
## Usage Examples
### Search Exploits
Use the `search_exploits` tool to search for exploits in the database:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_exploits</tool_name>
<arguments>
{
"query": "wordpress plugin",
"platform": "php",
"limit": 5
}
</arguments>
</use_mcp_tool>
```
Additional search parameters:
- `type`: Filter by exploit type (e.g., webapps, remote, local)
- `cve`: Filter by CVE ID
- `author`: Filter by author name
- `start_date`/`end_date`: Filter by date range (YYYY-MM-DD)
- `verified`: Filter by verified status (true/false)
- `offset`: For pagination
### Get Exploit Details
Use the `get_exploit` tool to retrieve detailed information about a specific exploit:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_exploit</tool_name>
<arguments>
{
"id": 12345,
"include_code": true
}
</arguments>
</use_mcp_tool>
```
### Find Exploits by CVE
Use the `find_by_cve` tool to find all exploits related to a specific CVE:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>find_by_cve</tool_name>
<arguments>
{
"cve": "CVE-2021-44228",
"limit": 10
}
</arguments>
</use_mcp_tool>
```
### Get Recent Exploits
Use the `get_recent_exploits` tool to retrieve recently added exploits:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_recent_exploits</tool_name>
<arguments>
{
"limit": 10
}
</arguments>
</use_mcp_tool>
```
### Get Statistics
Use the `get_statistics` tool to get insights about the exploits in the database:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_statistics</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
```
### Search by Platform
Search exploits for a specific platform with advanced filters:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_platform</tool_name>
<arguments>
{
"platform": "php",
"type": "webapps",
"verified": true,
"limit": 10
}
</arguments>
</use_mcp_tool>
```
### Search by Author
Find all exploits by a specific author:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_author</tool_name>
<arguments>
{
"author": "Offensive Security",
"limit": 10
}
</arguments>
</use_mcp_tool>
```
### Search by Date Range
Find exploits within a specific date range:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_date_range</tool_name>
<arguments>
{
"start_date": "2024-01-01",
"end_date": "2024-12-31",
"platform": "windows",
"limit": 20
}
</arguments>
</use_mcp_tool>
```
### Search by Tags
Search exploits by generated tags:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_tags</tool_name>
<arguments>
{
"tags": ["sql injection", "rce"],
"match_all": false,
"limit": 10
}
</arguments>
</use_mcp_tool>
```
### Get Trending Exploits
Find recently added exploits:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_trending_exploits</tool_name>
<arguments>
{
"days": 30,
"limit": 10
}
</arguments>
</use_mcp_tool>
```
### Compare Exploits
Compare multiple exploits side-by-side:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>compare_exploits</tool_name>
<arguments>
{
"ids": [12345, 12346, 12347]
}
</arguments>
</use_mcp_tool>
```
### Get Related Exploits
Find exploits related to a specific exploit:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_related_exploits</tool_name>
<arguments>
{
"id": 12345,
"relation_type": "platform",
"limit": 10
}
</arguments>
</use_mcp_tool>
```
### Batch Get Exploits
Retrieve multiple exploits efficiently:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>batch_get_exploits</tool_name>
<arguments>
{
"ids": [12345, 12346, 12347, 12348],
"include_code": false
}
</arguments>
</use_mcp_tool>
```
### Export Search Results
Export search results in CSV or JSON format:
```
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>export_search_results</tool_name>
<arguments>
{
"query": "wordpress",
"format": "csv",
"platform": "php",
"limit": 100
}
</arguments>
</use_mcp_tool>
```
## Configuration Options
The server can be configured using environment variables or a `.env` file:
| Variable | Description | Default |
| ------------------ | --------------------------------------------- | ----------------------------------------------------------------------------- |
| `CLONE_REPOSITORY` | Whether to clone the ExploitDB repository | `false` |
| `REPOSITORY_URL` | URL of the ExploitDB repository | `https://gitlab.com/exploit-database/exploitdb.git` |
| `CSV_URL` | URL of the ExploitDB CSV file | `https://gitlab.com/exploit-database/exploitdb/-/raw/main/files_exploits.csv` |
| `DATA_DIR` | Directory to store data | `./data` |
| `DB_PATH` | Path to the SQLite database | `./data/exploitdb.sqlite` |
| `UPDATE_INTERVAL` | Update frequency in hours (0 to disable) | `24` |
| `MAX_RESULTS` | Maximum number of results to return per query | `10` |
## Data Sources
This server uses data from the [Exploit Database](https://www.exploit-db.com/), maintained by [Offensive Security](https://www.offensive-security.com/). The data is either downloaded directly from the CSV file or cloned from the [ExploitDB GitLab repository](https://gitlab.com/exploit-database/exploitdb).
### Data Processing
The server automatically handles various data quality issues:
- **Date handling**: Uses `date_published` from the CSV, with fallbacks to `date_added`, `date_updated`, or a default date if all are missing
- **Missing fields**: Provides sensible defaults for required fields (author, type, platform) when data is incomplete
- **CVE extraction**: Automatically extracts CVE identifiers from exploit descriptions
- **Tag generation**: Generates relevant tags based on exploit descriptions for improved searchability
The database typically contains:
- **46,000+** exploits spanning from 1988 to present
- **33,000+** verified exploits
- Coverage across **60+** platforms (PHP, Windows, Linux, etc.)
- **27,000+** web application exploits
- Comprehensive metadata including authors, dates, platforms, and CVE references
## License
This project is licensed under the MIT License - see the LICENSE file for details.
## Acknowledgements
- [Offensive Security](https://www.offensive-security.com/) for maintaining the Exploit Database
- [Model Context Protocol](https://github.com/anthropics/model-context-protocol) for enabling AI assistants to access external tools
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Have feature suggestions or found a bug? Please open an issue on our [GitHub repository](https://github.com/Cyreslab-AI/exploitdb-mcp-server) or contact us directly at [contact@cyreslab.ai](mailto:contact@cyreslab.ai).