sec-mcp:安全检查工具包
一个Python工具包,提供对域、URL、IP等的安全检查。轻松集成到任何Python应用程序中,通过终端CLI使用,或作为MCP服务器运行,以实时威胁洞察丰富LLM上下文。
由...开发 蒙蒂马克,一家专门从事网络安全和网络监控解决方案的公司。
______________________________________________________________________
目录
- CLI使用情况 - Python API - MCP服务器
______________________________________________________________________
特性
- 全面的安全检查:根据多个黑名单源验证域、URL和IP地址
- 多种威胁源:OpenPhish、PhishTank、PhishStats、URLhaus、BlocklistDE、CINSSCORE等
- 高性能:超高速内存存储,比仅使用数据库的方法加速1000-20000x
- 智能优化:分层查找、URL规范化和整数IPv4存储,以实现最高效率
- 柔性集成:用作Python库、CLI工具或MCP服务器,用于LLM集成
- 线程安全:具有WAL模式的SQLite存储和用于并发操作的内存缓存
- 自动更新:威胁情报来源的计划每日更新
- 丰富的监控:内置指标、健康检查和性能跟踪
______________________________________________________________________
安装
pip install sec-mcp需求
- Python 3.8+
- SQLite 3
- 可选:
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______________________________________________________________________
用法
CLI使用情况
单次检查
sec-mcp check https://example.com
sec-mcp check malicious-domain.com
sec-mcp check 192.168.1.1批量检查
# From a file (one URL/domain/IP per line)
sec-mcp batch urls.txt
# With output to file
sec-mcp batch urls.txt --output results.json状态和更新
# Check blacklist status
sec-mcp status
# Update blacklists
sec-mcp update
# Get detailed statistics
sec-mcp statsPython API
from sec_mcp import SecMCP
# Initialize client
client = SecMCP()
# Update database (run once after installation)
client.update()
# Single check
result = client.check("https://example.com")
print(f"Safe: {result.is_safe}")
print(f"Source: {result.source}")
# Batch check
urls = ["https://example.com", "https://test.com", "192.168.1.1"]
results = client.check_batch(urls)
for r in results:
print(f"{r.value}: {'SAFE' if r.is_safe else 'BLOCKED'}")
# Get statistics
status = client.get_status()
print(f"Total entries: {status.total_entries}")
print(f"Last update: {status.last_update}")MCP服务器
sec-mcp可以作为用于AI/LLM集成的mcp服务器运行(例如,Claude、Windsurf、Cursor)。
设置
- 安装sec-mcp 在虚拟环境中(请参阅快速入门)
- 更新黑名单:
sec-mcp update- 配置您的MCP客户端 (例如。,
claude_desktop_config.json):
{
"mcpServers": {
"sec-mcp": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["-m", "sec_mcp.start_server"],
"env": {
"MCP_USE_V2_STORAGE": "true"
}
}
}
}> 重要:使用虚拟环境Python可执行文件的绝对路径。 > > - macOS/Linux: /path/to/.venv/bin/python > - 窗户: C:\path\to\.venv\Scripts\python.exe
可用的MCP工具
| 工具名称 | 描述 |
|---|---|
check_batch | 在一次通话中检查多个域名/URL/IP |
get_status | 获取黑名单状态,包括条目计数和每个来源的细分 |
update_blacklists | 强制立即更新所有黑名单 |
get_diagnostics | 通过以下模式获取诊断信息:摘要、完整、运行状况、性能、示例 |
add_entry | 手动添加黑名单条目 |
remove_entry | 按URL或IP地址删除黑名单条目 |
备注:这些工具已经过优化,在保持完整功能的同时减少了令牌的使用。这 get_diagnostics 该工具整合了多种不同模式的监控功能。
诊断工具模式
这 get_diagnostics 该工具提供以下模式的灵活监控:
summary(默认):条目计数、来源和上次更新时间full:完整的诊断数据,包括健康状况、统计数据和性能health:仅数据库和计划程序运行状况performance:性能指标和命中率(仅限v2存储)sample:黑名单条目的随机样本(使用sample_count参数)
示例用法:
# Get basic summary
await get_diagnostics()
# Check system health
await get_diagnostics(mode="health")
# Get performance metrics
await get_diagnostics(mode="performance")
# Sample 20 entries
await get_diagnostics(mode="sample", sample_count=20)______________________________________________________________________
🚀 性能优化
高性能模式(v0.3.0+)
实现超高速内存存储,显著提高性能:
export MCP_USE_V2_STORAGE=true性能比较
| 操作 | v1(数据库) | v0.3.0(混合) | v0.4.0(优化) | 加速(vs v1) |
|---|---|---|---|---|
| 域检查 | 10ms | 0.01ms | 0.006ms | 1600倍 |
| URL检查 | 5ms | 0.001ms | 0.0007毫秒 | 7000倍 |
| IP+CIDR检查 | 200ms | 0.01ms | 0.007毫秒 | 28000x |
| 批量100个项目 | 2-3s | 50-100ms | 50-100ms | 30倍 |
内存使用
- v1(默认):~10MB(磁盘上的数据库)
- v0.3.0(v2):~60-80MB(内存中可容纳125K个条目)
- v0.4.0(v2优化版): ~40-50MB (内存中可存储450K个条目)- 减少30-40%!
v0.4.0优化
- 分层查找(热源/冷源):
- 首先检查频繁命中的源以尽早退出 - 70-90%的查找访问了热点 - 基于生产数据分析
- URL规范化:
- 自动捕捉变化: HTTP://EVIL.COM/ → http://evil.com - 删除跟踪参数: ?utm_source=spam, ?fbclid=123 - 内存减少15-25%
- 整数IPv4存储:
- 每个IP 4个字节(而字符串为13+个字节) - 比较速度提高5-10% - 节省约1-2MB内存
监控性能
# Via MCP tool or Python API
metrics = client.get_storage_metrics()
# Returns:
{
"total_lookups": 1234,
"domain_lookups": 567,
"url_lookups": 432,
"ip_lookups": 235,
"avg_lookup_time_ms": "0.0123",
"memory_usage_mb": "45.3",
"hit_rate": 0.89,
"using_pytricia": true
}回滚到v1
unset MCP_USE_V2_STORAGE
# or
export MCP_USE_V2_STORAGE=false______________________________________________________________________
基准测试
运行基准
比较不同存储实施的性能:
# Install dependencies
pip install pytricia psutil
# Quick benchmark (10K entries, ~30 seconds)
./run_benchmark.sh --quick
# Standard benchmark (50K entries, ~2 minutes)
./run_benchmark.sh
# Full benchmark (100K entries, ~5 minutes)
./run_benchmark.sh --full --memory
# Compare specific versions
./run_benchmark.sh --v1 --v2opt # Compare v1 vs v0.4.0
./run_benchmark.sh --all # Compare all versions基准选项
| 标志 | 描述 |
|---|---|
--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) |
示例输出
BENCHMARK RESULTS COMPARISON
================================================================================
Operation v1 (DB) v0.3.0 (Hybrid) v0.4.0 (Optimized) Speedup
----------------------------------------------------------------------------------------------------
domain_lookup 9.8234ms 0.0098ms 0.0059ms 1,664x
url_lookup 4.5632ms 0.0009ms 0.0007ms 6,519x
ip_lookup 198.2341ms 0.0103ms 0.0071ms 27,920x
batch_100 2453.21ms 87.45ms 72.31ms 33.9x
v0.4.0 OPTIMIZATION METRICS
================================================================================
Domain Lookup Hot source hit rate: 100.0%
URL Lookup Hot source hit rate: 98.9%
IP Lookup Hot source hit rate: 88.9%有关详细的基准测试说明和方法,请参阅 基准_游戏手册.md.
______________________________________________________________________
配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_DB_PATH | 自定义数据库位置 | 特定于平台(见下文) |
MCP_USE_V2_STORAGE | 启用高性能模式 | false |
默认数据库位置
- macOS:
~/Library/Application Support/sec-mcp/mcp.db - Linux:
~/.local/share/sec-mcp/mcp.db - 视窗:
%APPDATA%\sec-mcp\mcp.db
自定义数据库路径
export 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"
}______________________________________________________________________
发展
设置开发环境
# Clone repository
git clone https://github.com/montimage/sec-mcp.git
cd sec-mcp
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate
# Install in development mode
pip install -e .
# Install development dependencies
pip install pytricia psutil pytest运行测试
# Run all tests
pytest
# Run with coverage
pytest --cov=sec_mcp --cov-report=html项目结构
sec-mcp/
├── sec_mcp/ # Main package
│ ├── __init__.py
│ ├── storage.py # v1 storage (database-only)
│ ├── storage_v2.py # v2 storage (hybrid in-memory)
│ ├── start_server.py # MCP server
│ └── cli.py # CLI interface
├── benchmark.py # Benchmark script
├── run_benchmark.sh # Benchmark helper script
├── dev-docs/ # Development documentation (git-ignored)
├── tests/ # Test suite
└── README.md # This file______________________________________________________________________
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
______________________________________________________________________
关于蒙缇迈
sec-mcp由开发和维护 蒙蒂马克,一家专门从事网络安全和网络监控解决方案的公司。Montimage提供创新的安全工具和服务,帮助组织保护其数字资产并确保其网络的安全。
支持
- 问题:
- 电子邮件: contact@montimage.eu
- 网站: https://www.montimage.eu
______________________________________________________________________
贡献
欢迎投稿!请随时提交拉取请求。
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
______________________________________________________________________
致谢
- 威胁情报来源:OpenPhish、PhishTank、PhishStats、URLhaus、BlocklistDE、CINSSCORE等
- 内置于 模型上下文协议(MCP)
- 由Python和SQLite提供支持
