PhishTank MCP Server
This server provides phishing intelligence and URL safety verification via PhishTank and optionally Google Safe Browsing, exposed as MCP tools.
Check a single URL against PhishTank's phishing database (
check_url).Check multiple URLs in one call with rate limiting (
check_multiple_urls).Get recent verified phishing URLs with optional offline entries (
get_recent_phish).Search phishing URLs by target brand/company (e.g., PayPal, Apple) with filtering (
search_phish_by_target).Get detailed info for a specific phish ID (
get_phish_details).Get phishing statistics and top targets for a time range (
get_phish_stats).Search phishing URLs by submission date range (
search_phish_by_date).Check a URL against Google Safe Browsing for malware, phishing, unwanted software, etc. (requires API key) (
check_url_safe_browsing).Cross-check a URL against both PhishTank and Safe Browsing and get a combined verdict with per-source attribution (
check_url_multi_source).
Provides URL safety checks against Google Safe Browsing, including malware, social engineering/phishing, unwanted software, and potentially harmful application threats, and can combine results with PhishTank for a multi-source verdict.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PhishTank MCP Server Check if https://suspicious-site.com is phishing"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PhishTank MCP Server
An MCP (Model Context Protocol) server that provides access to PhishTank, a collaborative clearing house for data and information about phishing on the Internet. PhishTank is operated by Cisco Talos Intelligence Group and provides real-time phishing URL verification and comprehensive phishing databases.
The server also offers optional Google Safe Browsing lookups as a second, complementary threat source. See Why a second source? below.
Features
URL Verification: Check if URLs are in PhishTank's phishing database
Batch Processing: Check multiple URLs with intelligent rate limiting
Database Access: Access to comprehensive phishing URL database
Search & Filter: Search phishing URLs by target, date, or verification status
Statistics: Get phishing trends and target analysis
Caching: Smart caching to reduce API calls and improve performance
Rate Limiting: Respects PhishTank's rate limits with automatic throttling
Google Safe Browsing (optional): Cross-check URLs against Google's malware/phishing/unwanted-software database
Multi-Source Verdicts: Combine PhishTank and Safe Browsing into a single verdict with clear per-source attribution
Related MCP server: MCP AbuseIPDB Server
Why a second source?
PhishTank has been showing signs of decline as a standalone data source:
New user registration has been closed since 2020, limiting who can submit and verify phish.
The service has been reported to be undergoing a ground-up rebuild, with uncertain timelines.
PhishTank's own API surface (
checkurlplus the bulk database download) is already fully covered by this server's original 7 tools — there isn't more PhishTank-specific ground to add.
Rather than add more tools against a shrinking data source, this server adds Google Safe Browsing (v4 Lookup API): a broad-coverage, real-time, industry-standard threat database with a free tier. The two sources use independent detection pipelines, so checking both gives more reliable cross-verification than either alone. PhishTank-only tools are unaffected and keep working exactly as before, with or without Safe Browsing configured.
Available Tools
1. check_url
Check if a single URL is in PhishTank's phishing database.
Parameters:
url(required): The URL to check (must include protocol)format(optional): Response format ('json', 'xml', 'php', default: 'json')
Example:
{
"url": "https://suspicious-site.com/login",
"format": "json"
}2. check_multiple_urls
Check multiple URLs with intelligent rate limiting.
Parameters:
urls(required): Array of URLs to check (max 50)delay(optional): Delay between requests in milliseconds (500-10000, default: 1000)
Example:
{
"urls": [
"https://example1.com",
"https://example2.com"
],
"delay": 1500
}3. get_recent_phish
Get recent verified phishing URLs from the database.
Parameters:
limit(optional): Number of entries to return (1-1000, default: 100)include_offline(optional): Include offline phishing URLs (default: false)
4. search_phish_by_target
Search phishing URLs by target company/brand.
Parameters:
target(required): Target company or brand name (e.g., "PayPal", "Apple")limit(optional): Number of results (1-500, default: 50)verified_only(optional): Only return verified phishing URLs (default: true)
5. get_phish_details
Get detailed information about a specific phish by ID.
Parameters:
phish_id(required): PhishTank phish ID number
6. get_phish_stats
Get statistics about phishing trends and top targets.
Parameters:
days(optional): Number of days to analyze (1-30, default: 7)top_targets_limit(optional): Number of top targets to include (default: 10)
7. search_phish_by_date
Search phishing URLs by submission date range.
Parameters:
start_date(required): Start date in YYYY-MM-DD formatend_date(required): End date in YYYY-MM-DD formatlimit(optional): Number of results (1-500, default: 100)
8. check_url_safe_browsing (requires GOOGLE_SAFE_BROWSING_API_KEY)
Check a single URL against Google Safe Browsing for malware, social engineering (phishing), unwanted software, and potentially harmful application threats.
Parameters:
url(required): The URL to check (must include protocol)
Example:
{
"url": "https://suspicious-site.com/login"
}If GOOGLE_SAFE_BROWSING_API_KEY is not set, this tool returns a clear error explaining how to get one; it does not affect any other tool.
9. check_url_multi_source
Check a URL against both PhishTank and Google Safe Browsing in a single call, and return a combined verdict (malicious, likely_safe, inconclusive, or unknown) with the contribution of each source clearly labeled under sources.phishtank and sources.safeBrowsing.
Parameters:
url(required): The URL to check (must include protocol)
Example:
{
"url": "https://suspicious-site.com/login"
}If GOOGLE_SAFE_BROWSING_API_KEY is not configured, this tool still runs PhishTank's check; the sources.safeBrowsing field reports checked: false with an explanatory error instead of failing the whole call. This is the recommended tool when you want the most reliable single answer.
Installation
Prerequisites
Node.js 18 or higher
npm or yarn
Install Dependencies
npm installBuild the Server
npm run buildInstall Globally (Optional)
npm install -g .Configuration
The server can be configured using environment variables. Copy .env.example to .env and customize:
cp .env.example .envEnvironment Variables
PHISHTANK_API_KEY: Optional API key for higher rate limits and database downloadsPHISHTANK_USER_AGENT: Custom User-Agent string (recommended format:phishtank/username)GOOGLE_SAFE_BROWSING_API_KEY: Optional API key that enablescheck_url_safe_browsingand the Safe-Browsing half ofcheck_url_multi_source. All PhishTank tools work without it.
Getting a PhishTank API Key
Create an account or log in
Register your application to get an API key
Add the key to your
.envfile
Benefits of API Key:
Higher rate limits (100 vs 10 requests per minute)
Access to database downloads
More reliable service
Note: as of this writing, PhishTank registration for new accounts has been closed since 2020, so this key may not be obtainable for new users — see Why a second source?.
Getting a Google Safe Browsing API Key
Create or select a project in the Google Cloud Console
Enable the Safe Browsing API for that project
Create an API key (Credentials) and restrict it to the Safe Browsing API
Set it as
GOOGLE_SAFE_BROWSING_API_KEYin your environment (or.envfile)
The Safe Browsing API has a free tier and is documented at developers.google.com/safe-browsing. It is for non-commercial use; see Google's terms for commercial use cases (Web Risk API).
Usage
Running the Server
# Run directly
npm start
# Or if installed globally
phishtank-mcp-server
# Run with MCP Inspector for testing
npm run inspectorIntegration with MCP Clients
Add to your MCP client configuration:
{
"name": "phishtank",
"command": "node",
"args": ["path/to/phishtank-mcp-server/build/index.js"]
}Example Usage
Check a Suspicious URL
// Using MCP client
const result = await client.use_tool('check_url', {
url: 'https://suspicious-site.com/login'
});Search for PayPal Phishing
const phishingUrls = await client.use_tool('search_phish_by_target', {
target: 'PayPal',
limit: 20,
verified_only: true
});Get Recent Phishing Statistics
const stats = await client.use_tool('get_phish_stats', {
days: 7,
top_targets_limit: 15
});Cross-Check a URL Against Both Sources
const verdict = await client.use_tool('check_url_multi_source', {
url: 'https://suspicious-site.com/login'
});
// verdict.verdict: "malicious" | "likely_safe" | "inconclusive" | "unknown"
// verdict.sources.phishtank / verdict.sources.safeBrowsing: per-source detailRate Limiting
The server automatically handles rate limiting:
Without API Key: 10 requests per minute
With API Key: 100 requests per minute
Automatic Throttling: Requests are queued and spaced appropriately
Caching: Results are cached to reduce API calls
Caching
URL Checks: Cached for 5 minutes (both PhishTank's
check_urland Safe Browsing'scheck_url_safe_browsing)Database Downloads: Cached for 1 hour
Automatic Cleanup: Cache is cleaned up automatically
Error Handling
The server provides comprehensive error handling:
Rate Limit Exceeded: Automatic retry with backoff
Invalid URLs: Validation before API calls
Network Errors: Proper error messages and recovery
API Errors: Detailed error information from PhishTank or Google Safe Browsing, labeled by source
Missing Safe Browsing Key:
check_url_safe_browsingreturns a clear, actionable error;check_url_multi_sourceinstead skips that source and still returns the PhishTank result
API Response Format
All tools return structured JSON responses (also exposed as MCP structuredContent matching each tool's outputSchema).
PhishTank-only tools, e.g. check_url:
{
"result": { /* Tool-specific data */ },
"rate_limit_info": {
"interval": "300 Seconds",
"limit": 100,
"count": 5,
"remaining": 95
},
"summary": "Human-readable summary of the result"
}check_url_safe_browsing:
{
"url": "https://suspicious-site.com/login",
"threats_found": true,
"matches": [
{ "threatType": "SOCIAL_ENGINEERING", "platformType": "ANY_PLATFORM", "threatEntryType": "URL", "threat": { "url": "https://suspicious-site.com/login" } }
],
"checked_at": "2026-09-19T00:00:00.000Z",
"summary": "⚠️ THREAT DETECTED by Google Safe Browsing - SOCIAL_ENGINEERING"
}check_url_multi_source, with each source's contribution clearly attributed:
{
"url": "https://suspicious-site.com/login",
"sources": {
"phishtank": { "checked": true, "available": true, "in_database": true, "verified": true, "phish_id": 12345 },
"safeBrowsing": { "checked": true, "available": true, "threats_found": true, "matches": [ { "threatType": "SOCIAL_ENGINEERING", "..." : "..." } ] }
},
"verdict": "malicious",
"summary": "⚠️ PHISHING/MALWARE DETECTED - flagged by: PhishTank (verified phish ID 12345) and Google Safe Browsing (SOCIAL_ENGINEERING)"
}Security Considerations
No API Key Required: Basic PhishTank functionality works without any API key; Safe Browsing tools require
GOOGLE_SAFE_BROWSING_API_KEYand fail cleanly (or are skipped, for the multi-source tool) without itRate Limiting: Respects PhishTank's service limits
URL Validation: All URLs are validated before processing
Error Handling: Prevents information leakage in error messages
Development
Scripts
npm run build: Compile TypeScript to JavaScriptnpm run watch: Watch for changes and rebuildnpm run inspector: Run with MCP Inspector for testing
Project Structure
phishtank-mcp-server/
├── src/
│ ├── index.ts # Main server implementation
│ └── types/
│ ├── phishtank-types.ts # PhishTank TypeScript type definitions
│ └── safebrowsing-types.ts # Google Safe Browsing + multi-source type definitions
├── build/ # Compiled JavaScript (auto-generated)
├── package.json
├── tsconfig.json
└── README.mdContributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
License
MIT License - see LICENSE file for details
Related Projects
URLhaus MCP Server - URLhaus malware URL database
OpenFDA MCP Server - FDA drug and device information
CIRCL CVE Search MCP Server - CVE vulnerability information
Support
Issues: GitHub Issues
Documentation: PhishTank API Documentation
Community: MCP Community
Acknowledgments
PhishTank by Cisco Talos Intelligence Group
Model Context Protocol by Anthropic
All contributors and the cybersecurity community
Available Tools
7 toolscheck_multiple_urlsB
Check multiple URLs for phishing with intelligent rate limiting
Inputs: urls (required), delay.
check_urlB
Check if a URL is in PhishTank's phishing database
Inputs: url (required), format.
get_phish_detailsB
Get detailed information about a specific phish by ID
Inputs: phish_id (required).
get_phish_statsB
Get statistics about phishing trends and top targets
Inputs: days, top_targets_limit.
get_recent_phishC
Get recent verified phishing URLs from PhishTank database
Inputs: limit, include_offline.
search_phish_by_dateB
Search phishing URLs by submission date range
Inputs: start_date (required), end_date (required), limit.
search_phish_by_targetB
Search phishing URLs by target company/brand
Inputs: target (required), limit, verified_only.
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 has a clearly distinct purpose: single URL check, bulk check, details by ID, statistics, recent listings, and searches by date or target. No overlapping functionality.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., check_url, get_phish_details, search_phish_by_date), making them predictable and easy to understand.
With 7 tools, the surface is well-scoped for a phishing database server, covering all common query needs without unnecessary bloat.
The tool set provides complete coverage for querying phishing data: single and batch checks, detailed info, stats, recent entries, and searching by date or target. No obvious gaps.
Maintenance
Related MCP Connectors
PhishTank MCP — wraps PhishTank API (checkurl.phishtank.com)
Submit files and URLs to a malware sandbox, poll scans, fetch reports, hashes and IOCs.
URLhaus MCP — wraps abuse.ch URLhaus malware URL database (free, no auth)
Public phishing feed: suspicious/confirmed phishing URLs detected hourly. No auth, CC0.
Related MCP Servers
- AlicenseCqualityDmaintenanceProvides access to a malicious URL database API, enabling users to search, list, and retrieve information about potentially dangerous URLs for security analysis and threat detection.3MIT
- AlicenseAqualityDmaintenanceProvides threat intelligence lookups against the AbuseIPDB database, enabling IP reputation checks, CIDR block analysis, and log enrichment. It features intelligent caching and rate limiting to efficiently manage API usage for security analysis and automated workflows.5MIT
- AlicenseNot gradedqualityCmaintenanceEnables checking URLs against the PhishTank phishing database to identify malicious sites.327 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables searching past scans and submitting URLs for scanning via urlscan.io, with both keyless and key-based operations.300 npmMIT