input-output-Lab/argus

GitHub: input-output-Lab/argus

Argus 是一个基于 MCP 协议的统一威胁情报服务器,通过聚合多源安全数据并提供语义搜索能力,为 AI 安全代理实时提供安全新闻、CVE 漏洞查询和 IOC 情报服务。

Stars: 1 | Forks: 0

# Argus MCP 一个威胁情报 [MCP](https://modelcontextprotocol.io) 服务器,为 AI 安全代理提供对安全新闻、CVE 漏洞数据和失陷标示 (IOC) 的实时访问。 Argus 通过自动化 crons 从公开威胁情报源摄取数据,并通过由 PostgreSQL + [pgvector](https://github.com/pgvector/pgvector) 数据库支持的 10 个结构化 MCP 工具(包含语义搜索)公开这些数据。 ## 功能介绍 | 层级 | 来源 | 数据 | |---|---|---| | News | BleepingComputer, Krebs on Security, CISA | 安全文章、违规报告、公告 | | CVEs | NIST NVD, CISA KEV, OSV.dev | 包含严重性和利用状态的漏洞记录 | | IOCs | AlienVault OTX | IP、域名、文件哈希、URL — 包含攻击活动上下文 | 这三个层级均支持通过存储在 PostgreSQL 中作为 `vector(768)` 列的 [Gemini embeddings](https://ai.google.dev/gemini-api/docs/embeddings) 进行语义搜索。 ## 前置条件 - **Node.js** 20+ - **PostgreSQL** 16+ 及 [pgvector](https://github.com/pgvector/pgvector) 扩展 - **PM2** — `npm install -g pm2` - **Google Gemini API key** — [在此获取](https://aistudio.google.com/) - **AlienVault OTX API key** — [免费账号](https://otx.alienvault.com) - **NIST NVD API key** — 可选,但可提高速率限制([在此注册](https://nvd.nist.gov/developers/request-an-api-key)) - 具有 `repo` scope 的 **GitHub classic PAT** — 用于私有仓库的 OSV 依赖扫描 ## 设置 ### 1. 安装依赖 ``` npm install ``` ### 2. 配置环境 ``` cp .env.example .env # 编辑 .env 并填写所有必需的值 ``` 有关完整的变量参考,请参见 [docs/ARCHITECTURE.md §8](docs/ARCHITECTURE.md#8-environment-variables)。 ### 3. 配置你的代码库(OSV 扫描) ``` cp config/repos.example.json config/repos.json # 使用您的 repos 和 dependency manifest 路径编辑 config/repos.json ``` ### 4. 配置数据库 ``` # 需要 PostgreSQL superuser 连接字符串 ARGUS_DB_ADMIN_URL="postgresql://postgres:password@localhost:5432/postgres" \ bash scripts/provision-db.sh ``` ### 5. 构建并启动 ``` npm run build pm2 start ecosystem.config.js pm2 save # persist process list across reboots pm2 startup # follow the printed command to enable boot persistence ``` ### 6. 验证 ``` curl -H "Authorization: Bearer " http://localhost:3006/health # → {"status":"ok","service":"argus-mcp","version":"1.0.0"} pm2 status # all 7 processes should show online or stopped (crons) ``` ## MCP 工具 所有工具均可通过 `POST /mcp` 使用 [MCP StreamableHTTP](https://modelcontextprotocol.io) 协议访问。每个请求都需要 Bearer token。 | 工具 | 描述 | |---|---| | `query_threat_news` | 对已摄取的安全文章进行语义搜索 | | `get_news_digest` | 近期安全新闻的摘要 | | `query_cves` | 对 CVE 记录进行语义搜索,支持严重性/利用状态过滤 | | `check_cve` | 通过 ID 直接查找 CVE(例如 `CVE-2024-29041`) | | `scan_dependencies` | 检查依赖清单片段中是否存在已知的 CVE | | `get_stack_exposure` | 标记为影响你已配置仓库的 CVE | | `lookup_ioc` | 在 IOC 数据库中查询 IP、域名、哈希或 URL | | `get_active_campaigns` | 按威胁行为者/攻击活动分组的 IOC 集群 | | `get_security_brief` | 结合这三个层级的每日简报 | | `get_threat_context` | 围绕单一主题进行跨层级语义搜索 | 完整的参数参考:[docs/ARCHITECTURE.md §4](docs/ARCHITECTURE.md#4-mcp-tool-reference) ## Cron Pipeline 六个 crons 用于保持数据库为最新状态。所有任务均由 PM2 管理。 | Cron | 时间表 | 来源 | |---|---|---| | `cron-nvd-delta` | 每天 02:00 | NIST NVD API v2 — 过去 24 小时内修改的 CVE | | `cron-kev-sync` | 每天 04:00 | CISA KEV 目录 — 标记被利用的 CVE | | `cron-osv-scan` | 每天 05:00 | OSV.dev — 标记影响你仓库的 CVE | | `cron-news-rss` | 每天 06:00 | BleepingComputer, Krebs, CISA RSS feeds | | `cron-otx-pulses` | 每 6 小时 | AlienVault OTX — 来自已订阅 pulse 的 IOC | | `cron-ioc-cleanup` | 每周日 03:00 | 删除过期的 IOC(90 天 TTL) | ## 身份验证 所有 endpoint 都需要 Bearer token: ``` Authorization: Bearer ``` 生成 token:`openssl rand -hex 32` 将其在 `.env` 中设置为 `ARGUS_MCP_AUTH_TOKEN`。轮换时,请更新你的 MCP 客户端配置并重启 PM2。 ## 架构 完整的架构、数据模型、embedding 服务详情和 ADRs:[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) ## 安全 有关漏洞披露政策,请参见 [SECURITY.md](SECURITY.md)。 ## 许可证 [MIT](LICENSE) — 版权所有 (c) 2026 [Input Output Labs](https://github.com/input-output-labs)
标签:GNU通用公共许可证, IOC查询, MCP服务器, MITM代理, Node.js, pgvector, PostgreSQL, 威胁情报, 实时处理, 密码管理, 开发者工具, 测试用例, 自动化攻击