PhishTank MCP服务器
一种MCP(模型上下文协议)服务器,提供对PhishTank的访问,PhishTang是互联网上钓鱼数据和信息的协作交换所。PhishTank由思科Talos情报集团运营,提供实时钓鱼URL验证和全面的钓鱼数据库。
特性
- URL验证:检查网址是否在PhishTank的钓鱼数据库中
- 批处理:使用智能速率限制检查多个URL
- 数据库访问:访问全面的钓鱼URL数据库
- 搜索和筛选:按目标、日期或验证状态搜索钓鱼网址
- 统计:获取钓鱼趋势和目标分析
- 缓存:智能缓存可减少API调用并提高性能
- 速率限制:尊重PhishTank的自动节流速率限制
可用工具
1. check_url
检查PhishTank的钓鱼数据库中是否有单个URL。
参数:
url(必填):要检查的URL(必须包括协议)format(可选):响应格式(“json”、“xml”、“php”,默认:“json”)
例子:
{
"url": "https://suspicious-site.com/login",
"format": "json"
}2. check_multiple_urls
使用智能速率限制检查多个URL。
参数:
urls(必填):要检查的URL数组(最多50个)delay(可选):请求之间的延迟(毫秒)(500-10000,默认值:1000)
例子:
{
"urls": [
"https://example1.com",
"https://example2.com"
],
"delay": 1500
}3. get_recent_phish
从数据库中获取最近验证的钓鱼网址。
参数:
limit(可选):要返回的条目数(1-1000,默认值:100)include_offline(可选):包括离线钓鱼网址(默认值:false)
4. search_phish_by_target
按目标公司/品牌搜索钓鱼网址。
参数:
target(必填):目标公司或品牌名称(例如“PayPal”、“Apple”)limit(可选):结果数量(1-500,默认值:50)verified_only(可选):仅返回经过验证的钓鱼网址(默认值:true)
5. get_phish_details
按ID获取特定网络钓鱼的详细信息。
参数:
phish_id(必填):PhishTank钓鱼ID号
6. get_phish_stats
获取有关网络钓鱼趋势和主要目标的统计数据。
参数:
days(可选):要分析的天数(1-30,默认值:7)top_targets_limit(可选):要包含的顶级目标数量(默认值:10)
7. search_phish_by_date
按提交日期范围搜索钓鱼网址。
参数:
start_date(必填):开始日期,格式为YYYY-MM-DDend_date(必填):YYYY-MM-DD格式的结束日期limit(可选):结果数量(1-500,默认值:100)
安装
先决条件
- Node.js 18或更高版本
- npm或纱线
再进行
npm install构建服务器
npm run build全局安装(可选)
npm install -g .配置
可以使用环境变量配置服务器。复制 .env.example 向 .env 并自定义:
cp .env.example .env环境变量
PHISHTANK_API_KEY:可选API密钥,用于更高的速率限制和数据库下载PHISHTANK_USER_AGENT:自定义用户代理字符串(推荐格式:phishtank/username)
获取API密钥
- 访问 PhishTank API注册
- 创建帐户或登录
- 注册您的应用程序以获得API密钥
- 将密钥添加到您的
.env文件
API密钥的优点:
- 更高的速率限制(每分钟100次对10次请求)
- 访问数据库下载
- 更可靠的服务
用法
运行服务器
# Run directly
npm start
# Or if installed globally
phishtank-mcp-server
# Run with MCP Inspector for testing
npm run inspector与MCP客户端集成
添加到MCP客户端配置中:
{
"name": "phishtank",
"command": "node",
"args": ["path/to/phishtank-mcp-server/build/index.js"]
}示例用法
检查可疑URL
// Using MCP client
const result = await client.use_tool('check_url', {
url: 'https://suspicious-site.com/login'
});搜索PayPal网络钓鱼
const phishingUrls = await client.use_tool('search_phish_by_target', {
target: 'PayPal',
limit: 20,
verified_only: true
});获取最近的网络钓鱼统计信息
const stats = await client.use_tool('get_phish_stats', {
days: 7,
top_targets_limit: 15
});速率限制
服务器自动处理速率限制:
- 没有API密钥:每分钟10个请求
- 使用API密钥:每分钟100个请求
- 自动节流:请求被排队并适当间隔
- 缓存:缓存结果以减少API调用
缓存
- URL检查:缓存5分钟
- 数据库下载:缓存1小时
- 自动清理:缓存会自动清理
错误处理
服务器提供全面的错误处理:
- 超出费率限制:带回退的自动重试
- URL无效:API调用前的验证
- 网络错误:正确的错误消息和恢复
- API错误:来自PhishTank的详细错误信息
API响应格式
所有工具都返回结构化的JSON响应,其中包含:
{
"result": { /* Tool-specific data */ },
"rate_limit_info": {
"interval": "300 Seconds",
"limit": 100,
"count": 5,
"remaining": 95
},
"summary": "Human-readable summary of the result"
}安全考虑
- 不需要API密钥:基本功能在没有API密钥的情况下工作
- 速率限制:尊重PhishTank的服务限制
- URL验证:所有URL在处理前都经过验证
- 错误处理:防止错误消息中的信息泄露
发展
脚本
npm run build:将TypeScript编译为JavaScriptnpm run watch:观察变化并重建npm run inspector:使用MCP Inspector进行测试
项目结构
phishtank-mcp-server/
├── src/
│ ├── index.ts # Main server implementation
│ └── types/
│ └── phishtank-types.ts # TypeScript type definitions
├── build/ # Compiled JavaScript (auto-generated)
├── package.json
├── tsconfig.json
├── .env.example
└── README.md贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件
相关项目
- URLhaus MCP服务器 -URLhaus恶意软件URL数据库
- OpenFDA MCP服务器 -美国食品药品监督管理局药品和器械信息
- CIRCL CVE搜索MCP服务器 -CVE漏洞信息
支持
- 问题:
- 文档: PhishTank API文件
- 社区: MCP社区
