urlhaus-mcp-server
Provides access to abuse.ch's URLhaus threat intelligence platform, enabling queries for malicious URLs, host/domain information, malware payloads, and malware tags or signatures.
URLhaus MCP Server
A comprehensive Model Context Protocol (MCP) server that provides access to URLhaus, a project from abuse.ch that collects and shares malicious URLs used for malware distribution. This server enables AI agents to perform threat intelligence research and cybersecurity analysis through the URLhaus database.
Features
This MCP server provides the following tools for querying URLhaus data:
URL Analysis Tools
get_recent_urls: Get the most recent malicious URLs from URLhaus
lookup_url: Get detailed information about a specific URL
search_urls: Search for URLs by various criteria (host, URL, tag, or signature)
Host/Domain Analysis Tools
lookup_host: Get information about URLs hosted on a specific host/domain
Malware Analysis Tools
lookup_payload: Get information about a malware payload by its hash
get_payloads: Get recent malware payloads from URLhaus
get_urls_by_tag: Get URLs associated with a specific malware tag/family
get_urls_by_signature: Get URLs associated with a specific malware signature
Related MCP server: virustotal-mcp-server
Installation
From GitHub
Clone the repository:
git clone https://github.com/Cyreslab-AI/urlhaus-mcp-server.git cd urlhaus-mcp-serverInstall dependencies:
npm installBuild the server:
npm run build
From npm (Coming Soon)
npm install -g urlhaus-mcp-serverConfiguration
Auth-Key (required)
As of abuse.ch's "Community First" changes (effective 2025-06-30), every
request to the URLhaus API must carry an Auth-Key HTTP header. Without
it, the API rejects requests. Get a free key at
auth.abuse.ch, then set it as the
URLHAUS_AUTH_KEY environment variable. This server will not start
without it.
Add the server to your MCP settings configuration:
{
"mcpServers": {
"urlhaus": {
"command": "node",
"args": ["/path/to/urlhaus-mcp-server/build/index.js"],
"env": {
"URLHAUS_AUTH_KEY": "your-auth-key-here"
}
}
}
}Usage Examples
Get Recent Malicious URLs
{
"tool": "get_recent_urls",
"arguments": {
"limit": 50
}
}Look Up a Specific URL
{
"tool": "lookup_url",
"arguments": {
"url": "https://suspicious-domain.com/malware.exe"
}
}Search for URLs by Host
{
"tool": "search_urls",
"arguments": {
"search_term": "malicious-domain.com",
"limit": 100
}
}Get URLs by Malware Family
{
"tool": "get_urls_by_tag",
"arguments": {
"tag": "emotet",
"limit": 50
}
}Look Up Malware Payload
{
"tool": "lookup_payload",
"arguments": {
"hash": "d41d8cd98f00b204e9800998ecf8427e"
}
}API Rate Limits
URLhaus has rate limits to prevent abuse. If you encounter rate limiting, wait before making additional requests.
Data Format
All responses include:
query_status: Status of the API query ("ok" or error message)summary: Human-readable summary of resultsData specific to the query type (URLs, payloads, etc.)
About URLhaus
URLhaus is operated by abuse.ch and provides:
Real-time feed of malicious URLs
Information about malware payloads
Integration with various threat intelligence platforms
Free access to security researchers and defenders
For more information, visit: https://urlhaus.abuse.ch/
Development
To run in development mode:
npm run watchTo inspect the server:
npm run inspectorContributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
URLhaus by abuse.ch for providing the free threat intelligence API
Model Context Protocol for the MCP framework
Cyreslab AI for development and maintenance
Support
If you encounter any issues or have questions, please open an issue on GitHub.
Available Tools
7 toolsget_payloadsARead-only
Get recent malware payloads from URLhaus
Inputs: limit. Returns: summary, payloads, query_status, payloads_count
get_recent_urlsARead-only
Get the most recent malicious URLs from URLhaus (up to 1000 entries)
Inputs: limit. Returns: urls, summary, urls_count, query_status
get_urls_by_signatureARead-only
Get URLs associated with a specific malware signature
Inputs: signature (required), limit. Returns: urls, summary, signature, urls_count, +1 more
get_urls_by_tagARead-only
Get URLs associated with a specific malware tag/family
Inputs: tag (required), limit. Returns: tag, urls, summary, urls_count, +1 more
lookup_hostARead-only
Get information about URLs hosted on a specific host/domain
Inputs: host (required). Returns: summary, host_info, urls_count, query_status
lookup_payloadARead-only
Get information about a malware payload by its hash
Inputs: hash (required). Returns: summary, payload_info, query_status
lookup_urlARead-only
Get detailed information about a specific URL
Inputs: url (required). Returns: summary, url_info, query_status
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool targets a distinct resource or query mode: URL, host, payload, tag, and signature are clearly separated. The only mild ambiguity is between get_urls_by_tag and get_urls_by_signature, since both return filtered URL lists, but their descriptions clarify the filter type.
Mostly follows a pattern where 'lookup_' means retrieve by a specific identifier/key and 'get_' means retrieve list-style data. However, get_urls_by_tag and get_urls_by_signature are also keyed queries but use 'get_' rather than 'lookup_', creating a minor inconsistency.
Seven tools is well-scoped for a URLhaus threat intel server. Each tool maps to a distinct endpoint or query type, and none feels redundant or out of place.
The set covers the core read-only URLhaus workflows: recent URLs, recent payloads, URL/host/payload lookups, and URL filtering by tag or signature. A minor gap is the lack of payloads-by-tag or payloads-by-signature queries, but most main investigation paths are covered.
Maintenance
Related MCP Connectors
URLhaus MCP — wraps abuse.ch URLhaus malware URL database (free, no auth)
MCP server for ScanMalware.com URL scanning, malware detection, and analysis.
Cybersecurity MCP server for URL scanning, threat intelligence, and domain reputation.
Official VirusTotal MCP server: threat reports, file and URL submissions, and analysis recovery.
Related MCP Servers
- AlicenseAqualityBmaintenanceA MCP server for querying the VirusTotal API. This server provides tools for scanning URLs, analyzing file hashes, and retrieving IP address reports.11998 npm155MIT
- FlicenseAqualityDmaintenanceMCP server for security analysis using VirusTotal API, enabling AI assistants to analyze URLs, files, IP addresses, and domains with automatic relationship fetching.81-
- FlicenseNot gradedqualityDmaintenanceMCP server that checks URLs against the URLhaus malware database to identify malicious URLs.-
- AlicenseNot gradedqualityCmaintenanceWraps abuse.ch URLhaus malware URL database (free, no auth) – enables querying malware URLs via natural language through Pipeworx MCP gateway.285 npmMIT