Skip to main content
Glama

Security Weekly MCP

MCP Server 架構的資安週報與術語庫管理系統,專為台灣資安社群設計。

功能特色

  • 32 個資安來源 - 自動收集國際與台灣資安新聞(並行抓取優化)

  • 兩階段週報架構 - GitHub Actions 保存原始資料,Claude 分析產生高品質報告

  • WebSearch/WebFetch 整合 - 透過 Claude Code 補充 RSS 無法取得的資訊

  • 歷史週報支援 - 可產生任意時間範圍的歷史報告

  • 術語庫整合 - 自動提取並標註資安術語 (437+ 個術語)

  • 術語審核工具 - 批准/拒絕待審術語的完整工作流程

  • HTML 週報 - 透過 GitHub Pages 發布的線上週報

  • 安全審計 - CI 整合 pip-audit 自動檢測依賴漏洞

  • 健康檢查 - 每月自動驗證 RSS 來源可用性

Related MCP server: Arkana

快速開始

1. 安裝依賴

git clone --recursive https://github.com/your-repo/security-weekly-mcp.git
cd security-weekly-mcp
uv sync

2. 設定 Claude Code MCP

~/.claude/settings.json 加入:

{
  "mcpServers": {
    "security-weekly-tw": {
      "command": "/home/ubuntu/.local/bin/uv",
      "args": [
        "run",
        "--directory",
        "/path/to/security-weekly-mcp",
        "--package",
        "security-weekly-mcp-server",
        "python",
        "-m",
        "security_weekly_mcp.server"
      ]
    }
  }
}

3. 產生週報

在 Claude Code 中輸入:

產生本週資安週報

週報產生架構

本系統採用兩階段架構,解決 RSS 資料揮發性問題:

┌──────────────────────────────────────────────────────────────────────┐
│                    階段 1:自動資料收集                               │
│                    (GitHub Actions 每週一自動執行)                    │
├──────────────────────────────────────────────────────────────────────┤
│                                                                      │
│  weekly-collect.yml (週一 09:00 UTC+8)                              │
│       │                                                              │
│       ▼                                                              │
│  collect_weekly_data.py                                             │
│       │                                                              │
│       ├─ fetch_security_news    → 32 個 RSS 來源 (並行抓取)         │
│       ├─ fetch_vulnerabilities  → NVD + CISA KEV                    │
│       └─ suggest_searches       → 搜尋查詢建議                       │
│       │                                                              │
│       ▼                                                              │
│  output/raw/YYYY-WNN.json  ← Git 自動提交保存                       │
│                                                              │
└──────────────────────────────────────────────────────────────────────┘
                                    │
                                    ▼
┌──────────────────────────────────────────────────────────────────────┐
│                    階段 2:智慧報告產生                               │
│                    (使用者說「產生週報」時執行)                        │
├──────────────────────────────────────────────────────────────────────┤
│                                                                      │
│  load_weekly_data           → 載入已保存的原始資料                   │
│       │                                                              │
│       ▼                                                              │
│  Claude 分析 + WebSearch 補充                                        │
│       │                                                              │
│       ├─ 分析新聞趨勢                                                │
│       ├─ 執行建議搜尋查詢                                            │
│       ├─ extract_terms        → 提取術語                             │
│       └─ validate_terminology → 驗證用詞                             │
│       │                                                              │
│       ▼                                                              │
│  generate_report_draft      → JSON 結構化資料                        │
│       │                                                              │
│       ▼                                                              │
│  output/reports/SEC-WEEKLY-YYYY-WW.json                             │
│  deploy-rss.yml → HTML 頁面發布至 GitHub Pages                       │
│                                                                      │
└──────────────────────────────────────────────────────────────────────┘

方式一:透過 Claude Code (推薦)

# 使用已保存的資料產生週報
產生本週資安週報

# 查看可用的週報資料
列出已收集的週報資料

# 產生歷史週報
產生 2026-W05 的週報

方式二:手動資料收集 + 報告產生

# 1. 手動收集資料 (如果 GitHub Actions 未執行)
uv run python scripts/collect_weekly_data.py --days 7

# 2. 之後在 Claude Code 中說「產生週報」

歷史週報

對於已過期的 RSS 資料,系統會:

  1. 使用 suggest_searches 產生帶時間過濾的搜尋查詢

  2. 透過 WebSearch 搜尋歷史資料

  3. 整合結果並產生報告


專案結構

security-weekly-mcp/
├── packages/
│   ├── glossary/                    # 術語庫 (Git Submodule)
│   │   ├── src/security_glossary_tw/
│   │   ├── terms/                   # 術語 YAML 檔案 (7 個分類)
│   │   ├── meta/                    # 元資料 (categories, style_guide)
│   │   └── pending/                 # 待審術語
│   │
│   └── mcp-server/                  # MCP Server 套件
│       └── src/security_weekly_mcp/
│           ├── server.py            # MCP Server 主程式
│           └── tools/               # MCP 工具模組
│               ├── glossary.py      # 術語庫工具 (8 個)
│               ├── news.py          # 新聞收集工具 (6 個)
│               └── report.py        # 週報工具 (3 個)
│
├── skill/                           # Claude Code Skill
│   └── SKILL.md                     # 自然語言介面定義
│
├── config/
│   ├── sources.yaml                 # 32 個資料來源設定
│   ├── search_templates.yaml        # WebSearch 查詢模板
│   └── writing_style.yaml           # 寫作風格指南
│
├── scripts/
│   ├── collect_weekly_data.py       # 資料收集腳本 (階段 1)
│   └── generate_weekly_report.py    # 直接產生週報 (傳統模式)
│
├── output/
│   ├── raw/                         # 原始資料 (GitHub Actions 自動提交)
│   │   └── YYYY-WNN.json            # 週報原始資料
│   └── reports/                     # 產生的週報
│       └── SEC-WEEKLY-YYYY-WW.md    # Markdown 週報
│
└── .github/workflows/
    ├── ci.yml                       # CI 測試 + 安全審計
    ├── weekly-collect.yml           # 每週一自動收集資料
    ├── weekly-reminder.yml          # 每週五提醒 Issue
    └── monthly-health.yml           # 每月 RSS 健康檢查

MCP 工具清單 (16 個)

術語庫工具 (8 個)

工具

功能

用途

search_term

模糊搜尋術語庫

查詢英/中文術語

get_term_definition

取得完整術語定義

深入了解術語

validate_terminology

驗證用詞規範

檢查禁止用詞

add_term_links

為文本加術語連結

Markdown/HTML 輸出

list_pending_terms

列出待審術語

術語審核流程

extract_terms

從文本自動提取術語

週報產生自動填充

approve_pending_term

批准待審術語

移至正式術語庫

reject_pending_term

拒絕待審術語

刪除待審檔案

新聞收集工具 (6 個)

工具

功能

資料來源

fetch_security_news

收集資安新聞 (並行)

RSS (32 個來源)

fetch_vulnerabilities

收集漏洞資訊

NVD + CISA KEV

list_news_sources

列出新聞來源

sources.yaml

suggest_searches

產生搜尋建議

search_templates.yaml

list_weekly_data

列出已保存週報資料

output/raw/

load_weekly_data

載入指定週的資料

output/raw/YYYY-WNN.json

週報工具 (3 個)

工具

功能

輸出格式

generate_report_draft

產生週報結構化資料

JSON

compile_report_pdf

使用 Typst 編譯 PDF

PDF

list_reports

列出已產生的週報

清單


資料來源 (32 個)

國際資安新聞 (8 個)

來源

優先級

說明

The Hacker News

high

最受歡迎的資安新聞

Krebs on Security

high

Brian Krebs 調查報導

SecurityWeek

medium

企業資安新聞

Dark Reading

medium

深度資安分析

Schneier on Security

high

Bruce Schneier 部落格

Infosecurity Magazine

high

獲獎資安媒體

CyberScoop

high

政策與資安新聞

BleepingComputer

disabled

Cloudflare 防護

台灣來源 (5 個)

來源

優先級

說明

iThome 資安

high

台灣 IT 媒體 (RSS)

TWCERT/CC 資安新聞

critical

台灣 CERT 資安新聞 (RSS)

TWCERT/CC 漏洞公告

critical

台灣 CERT TVN 漏洞公告 (RSS)

TechNews 資安

high

科技新報資安專區 (RSS)

資安人

medium

台灣資安媒體 (WebFetch)

官方公告 (4 個)

來源

優先級

說明

CISA Alerts

critical

美國 CISA 公告

CISA KEV

critical

已知被利用漏洞

CERT/CC Vulnerability Notes

high

卡內基美隆大學 CERT

CIS MS-ISAC Advisories

high

網際網路安全中心

漏洞資料庫 (2 個)

來源

優先級

說明

NVD

high

NIST 漏洞資料庫

GitHub Security Advisories

medium

開源漏洞

威脅情報 (12 個)

來源

優先級

說明

Mandiant Blog

high

Google 威脅情報

Microsoft Security Blog

high

微軟安全部落格

Unit 42

high

Palo Alto 威脅研究

Recorded Future

high

威脅情報領導者

Check Point Research

high

Check Point 研究

CrowdStrike Blog

high

CrowdStrike 威脅情報

SentinelOne Blog

high

SentinelLabs 研究

Securelist (Kaspersky)

high

卡巴斯基 GReAT

Sophos Blog

medium

Sophos 威脅研究

Google Security Blog

medium

Google 安全部落格

WeLiveSecurity (ESET)

medium

ESET 威脅研究

Elastic Security Labs

medium

Elastic 安全研究

廠商公告 (1 個)

來源

優先級

說明

Microsoft MSRC

high

微軟安全回應中心


開發指令

# 安裝依賴
uv sync

# 執行測試
uv run pytest

# 執行測試 (跳過慢速網路測試)
uv run pytest -m "not slow"

# 測試 MCP Server
uv run --package security-weekly-mcp-server python -c \
  "from security_weekly_mcp.server import app; print(f'MCP Server: {app.name}')"

# 啟動 MCP Server (stdio 模式)
uv run --package security-weekly-mcp-server python -m security_weekly_mcp.server

# 開發模式 (MCP Inspector)
uv run --package security-weekly-mcp-server mcp dev \
  packages/mcp-server/src/security_weekly_mcp/server.py

# 更新術語庫 (Git Submodule)
git submodule update --remote packages/glossary

# 列出新聞來源
uv run python -c "
import asyncio
from security_weekly_mcp.tools import news
result = asyncio.run(news.call_tool('list_news_sources', {}))
print(result[0].text)
"

術語庫同步

packages/glossary/ 是 Git Submodule,指向 astroicers/security-glossary-tw

# 初始化 (clone 後)
git submodule update --init --recursive

# 更新術語庫
git submodule update --remote packages/glossary

CI/CD 已設定 submodules: recursive,自動處理。


GitHub Actions

CI 測試 (ci.yml)

  • Python 3.11 / 3.12 矩陣測試

  • Ruff 程式碼檢查

  • MCP Server 載入測試

  • pip-audit 安全審計 - 檢測依賴套件漏洞

週報資料收集 (weekly-collect.yml)

  • 每週一 09:00 (台灣時間) 執行

  • 收集 RSS 新聞、NVD/KEV 漏洞

  • 保存原始 JSON 至 output/raw/

  • Git 自動提交並推送

  • 支援手動觸發 (workflow_dispatch)

週報提醒 (weekly-reminder.yml)

  • 每週五 09:00 (台灣時間) 執行

  • 建立 GitHub Issue 提醒產生週報

  • 列出本週收集的資料統計

RSS 健康檢查 (monthly-health.yml)

  • 每月 1 日 執行

  • 驗證所有 RSS 來源可用性

  • 產生健康報告至 GitHub Summary


LINE Notify 整合

當週報部署到 GitHub Pages 時,自動發送 LINE 通知給訂閱者。

設定步驟

  1. 建立 LINE Notify 服務

    • 前往 LINE Notify

    • 點擊「產生權杖」

    • 選擇要接收通知的聊天室(個人或群組)

    • 複製產生的 Access Token

  2. 設定 GitHub Secret

    • 前往專案的 Settings > Secrets and variables > Actions

    • 點擊「New repository secret」

    • Name: LINE_NOTIFY_TOKEN

    • Value: 貼上步驟 1 取得的 Access Token

  3. 完成! 之後每次週報發布時,LINE 會自動收到通知:

📰 台灣資安週報 2026-W08 已發布

本週摘要:
• 3 起資安事件
• 5 個高風險漏洞
• 威脅等級:中

閱讀完整報告:
https://glossary.astroicers.link/weekly/reports/SEC-WEEKLY-2026-W08.html

手動發送測試

# 設定環境變數
export LINE_NOTIFY_TOKEN="your-token-here"

# 預覽訊息(不實際發送)
uv run python scripts/notify_line.py --latest --dry-run

# 發送通知
uv run python scripts/notify_line.py --latest

相關專案

專案

說明

security-glossary-tw

術語庫獨立倉庫

Claude Code Skill

自然語言介面(位於 skill/ 目錄)

Claude Code Skill 設定

Skill 已包含在本專案的 skill/ 目錄中,使用 symlink 連結:

# 建立 symlink(如果尚未存在)
ln -s /path/to/security-weekly-mcp/skill ~/.claude/skills/security-weekly-tw

授權

MIT License

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/astroicers/security-weekly-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server