sec-mcp: 安全检查工具包
一个为域名、URL、IP 等提供安全检查的 Python 工具包。可轻松集成到任何 Python 应用程序中,通过终端 CLI 使用,或作为 MCP 服务器运行,为 LLM(大语言模型)上下文提供实时威胁洞察。
MCP 服务器与 LLM 支持
sec-mcp 专为与 Model Context Protocol (MCP) 兼容的客户端(如 Claude、Windsurf、Cursor)无缝集成而设计,用于在 LLM 工作流中执行实时安全检查。
可用的 MCP 工具
工具名称 | 签名 / 端点 | 描述 |
check_blacklist | check_blacklist(value: str) | 检查单个值(域名、URL 或 IP)是否在黑名单中。 |
check_batch | check_batch(values: List[str]) | 批量检查多个域名/URL/IP。 |
get_blacklist_status | get_blacklist_status() | 获取黑名单状态,包括条目数量和按来源的细分。 |
sample_blacklist | sample_blacklist(count: int) | 返回黑名单条目的随机样本。 |
get_source_stats | get_source_stats() | 检索详细统计信息:总条目数、按来源的计数、最后更新时间戳。 |
get_update_history | get_update_history(...) | 获取更新历史记录,可按来源和时间范围过滤。 |
flush_cache | flush_cache() | 清除内存中的 URL/IP 缓存。 |
add_entry | add_entry(url, ip, ...) | 手动添加黑名单条目。 |
remove_entry | remove_entry(value: str) | 通过 URL 或 IP 地址移除黑名单条目。 |
update_blacklists | update_blacklists() | 强制立即更新所有黑名单。 |
health_check | health_check() | 执行数据库和调度器的健康检查。 |
MCP 服务器设置
要将 sec-mcp 作为 MCP 服务器运行以支持 AI 驱动的客户端(如 Claude),请按照以下步骤操作:
- 创建虚拟环境:
- 激活虚拟环境:
- 安装 sec-mcp:
- 验证状态:
- 更新黑名单数据库:
- 验证数据库:
- 配置您的 MCP 客户端(如 Claude、Windsurf、Cursor)以指向以下命令:
- 使用虚拟环境中 Python 可执行文件的绝对路径。
- 在 Windows 上,路径可能类似于:
C:\path\to\.venv\Scripts\python.exe
重要提示:
- 现在,sec-mcp 工具应可在您的 MCP 客户端中用于检查 URL、域名和 IP。
API 函数
函数名称 | 签名 | 描述 |
check | check(value: str) -> CheckResult | 检查单个域名、URL 或 IP 是否在黑名单中。 |
check_batch | check_batch(values: List[str]) -> List[CheckResult] | 批量检查多个值。 |
check_ip | check_ip(ip: str) -> CheckResult | 检查 IP(或网络)是否在黑名单中。 |
check_domain | check_domain(domain: str) -> CheckResult | 检查域名(包括父域名)是否在黑名单中。 |
check_url | check_url(url: str) -> CheckResult | 检查 URL 是否在黑名单中。 |
get_status | get_status() -> StatusInfo | 获取黑名单服务的当前状态。 |
update | update() -> None | 强制立即更新所有黑名单。 |
sample | sample(count: int = 10) -> List[str] | 返回黑名单条目的随机样本。 |
功能
- 针对多个黑名单源,对域名、URL、IP 地址等进行全面的安全检查
- 从 OpenPhish、PhishStats、URLhaus 和自定义源按需更新
- 高性能、线程安全的 SQLite 存储,支持内存缓存以快速查找
- 通过
SecMCP
类提供 Python API,便于集成到应用程序中
- 基于 Click 的直观 CLI,支持交互式单次或批量扫描
- 内置 MCP 服务器支持,通过 JSON/STDIO 与 LLM/AI 集成
环境变量:MCP_DB_PATH
默认情况下,sec-mcp 将其 SQLite 数据库 (
mcp.db
) 存储在跨平台的共享位置:- macOS:
~/Library/Application Support/sec-mcp/mcp.db
- Linux:
~/.local/share/sec-mcp/mcp.db
- Windows:
%APPDATA%\sec-mcp\mcp.db
您可以通过设置
MCP_DB_PATH
环境变量覆盖此位置:在运行任何 sec-mcp 命令或启动服务器之前设置此变量。如果目录不存在,将会自动创建。
安装
通过 CLI 使用
- 创建并激活虚拟环境(推荐):
- 安装包:
- 验证状态:
- 使用安全数据填充数据库:
- 验证数据库是否已填充:
- 检查单个 URL/域名/IP:
- 从文件批量检查:
通过 API 使用(Python)
- 创建并激活虚拟环境(推荐):
- 在项目中安装:
- 导入、初始化并更新数据库:
- 单次检查:
- 批量检查:
通过 MCP 客户端使用
要将 sec-mcp 作为 MCP 服务器运行以支持 AI 驱动的客户端(如 Claude):
- 创建虚拟环境:
- 激活虚拟环境:
- 安装 sec-mcp:
- 验证状态:
- 更新黑名单数据库:
- 验证数据库:
- 配置您的 MCP 客户端(如 Claude、Windsurf、Cursor):
- 使用虚拟环境中 Python 可执行文件的绝对路径。
- 在 Windows 上,路径可能类似于:
C:\path\to\.venv\Scripts\python.exe
注意:
- 现在,sec-mcp 工具应可在您的 MCP 客户端中使用。
新增 MCP 服务器工具
以下 RPC 端点现已可用:
- check_batch(values: List[str]): 批量检查多个域名/URL/IP。返回
{ value, is_safe, explanation }
的列表。
- sample_blacklist(count: int): 返回黑名单条目的随机样本以供快速检查。
- get_source_stats(): 检索详细统计信息:总条目数、按来源的计数和最后更新时间戳。返回
{ total_entries, per_source, last_updates }
。
- get_update_history(source?: str, start?: str, end?: str): 获取更新历史记录,可按来源和时间范围过滤。
- flush_cache(): 清除内存中的 URL/IP 缓存。返回
{ cleared: bool }
。
- health_check(): 执行数据库和调度器的健康检查。返回
{ db_ok: bool, scheduler_alive: bool, last_update: timestamp }
。
- add_entry(url: str, ip?: str, date?: str, score?: float, source?: str): 手动添加黑名单条目。返回
{ success: bool }
。
- remove_entry(value: str): 通过 URL 或 IP 地址移除黑名单条目。返回
{ success: bool }
。
配置
客户端可通过
config.json
进行配置:blacklist_sources
: 黑名单源的 URL
update_time
: 每日更新时间表(默认:"00:00")
cache_size
: 内存缓存大小(默认:10000)
log_level
: 日志级别(默认:"INFO")
开发
克隆仓库并以开发模式安装:
许可证
MIT
关于 Montimage
- Author:waytomcp
- URL:https://www.waytomcp.com/article/Montimage/sec-mcp
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!