一个用于域名、URL、IP地址等安全检查的Python工具包。可以轻松集成到任何Python应用程序中,通过终端命令行使用,或作为MCP服务器运行以实时丰富LLM上下文中的威胁洞察。
由专注于网络安全和网络监控解决方案的公司Montimage开发。
<p align="left"> <a href="https://pepy.tech/projects/sec-mcp"><img src="https://static.pepy.tech/badge/sec-mcp" alt="PyPI 下载量"></a> <a href="https://pypi.org/project/sec-mcp/"><img src="https://img.shields.io/pypi/v/sec-mcp.svg?label=PyPI&color=blue" alt="PyPI"></a> <a href="https://pypi.org/project/sec-mcp/"><img src="https://img.shields.io/pypi/pyversions/sec-mcp.svg?label=Python&color=informational" alt="Python 版本"></a> <a href="https/opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="MIT 许可证"></a> </p>pip install sec-mcp
pytricia 和 psutil 用于基准测试创建虚拟环境(推荐):
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate.bat
安装 sec-mcp:
pip install sec-mcp
初始化并更新数据库:
sec-mcp update
检查状态:
sec-mcp status
检查一个URL:
sec-mcp check https://example.com
sec-mcp check https://example.com
sec-mcp check malicious-domain.com
sec-mcp check 192.168.1.1
# 从文件(每行一个URL/域名/IP)
sec-mcp batch urls.txt
# 输出到文件
sec-mcp batch urls.txt --output results.json
# 检查黑名单状态
sec-mcp status
# 更新黑名单
sec-mcp update
# 获取详细统计信息
sec-mcp stats
from sec_mcp import SecMCP
# 初始化客户端
client = SecMCP()
# 更新数据库(安装后运行一次)
client.update()
# 单个检查
result = client.check("https://example.com")
print(f"安全: {result.is_safe}")
print(f"来源: {result.source}")
# 批量检查
urls = ["https://example.com", "https://test.com", "192.168.1.1"]
results = client.check_batch(urls)
for r in results:
print(f"{r.value}: {'安全' if r.is_safe else '阻止'}")
# 获取状态
status = client.get_status()
print(f"总条目数: {status.total_entries}")
print(f"上次更新时间: {status.last_update}")
sec-mcp 可以作为MCP服务器运行以集成AI/LLM(例如Claude、Windsurf、Cursor)。
在虚拟环境中安装 sec-mcp(参见快速开始)
更新黑名单:
sec-mcp update
配置您的MCP客户端(例如claude_desktop_config.json):
{
"mcpServers": {
"sec-mcp": {
"command": "/绝对路径/to/.venv/bin/python",
"args": ["-m", "sec_mcp.start_server"],
"env": {
"MCP_USE_V2_STORAGE": "true"
}
}
}
}
重要:使用虚拟环境Python可执行文件的绝对路径。
- macOS/Linux:
/path/to/.venv/bin/python- Windows:
C:\path\to\.venv\Scripts\python.exe
| 工具名称 | 描述 |
|---|---|
check_batch | 一次性检查多个域名/URL/IP |
get_status | 获取黑名单状态,包括条目数量和按来源细分的信息 |
update_blacklists | 强制立即更新所有黑名单 |
get_diagnostics | 获取诊断信息,模式有:摘要、全部、健康、性能、样本 |
add_entry | 手动添加黑名单条目 |
remove_entry | 根据URL或IP地址删除黑名单条目 |
注意:这些工具经过优化以减少令牌使用同时保持全部功能。get_diagnostics工具整合了多种监控功能,并提供了不同的模式。
get_diagnostics工具提供了以下模式的灵活监控:
摘要(默认):条目数量、来源和最后更新时间全部:完整的诊断数据,包括健康状况、统计数据和性能健康:仅数据库和调度器健康状况性能:性能指标和命中率(仅适用于v2存储)样本:随机抽取黑名单条目(使用sample_count参数)示例用法:
# 获取基本摘要
await get_diagnostics()
# 检查系统健康状况
await get_diagnostics(mode="健康")
# 获取性能指标
await get_diagnostics(mode="性能")
# 抽取20个条目
await get_diagnostics(mode="样本", sample_count=20)
启用超快的内存存储以获得显著的性能提升:
export MCP_USE_V2_STORAGE=true
| 操作 | v1(数据库) | v0.3.0(混合) | v0.4.0(优化) | 与v1相比加速倍数 |
|---|---|---|---|---|
| 域名检查 | 10ms | 0.01ms | 0.006ms | 1,600x |
| URL检查 | 5ms | 0.001ms | 0.0007ms | 7,000x |
| IP + CIDR检查 | 200ms | 0.01ms | 0.007ms | 28,000x |
| 批量100项 | 2-3秒 | 50-100毫秒 | 50-100毫秒 | 30x |
分层查找(热/冷源):
URL规范化:
HTTP://EVIL.COM/ → http://evil.com?utm_source=spam,?fbclid=123整数IPv4存储:
# 通过MCP工具或Python API
metrics = client.get_storage_metrics()
# 返回:
{
"总查找次数": 1234,
"域名查找次数": 567,
"URL查找次数": 432,
"IP查找次数": 235,
"平均查找时间(毫秒)": "0.0123",
"内存使用(MB)": "45.3",
"命中率": 0.89,
"使用pytricia": true
}
unset MCP_USE_V2_STORAGE
# 或
export MCP_USE_V2_STORAGE=false
比较不同存储实现的性能:
# 安装依赖
pip install pytricia psutil
# 快速基准测试(10K条目,约30秒)
./run_benchmark.sh --quick
# 标准基准测试(50K条目,约2分钟)
./run_benchmark.sh
# 完整基准测试(100K条目,约5分钟)
./run_benchmark.sh --full --memory
# 比较特定版本
./run_benchmark.sh --v1 --v2opt # 比较v1 vs v0.4.0
./run_benchmark.sh --all # 比较所有版本
| 标志 | 描述 |
|---|---|
--quick | 快速基准测试,10K条目(500次迭代) |
--full | 完整基准测试,100K条目(1000次迭代) |
--all | 比较所有版本(v1、v0.3.0、v0.4.0) |
--v1 | 基准测试v1(仅数据库存储) |
--v2 | 基准测试v0.3.0(混合存储) |
--v2opt | 基准测试v0.4.0(优化的混合存储) |
--memory | 包括内存分析(需要psutil) |
基准测试结果比较
================================================================================
操作 v1(数据库) v0.3.0(混合) v0.4.0(优化) 加速倍数
----------------------------------------------------------------------------------------------------
域名查找 9.8234毫秒 0.0098毫秒 0.0059毫秒 1,664x
URL查找 4.5632毫秒 0.0009毫秒 0.0007毫秒 6,519x
IP查找 198.2341毫秒 0.0103毫秒 0.0071毫秒 27,920x
批量100项 2453.21毫秒 87.45毫秒 72.31毫秒 33.9x
v0.4.0 优化指标
================================================================================
域名查找 热源命中率:100.0%
URL查找 热源命中率:98.9%
IP查找 热源命中率:88.9%
详细的基准测试说明和方法,请参阅BENCHMARK_PLAYBOOK.md。
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_DB_PATH | 自定义数据库位置 | 平台特定(见下文) |
MCP_USE_V2_STORAGE | 启用高性能模式 | false |
~/Library/Application Support/sec-mcp/mcp.db~/.local/share/sec-mcp/mcp.dbexport MCP_DB_PATH=/path/to/custom/location/mcp.db
编辑config.json来自定义:
{
"blacklist_sources": {
"PhishTank": "https://...",
"URLhaus": "https://..."
},
"update_time": "00:00",
"cache_size": 10000,
"log_level": "INFO"
}
# 克隆仓库
git clone https://github.com/montimage/sec-mcp.git
cd sec-mcp
# 创建虚拟环境
python3 -m venv .venv
source .venv/bin/activate
# 以开发模式安装
pip install -e .
# 安装开发依赖
pip install pytricia psutil pytest
# 运行所有测试
pytest
# 运行带有覆盖率报告
pytest --cov=sec_mcp --cov-report=html
sec-mcp/
├── sec_mcp/ # 主要包
│ ├── __init__.py
│ ├── storage.py # v1存储(仅数据库)
│ ├── storage_v2.py # v2存储(混合内存)
│ ├── start_server.py # MCP服务器
│ └── cli.py # CLI接口
├── benchmark.py # 基准测试脚本
├── run_benchmark.sh # 基准测试辅助脚本
├── dev-docs/ # 开发文档(git忽略)
├── tests/ # 测试套件
└── README.md # 本文档
MIT 许可证 - 详情请参阅LICENSE文件。
sec-mcp 由专注于网络安全和网络监控解决方案的公司Montimage开发和维护。Montimage 提供创新的安全工具和服务,帮助组织保护其数字资产并确保网络的安全性。
欢迎贡献!请随时提交Pull Request。
git checkout -b feature/amazing-feature)git commit -m '添加一些惊人的功能')git push origin feature/amazing-feature)