Drain3 MCP Server
MCP server that wraps Drain3 for streaming log template mining, read-only matching, parameter extraction, and model persistence, exposing tools and resources to train on logs and query learned templates.
README
Drain3 MCP Server
基于 Drain3 的 Python MCP Server,把流式日志模板挖掘、只读匹配、参数提取和模型持久化封装成标准的 Model Context Protocol 工具。
功能
- 逐条或批量训练日志模板
- 在不修改模型的前提下匹配新日志
- 提取 IP、数字、UUID、URL、十六进制值及 Drain3 通配参数
- 查询、排序和分页浏览已学习的模板
- 原子化文件快照,服务重启后自动恢复
- 同时支持
stdio、Streamable HTTP 和旧版 SSE 传输 - 返回结构化 MCP 输出,便于 Agent 稳定消费
MCP 工具
| 工具 | 用途 | 是否修改模型 |
|---|---|---|
train_log |
学习一条日志并返回模板、簇和参数 | 是 |
train_logs |
按顺序批量学习日志 | 是 |
match_log |
匹配一条日志,不创建新模板 | 否 |
match_logs |
批量只读匹配 | 否 |
list_templates |
查询已学习模板,支持排序和分页 | 否 |
extract_log_parameters |
按指定模板提取动态参数 | 否 |
get_stats |
查看模板数、消息数和有效配置 | 否 |
save_state |
立即将完整模型状态写入快照 | 写快照 |
服务还公开以下 MCP Resources:
drain3://statsdrain3://templatesdrain3://templates/{cluster_id}
安装与启动
需要 Python 3.10 或更高版本。
python -m venv .venv
# Linux / macOS
source .venv/bin/activate
# Windows PowerShell
.venv\Scripts\Activate.ps1
pip install -e .
drain3-mcp-server
默认启动 stdio 传输,适合 Codex、Claude Desktop 等 MCP Host。也可以启动 Streamable HTTP:
drain3-mcp-server --transport streamable-http --host 127.0.0.1 --port 8000
MCP 端点是 http://127.0.0.1:8000/mcp。
MCP Host 配置示例
仓库开发模式:
{
"mcpServers": {
"drain3": {
"command": "D:/code/Drain3MCPServer/.venv/Scripts/python.exe",
"args": ["-m", "drain3_mcp_server"],
"env": {
"DRAIN3_MCP_STATE_PATH": "D:/data/drain3/state.bin"
}
}
}
}
安装为命令后,可将 command 改成 drain3-mcp-server,并移除 args。
配置
| 环境变量 | 默认值 | 说明 |
|---|---|---|
DRAIN3_MCP_CONFIG_PATH |
包内 default_drain3.ini |
自定义 Drain3 INI 配置路径 |
DRAIN3_MCP_STATE_PATH |
data/drain3_state.bin |
模型快照路径;设为 none 或 :memory: 禁用持久化 |
DRAIN3_MCP_MAX_BATCH_SIZE |
1000 |
单次批量调用允许的最大日志条数 |
默认配置会掩码 IP、数字、UUID、URL 和十六进制值。生产环境通常应通过 DRAIN3_MCP_CONFIG_PATH 提供针对业务日志设计的 masking 规则。完整的 Drain3 参数定义请参考 Drain3 配置说明。
调用示例
先训练两条相似日志:
{
"log_messages": [
"User 123 logged in from 10.0.0.1",
"User 456 logged in from 10.0.0.2"
]
}
train_logs 会学习到类似下面的模板:
User <NUM> logged in from <IP>
之后使用 match_log 可以对新日志做只读推理,并取得 NUM、IP 对应的参数值。
Docker
docker build -t drain3-mcp-server .
docker run --rm -p 8000:8000 -v drain3-data:/data drain3-mcp-server
容器默认监听 0.0.0.0:8000,模型写入 /data/drain3_state.bin。
开发与测试
pip install -e ".[dev]"
pytest
ruff check .
核心代码位于:
src/drain3_mcp_server/service.py:线程安全的 Drain3 服务层src/drain3_mcp_server/server.py:MCP 工具、资源与启动入口src/drain3_mcp_server/default_drain3.ini:默认模板挖掘配置
设计说明
- 训练调用会沿用 Drain3 自身的快照策略;如需确保最新的簇计数立即落盘,请在训练批次结束后调用
save_state。 - HTTP 模式下,单进程内的调用共享同一个 Drain3 模型,并通过可重入锁串行化访问。
- 若部署多个副本,每个副本应使用独立状态文件,或扩展为 Redis/Kafka 等共享持久化方案;本项目当前默认实现面向单实例。
- HTTP 传输本身未配置身份认证。默认只监听回环地址;对外暴露时应放在带认证和 TLS 的网关之后。
- Drain3 使用
jsonpickle恢复快照,因此状态文件必须来自可信位置,不要加载第三方提供的快照。
License
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。