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, 威胁情报, 实时处理, 密码管理, 开发者工具, 测试用例, 自动化攻击