哪吒网络安全MCP"

admin 2026-10-18 16:42:37 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

哪吒网络安全MCP

原创

钟智强
钟智强

哪吒网络安全

2026年7月8日 11:24
马来西亚

在小说阅读器读本章

去阅读

CVE 漏洞情报  ·  MCP 服务器  ·  部署实战 NezhaCyberMCP 部署实战指南 让 AI 编程助手秒查 CVE 漏洞情报的 MCP 服务器

从零到一搭建 CVE 漏洞情报 MCP 服务器,打通 Claude Code / Cursor / VS Code Copilot 实时安全查询链路

基于 Go 语言的生产级 MCP 服务器  ·  本地开发 + 云端 Lambda 全场景

前言

在日常开发中,你是否遇到过这样的场景:AI 编程助手帮你生成了依赖配置,却没人告诉你这个第三方库是否存在已知漏洞?等安全扫描在 CI/CD 阶段才报出来,修复成本已经翻了好几倍。

NezhaCyberMCP 就是来解决这个问题的——它是一个基于 Go 语言的生产级 MCP(Model Context Protocol)服务器,将 AI 助手与持续更新的 CVE 漏洞数据库桥接起来,让你在编码阶段就能实时查询最新漏洞、按厂商/产品/CPE 搜索、做趋势分析、把软件资产清单与 CVE 匹配,从源头暴露供应链安全风险。

本文将手把手教你从零部署 NezhaCyberMCP,覆盖本地开发与云端 Lambda 两种场景。

一、项目简介与开发初衷

1.1 项目概览

属性 信息
项目名称 NezhaCyberMCP
作者 ctkqiang
开源协议 MIT License (Copyright 2026)
GitHub 仓库 https://www.github.com/ctkqiang/NezhaCyberMCP
官方网站 www.nezhacyber.xin/zh
编程语言 Go
提交历史 46 次提交,最新提交 2026 年 7 月 7 日

1.2 它是什么

NezhaCyberMCP 的本质是一个 MCP(Model Context Protocol)服务器。它从 CIRCL、MyCERT 和 GitHub Advisory Database 三大数据源聚合安全公告数据,通过 MCP JSON-RPC 2.0 协议直接服务于 AI 助手。

目前支持的 AI 客户端包括:

▪Claude Code(Anthropic)

▪Cursor

▪VS Code Copilot

▪OpenAI Codex

▪Trae IDE

简单来说,配置好 NezhaCyberMCP 后,你可以在 AI 助手中直接提问“最近有哪些 CRITICAL 级别的 CVE?”,AI 会自动调用 MCP 工具查询并返回真实漏洞数据。

1.3 解决什么问题

传统的漏洞管理流程是:开发 → 构建 → 安全扫描 → 发现漏洞 → 修复 → 重新构建。漏洞发现得太晚,修复成本高。

NezhaCyberMCP 将这个链路前置:编码阶段 → AI 助手实时查询 CVE → 即时告警 → 当场修复。它让安全意识嵌入到开发最前端,而不是等到 CI/CD 阶段才发现问题。

1.4 设计理念:非阻塞启动

这是 NezhaCyberMCP 最核心的设计决策之一——MCP 服务器先启动完成握手,数据库在后台热注入。

这意味着:

1.  AI 助手连接 MCP 服务器时零等待——服务器瞬间就绪,立即响应握手请求

2.  数据库初始化、表迁移、首次数据同步在后台 goroutine 中异步执行

3.  数据库就绪后通过 SetDB() 热注入到 MCP 服务器,之后所有工具调用即可查询完整数据

这种设计保证了用户体验:无论数据库同步需要多长时间,AI 助手的连接和基础功能都不受影响。

二、架构说明

2.1 六层架构总览

NezhaCyberMCP 采用清晰的六层架构,从上到下依次是 AI 客户端层、传输层、MCP 协议层、持久化层、数据库层和数据摄入层:

AI Client 层 MCP JSON-RPC 2.0 Claude / Cursor / VS Code / Codex / Trae

▼

Transport 层 传输层 stdio (local)  

▼

MCP Protocol 层 协议 + 调度 MCPServer + 18 Tools (mcp.go) Actions Dispatcher — actions.go 查询路由

▼

Persistence 层 Repository Pattern GORM repositories (3 tables) Upsert / batch write / query

▼

Database 层 持久化存储 PostgreSQL / MySQL / SQLite Amazon Aurora DSQL (AWS)

▼

Data Ingestion 层 + Scheduling CirclService / GithubService / MycertService cron/v3 定时调度

▼

External Data Sources 外部数据源 CIRCL API / GitHub API MyCERT Portal (HTML scraping)
📷  截图占位  六层架构图,可使用上方图示或 PlantUML 渲染后的 PNG。

各层职责说明:

▪AI Client 层:各类支持 MCP 协议的 AI 编程助手,通过 JSON-RPC 2.0 发起工具调用请求

▪Transport 层:本地模式使用 stdio(进程管道通信,无网络暴露);Lambda 云端模式使用 SSE over HTTP(监听 /sse 端点)

▪MCP Protocol 层:核心调度层,包含 MCPServer 实例和 18 个已注册工具,actions.go 负责查询路由分发

▪Persistence 层:基于 GORM 的 Repository 模式,管理三张数据表,提供 Upsert、批量写入和查询能力

▪Database 层:支持 PostgreSQL(推荐生产)、MySQL、SQLite(本地开发)和 Amazon Aurora DSQL(AWS 云端)

▪Data Ingestion 层:三个数据源服务 + cron/v3 定时调度,负责从外部拉取并写入漏洞数据

2.2 通信方式:MCP JSON-RPC 2.0

MCP 协议基于 JSON-RPC 2.0 标准。这是一种请求-响应模型——AI 助手按需调用工具,服务器返回结果。不涉及心跳机制,通信完全由 AI 助手端驱动。

本地模式(stdio):MCP 服务器作为子进程运行,通过标准输入/输出(stdin/stdout)与 AI 助手通信。无网络端口暴露,安全性最高,适合 Claude Desktop 等本地场景。

云端模式(SSE HTTP):在 AWS Lambda 上运行,通过 Server-Sent Events(SSE)over HTTP 提供服务。AI 助手连接 /sse 端点发起请求,适合团队共享或云端部署场景。

2.3 非阻塞启动流程

这是理解 NezhaCyberMCP 设计的关键。启动流程如下:

● 启动时序 main()  │  ├─ NewMCPServer(nil)          ← 立即启动,不需要 DB  │     registerTools()  │     registerResources()  │     registerPrompts()  │  ├─ goroutine: BackgroundInit()  │     InitDatabase(ctx, cfg)  │     mcpServer.SetDB(db)      ← 就绪后热注入  │     MigrateAll(ctx)  │     RunNow(ctx)              ← 立即首次同步  │     advisoryJob.Start(ctx)   ← 调度 cron  │  └─ mcpServer.Run(ctx)         ← 阻塞 stdio 循环
📷  截图占位  非阻塞启动流程时序图,可使用项目 docs/ 目录下的 sequence.puml 渲染。

流程解读:

1.  main() 首先调用 NewMCPServer(nil)——传入 nil 表示数据库尚未就绪,但 MCP 服务器立即启动并注册所有工具、资源和提示词

2.  同时启动一个后台 goroutine BackgroundInit(),依次完成数据库初始化 → 热注入 DB → 表迁移 → 首次数据同步 → 启动 cron 定时调度

3.  主线程进入 mcpServer.Run(ctx),阻塞在 stdio 循环上等待 AI 助手的请求

这个设计确保了 AI 助手连接时的零等待体验。

2.4 三种运行模式

模式 触发条件 传输方式 典型用途
Local IS\_LOCAL=true stdio (JSON-RPC 2.0) Claude Desktop,本地开发调试
Lambda Sync EventBridge cron 触发 — 定时数据同步任务
Lambda MCP MCP\_HTTP\_MODE=true SSE over HTTP (/sse) 云端 MCP 端点,团队共享

▪Local 模式:最常用,适合个人开发者在本地运行,配合 Claude Desktop 或 Claude Code 使用

▪Lambda Sync 模式:不提供 MCP 服务,纯粹用于定时同步数据到云端数据库,适合生产环境中保持漏洞数据持续更新

▪Lambda MCP 模式:在云端提供 MCP 服务端点,多个 AI 客户端可以共享同一个漏洞数据库

2.5 三大数据源

NezhaCyberMCP 从三个安全情报源聚合数据:

数据源 端点 认证方式 同步频率
CIRCL CVE Search API vulnerability.circl.lu/api/ 无需认证 每 3 小时(cron 可配)
GitHub Advisory Database api.github.com/advisories Bearer Token (GITHUB\_TOKEN) 开关控制,默认关闭
MyCERT Advisory Portal www.mycert.org.my 无需认证(HTML 抓取) 开关控制,默认开启

CIRCL 分页算法细节:每页拉取 100 条记录,请求间隔 500ms,最多 5 次重试,采用 2 秒指数退避策略。这保证了大量数据拉取时的稳定性和对上游 API 的友好性。

2.6 18 个 MCP 工具

NezhaCyberMCP 注册了 18 个 MCP 工具,分为四类:

查询工具(9 个):

工具名 功能
get\_cve 根据 CVE ID 获取详细信息
search\_cves 搜索 CVE 漏洞
search\_by\_cpe 按 CPE(通用平台枚举)搜索
bulk\_get 批量获取多个 CVE
filter\_by\_severity 按严重级别过滤
get\_cwe 获取 CWE(弱点枚举)信息
get\_references 获取参考链接
related\_cves 查询关联 CVE
whats\_new 获取最新漏洞

分析工具(4 个):

工具名 功能
vuln\_trends 漏洞趋势分析
top\_vendors 热门厂商排行
top\_products 热门产品排行
severity\_distribution 严重级别分布统计

资产匹配工具(1 个):

工具名 功能
match\_inventory 将软件资产清单与 CVE 匹配

占位工具(4 个,尚未实现):

get\_kev\_status、get\_epss、prioritize、match\_sbom——这些工具已在协议层注册,但功能尚未实现,为未来扩展预留。

三、环境要求与前置准备

3.1 操作系统要求

操作系统 最低版本 备注
macOS 12 Monterey+ 原生支持,推荐
Linux Ubuntu 20.04+ / Debian 11+ 服务器部署推荐
Windows 10 / 11 需通过 WSL2 运行

3.2 软件依赖版本

软件 最低版本 用途
Go 1.22+(安装指南)/ 1.26.1+(开发) 编译构建 MCP 服务器
Git 2.x 克隆仓库
Node.js 18 LTS+ 运行 Claude Code、Codex CLI、MCP Inspector
npm 9+ 包管理,运行 MCP Inspector
数据库 PostgreSQL 推荐 也支持 MySQL / SQLite / Aurora DSQL

3.3 数据库准备

NezhaCyberMCP 支持四种数据库:

▪PostgreSQL(推荐生产环境):功能完整,性能稳定

▪MySQL:广泛使用,兼容性好

▪SQLite:适合本地开发快速测试,无需额外安装数据库服务

▪Amazon Aurora DSQL:AWS 云端无服务器数据库,适合 Lambda 部署

本地快速准备 PostgreSQL(以 macOS Homebrew 为例):

● bash # 安装 PostgreSQL brew install postgresql@16   # 启动服务 brew services start postgresql@16   # 创建数据库和用户 createdb nezha\_cyber
📷  截图占位  PostgreSQL 安装与数据库创建成功后的终端输出。

3.4 端口说明

▪本地 stdio 模式:无需开放任何网络端口,通信通过进程管道完成

▪SSE 模式:监听 PORT 环境变量指定的端口,默认 8080

3.5 前置检查清单

在开始安装前,建议逐项确认:

● bash # 检查 Go 版本 go version                 # 预期: go version go1.22+ ...   # 检查 Git 版本 git --version              # 预期: git version 2.x.x   # 检查 Node 版本 node --version             # 预期: v18.x.x 或更高   # 检查 npm 版本 npm --version              # 预期: 9.x.x 或更高   # 检查 PostgreSQL 连接(如果使用 PG) psql -d nezha\_cyber -c \"SELECT version();\"
📷  截图占位  所有前置依赖版本检查通过的终端截图。

四、逐步安装配置教程

4.1 第一步:克隆仓库

● bash # 克隆 NezhaCyberMCP 仓库 git clone https://github.com/ctkqiang/NezhaCyberMCP.git   # 进入项目目录 cd NezhaCyberMCP
📷  截图占位  git clone 成功后的终端输出,显示克隆进度和完成信息。

4.2 第二步:配置环境变量

项目根目录下有 .env.example 模板文件,复制一份进行编辑:

● bash # 复制环境变量模板 cp .env.example .env

编辑 .env 文件,根据你的实际环境填写配置:

● bash · .env # ============================================ # 运行模式配置 # ============================================ # true = 本地模式(启用 cron 定时同步 + stdio 通信) IS\_LOCAL=true   # ============================================ # 数据库配置(PostgreSQL 示例) # ============================================ DB\_HOST=localhost          # 数据库主机地址 DB\_PORT=5432               # 数据库端口 DB\_USER=postgres           # 数据库用户名 DB\_PASSWORD=your\_password  # 数据库密码 DB\_NAME=nezha\_cyber        # 数据库名称 DB\_TIMEZONE=Asia/Shanghai  # 时区(cron 调度使用)   # ============================================ # 可选:GitHub Advisory Database 同步 # ============================================ # 填入 GitHub PAT 即可启用 GitHub Advisory 数据源 # 不填则跳过 GitHub 数据同步(默认关闭) GITHUB\_TOKEN=ghp\_xxxxxxxxxxxx   # ============================================ # 日志配置 # ============================================ # 可选值: DEBUG / INFO / WARN / ERROR / VERBOSE LOG\_LEVEL=INFO
📷  截图占位  编辑 .env 文件的编辑器界面截图。

关键配置说明:

▪IS\_LOCAL=true:本地模式必填,启用 stdio 通信和 cron 定时同步

▪DB\_\* 系列变量:根据你的数据库实际信息填写

▪GITHUB\_TOKEN:可选,如果你想同步 GitHub Advisory Database 数据,需要提供 GitHub PAT(Personal Access Token)。不填则该数据源默认关闭

▪LOG\_LEVEL:开发调试时可设为 DEBUG,生产环境建议 INFO

4.3 第三步:构建二进制

● bash # 构建项目,产出可执行文件 make build

构建成功后,会在项目根目录下生成 ./advisory 可执行文件。

📷  截图占位  make build 成功的终端输出,显示编译过程和最终生成的 advisory 文件。

如果你更喜欢手动构建(不使用 Makefile):

● bash # 手动构建(等价于 make build) go build -o advisory .

4.4 第四步:启动 MCP Inspector 验证

MCP Inspector 是官方提供的 MCP 服务器调试工具,可以直观地查看注册的工具、资源和提示词:

● bash # 启动 MCP Inspector(会自动打开浏览器界面) make run # 等价于: npx @modelcontextprotocol/inspector ./advisory
📷  截图占位  MCP Inspector 浏览器界面:左侧显示 nezha-cyber 连接状态,右侧显示已注册的 18 个工具列表。

你也可以直接运行二进制文件(不通过 Inspector):

● bash # 直接运行(stdio 模式,等待 AI 助手连接) ./advisory

如果遇到权限问题:

● bash # 赋予执行权限 chmod +x ./advisory   # 再次运行 ./advisory

4.5 第五步:配置 AI 客户端

▸ 4.5.1 Claude Desktop 配置

编辑 Claude Desktop 的 MCP 配置文件:

▪macOS:~/Library/Application Support/Claude/claude\_desktop\_config.json

▪Windows:%APPDATA%\Claude\claude\_desktop\_config.json

● json {   \"mcpServers\": {     \"nezha-cyber\": {       \"command\": \"/absolute/path/to/advisory\",       \"env\": {         \"IS\_LOCAL\": \"true\",         \"DB\_HOST\": \"localhost\",         \"DB\_PORT\": \"5432\",         \"DB\_USER\": \"postgres\",         \"DB\_PASSWORD\": \"your\_password\",         \"DB\_NAME\": \"nezha\_cyber\"       }     }   } }
⚠️  重要提醒 command 字段必须使用绝对路径,不能使用相对路径或 ~ 符号,否则 Claude Desktop 会报 “MCP server not connected” 错误。
📷  截图占位  Claude Desktop 配置文件编辑界面,及重启后 Settings → Developer 中 nezha-cyber 已连接。

▸ 4.5.2 Claude Code 配置

Claude Code 支持通过命令行快速注册 MCP 服务器:

● bash # 通过命令行注册 nezha-cyber MCP 服务器 claude mcp add nezha-cyber ./advisory

注册后,Claude Code 会自动在当前项目中加载该 MCP 服务器。

📷  截图占位  claude mcp add 命令执行成功的终端输出。

▸ 4.5.3 Trae IDE 配置

Trae IDE 同样支持 MCP 协议。在 Trae 的 MCP 配置文件中添加与 Claude Desktop 类似的配置即可。找到 Trae 的设置 → MCP Servers,添加新的服务器配置,command 指向你的 advisory 二进制路径,env 填入相应的环境变量。

▸ 4.5.4 OpenAI Codex 配置

OpenAI Codex CLI 也支持 MCP。在 Codex 的配置文件中添加 nezha-cyber 服务器条目,配置方式与上述类似:指定 command 为 advisory 二进制的绝对路径,在 env 中设置数据库连接参数。

📷  截图占位  各 IDE 中 MCP 服务器配置完成的界面截图。

4.6 第六步:验证安装

配置完成后,在你的 AI 助手中尝试以下提问:

💬  向 AI 助手提问 What are the latest CRITICAL CVEs?

如果一切正常,AI 助手会自动调用 whats\_new 工具,查询数据库中最新发布的 CRITICAL 级别漏洞,并返回真实的 CVE 编号、描述、严重级别等信息。

📷  截图占位  在 Claude Desktop 中提问 “What are the latest CRITICAL CVEs?” 后,AI 调用 whats\_new 返回漏洞数据的对话截图。

你也可以尝试其他查询:

💬  更多示例提问 # 按厂商搜索 Search for CVEs related to Apache   # 按 CPE 搜索 Find vulnerabilities for cpe:2.3:a:nginx:nginx:1.21.0   # 趋势分析 Show me the vulnerability trends for the last 30 days   # 资产匹配 Match my software inventory against known CVEs

4.7 第七步:Lambda 部署(可选:云端场景)

如果你需要在 AWS Lambda 上部署 NezhaCyberMCP,项目提供了专门的构建目标:

● bash # 构建 x86\_64 架构的 Lambda 包 make lambda            # 产出: bootstrap.zip   # 构建 arm64 Graviton2 架构的 Lambda 包(推荐,成本更低性能更好) make lambda-arm64      # 产出: bootstrap-arm64.zip
📷  截图占位  make lambda-arm64 构建成功的终端输出。

构建完成后,将 bootstrap.zip(或 bootstrap-arm64.zip)上传到 AWS Lambda 函数。根据你的需求配置:

▪数据同步模式:通过 EventBridge cron 定时触发,不设置 MCP\_HTTP\_MODE

▪MCP 服务模式:设置 MCP\_HTTP\_MODE=true,Lambda 会启动 SSE HTTP 服务器监听 /sse 端点

五、源码结构简要导读

5.1 技术栈一览

组件 技术选型 说明
编程语言 Go 1.26.1+(构建需 1.22+) 高性能、并发友好
MCP 协议 go-sdk/mcp JSON-RPC 2.0 实现
ORM GORM 支持 postgres/mysql/sqlite 驱动
AWS SDK aws-sdk-go-v2 Aurora DSQL、Secrets Manager、S3
定时任务 robfig/cron/v3 可配置的 cron 表达式
HTML 解析 golang.org/x/net/html 用于 MyCERT Portal 数据抓取
Landing 页面 Vue/Nuxt 独立部署的官网页面
架构图 PlantUML 时序图和流程图渲染

5.2 目录结构

● 目录树 NezhaCyberMCP/ ├── main.go                    # 程序入口,运行时模式选择(Local/Lambda) ├── go.mod                     # Go 模块定义与依赖声明 ├── Makefile                   # 构建/测试/lint/Lambda 打包命令集 ├── .env.example               # 环境变量模板 ├── docs/ │   ├── en/                    # 英文文档 │   │   ├── flow.puml          # 流程图(PlantUML 源文件) │   │   └── sequence.puml      # 时序图(PlantUML 源文件) │   └── zh/                    # 中文文档 │       ├── flow.puml │       └── sequence.puml ├── out/docs/                  # 渲染后的架构图/时序图 PNG ├── internal/ │   ├── functions/ │   │   └── actions.go         # MCP 工具实现 & DB 查询逻辑(核心) │   ├── job/ │   │   └── advisory\_job.go    # cron 调度、数据库迁移、同步编排 │   ├── model/                 # GORM 数据模型(3 个表对应 3 个模型) │   ├── repository/            # 仓库层(3 个仓库,CRUD 操作) │   ├── services/ │   │   ├── mcp.go             # MCP 服务器核心(工具注册、协议处理) │   │   ├── circl.go           # CIRCL 数据源服务 │   │   ├── github.go          # GitHub Advisory 数据源服务 │   │   ├── mycert.go          # MyCERT 数据源服务 │   │   └── database.go        # 数据库初始化与连接管理 │   └── utilities/ │       ├── aws.go             # AWS 工具(凭证验证、DSQL 连接等) │       └── logger.go          # 日志工具 ├── test/                      # 测试文件 └── landing/                   # Vue/Nuxt 官网 Landing 页面(独立部署)

5.3 关键模块解读

▸ main.go —— 程序入口

入口文件负责运行时模式选择。根据环境变量 IS\_LOCAL、MCP\_HTTP\_MODE 等判断当前运行在哪种模式下,然后走不同的初始化路径。核心就是前文提到的非阻塞启动流程:先启动 MCP 服务器,再在后台 goroutine 中完成数据库初始化和数据同步。

▸ internal/services/mcp.go —— MCP 服务器核心

这是 MCP 协议的核心实现文件,负责:

▪创建 MCPServer 实例

▪注册 18 个工具(registerTools())

▪注册资源和提示词

▪处理 JSON-RPC 2.0 请求/响应

▪通过 SetDB() 接收热注入的数据库实例

▸ internal/functions/actions.go —— 工具实现与查询路由

所有 18 个 MCP 工具的具体实现都在这里。当 AI 助手调用某个工具时,actions.go 负责将请求路由到对应的查询逻辑,从数据库中检索数据并返回结构化结果。这是连接 MCP 协议层和持久化层的桥梁。

▸ internal/job/advisory\_job.go —— 调度与同步编排

负责后台数据同步的生命周期管理:

▪数据库表迁移(MigrateAll)

▪首次立即同步(RunNow)

▪cron 定时调度启动(advisoryJob.Start)

▪协调三个数据源服务的同步时序

▸ circl.go / github.go / mycert.go —— 数据源服务

三个数据源各有独立的服务文件,分别处理:

▪circl.go:调用 CIRCL API,实现分页拉取(每页 100 条、500ms 间隔、5 次重试、指数退避)

▪github.go:调用 GitHub Advisory API,使用 Bearer Token 认证

▪mycert.go:抓取 MyCERT Portal HTML 页面并解析(使用 golang.org/x/net/html)

▸ internal/model/ —— 数据模型(三张表)

项目使用三张 GORM 模型表分别存储三个数据源的数据:

circl\_cves 表(CIRCL 数据):

字段 说明
cve\_id (PK) CVE 编号,主键
state 漏洞状态
assigner 分配者
title 标题
description 描述
severity 严重级别
cwe\_ids CWE 编号列表
affected 受影响产品
references 参考链接
date\_published 发布日期

github\_advisories 表(GitHub Advisory 数据):

字段 说明
ghsa\_id (PK) GHSA 编号,主键
cve\_id 关联的 CVE 编号
summary 摘要
description 描述
severity 严重级别
type 类型
vulnerabilities 漏洞详情
published\_at 发布时间

mycert\_advisories 表(MyCERT 数据):

字段 说明
advisory\_id (PK) 公告编号,主键
title 标题
category 分类
summary 摘要
detail\_url 详情链接
full\_content 完整内容
published\_at 发布时间

5.4 Makefile 目标速查

目标 命令 说明
make build go build -o advisory . 构建本地二进制,产出 ./advisory
make run npx @…/inspector ./advisory 启动 MCP Inspector 调试
make lambda 交叉编译 GOOS=linux amd64 构建 Lambda x86\_64 包,产出 bootstrap.zip
make lambda-arm64 交叉编译 GOOS=linux arm64 构建 Lambda arm64 包,产出 bootstrap-arm64.zip
make test go test ./test/... -v -count=1 运行测试套件
make lint golangci-lint run 代码静态检查

六、常见问题与排错(FAQ)

▸ Q1:make build 报错 “go: command not found”

原因:Go 语言环境未安装或未添加到系统 PATH 中。

解决方案

● bash # 方式一:macOS 使用 Homebrew 安装 brew install go   # 方式二:从官方下载安装包 # 访问 https://golang.org/dl/ 下载对应平台的安装包 # 安装后确保 /usr/local/go/bin(或对应路径)在 PATH 中   # 验证安装 go version                 # 应输出: go version go1.22+ ...

▸ Q2:运行 ./advisory 报 “Permission denied”

原因:二进制文件没有执行权限。

解决方案

● bash # 赋予执行权限 chmod +x ./advisory   # 再次运行 ./advisory

▸ Q3:Claude Code / Desktop 显示 “MCP server not connected”

原因:MCP 配置文件中 command 字段使用了相对路径或 ~ 符号。

确保配置文件中 command 使用绝对路径。例如:

● json {   \"mcpServers\": {     \"nezha-cyber\": {       \"command\": \"/Users/yourname/projects/NezhaCyberMCP/advisory\",       \"env\": { ... }     }   } }

获取绝对路径的方法:

● bash # 在项目目录下执行 realpath ./advisory # 输出: /Users/yourname/projects/NezhaCyberMCP/advisory

如果你使用 Claude Code,也可以通过命令行重新注册:

● bash claude mcp add nezha-cyber ./advisory

▸ Q4:数据库连接失败

原因:数据库服务未启动,或连接参数配置错误。

排查步骤

● bash # 1. 检查数据库服务是否运行 # macOS (Homebrew) brew services list

确保 .env 中 DB\_HOST、DB\_PORT、DB\_USER、DB\_PASSWORD、DB\_NAME 与实际数据库配置一致。

▸ Q5:MCP Inspector 中工具列表为空

原因:MCP 服务器启动失败或工具注册出错。

排查步骤

● bash # 1. 将日志级别调为 DEBUG 重新启动 LOG\_LEVEL=DEBUG ./advisory   # 2. 检查输出日志中是否有错误信息 #    特别关注数据库初始化和工具注册阶段的日志

▸ Q6:GitHub Advisory 数据没有同步

原因:GITHUB\_TOKEN 环境变量未配置或 Token 无效。GitHub Advisory 数据源默认是关闭的。

解决方案

1.  在 .env 文件中填入有效的 GitHub Personal Access Token

2.  确保 Token 有读取 Advisory Database 的权限

3.  重启 MCP 服务器

● bash # 生成 GitHub PAT: https://github.com/settings/tokens # 在 .env 中配置 GITHUB\_TOKEN=ghp\_your\_valid\_token\_here

▸ Q7:数据同步很慢或超时

原因:CIRCL API 数据量大,首次同步需要拉取全量数据。

说明:这是正常现象。CIRCL 分页算法每页 100 条,请求间隔 500ms,最多 5 次重试,2 秒指数退避。首次全量同步可能需要较长时间,后续增量同步会快很多。得益于非阻塞启动设计,同步期间 AI 助手仍可正常连接和使用已同步的数据。

▸ Q8:Lambda 部署后 MCP 端点无响应

原因:Lambda 函数未配置 MCP\_HTTP\_MODE=true,或 API Gateway / Function URL 未正确路由 /sse 端点。

解决方案

1.  确认 Lambda 环境变量中 MCP\_HTTP\_MODE=true

2.  确认 IS\_LOCAL=false(Lambda 模式不应启用本地模式)

3.  如果使用 Aurora DSQL,确认 IS\_AWS=true 并配置好 AWS 凭证

4.  检查 Lambda 日志(CloudWatch Logs)排查具体错误

七、总结与扩展建议

7.1 总结

NezhaCyberMCP 通过 MCP 协议将 CVE 漏洞情报能力直接注入 AI 编程助手的工作流,实现了从“事后扫描”到“编码时感知”的安全左移。它的核心价值在于:

1.  实时性:cron 定时同步保证漏洞数据持续更新(CIRCL 默认每 3 小时)

2.  零侵入:通过 MCP 协议无缝集成现有 AI 助手,无需改变开发习惯

3.  非阻塞:服务器秒级就绪,数据库后台热注入,AI 助手零等待

4.  多数据源:聚合 CIRCL、GitHub Advisory、MyCERT 三大情报源

5.  多数据库:支持 PostgreSQL / MySQL / SQLite / Aurora DSQL,灵活适配不同部署场景

6.  安全设计:无硬编码凭证、幂等写入、WithContext 防 goroutine 泄漏

7.2 生产部署建议

维度 建议
数据库 生产环境推荐 PostgreSQL,开启连接池,配置定期备份
部署方式 团队共享推荐 AWS Lambda + Aurora DSQL;个人使用本地 stdio 即可
Lambda 架构 优先选择 arm64 Graviton2,性价比更高
数据同步 生产环境建议拆分 Lambda Sync 模式单独运行同步任务,MCP 服务模式专注查询
GitHub Token 生产环境建议启用 GitHub Advisory 数据源以获得更全面的漏洞覆盖
日志级别 生产环境设为 INFO,排查问题时临时切换 DEBUG

7.3 安全加固建议

NezhaCyberMCP 本身在安全设计上已经做得很到位:

▪无硬编码凭证:所有敏感信息从环境变量读取,不落盘

▪AWS 凭证验证:IsRunInAWS() 校验密钥非空且不含占位符

▪无 PII 存储:仅存储公开的 CVE 数据,不涉及个人隐私信息

▪goroutine 安全:所有查询使用 WithContext(ctx) 防止 goroutine 泄漏

▪幂等写入:OnConflict{UpdateAll:true} + CreateInBatches(100) + 事务,保证数据一致性

▪网络隔离:stdio 模式无网络暴露;SSE 模式监听 localhost,由 AWS 处理 TLS

在此基础上,生产环境还可以考虑:

▪为 PostgreSQL 配置 TLS 连接

▪使用 AWS Secrets Manager 管理数据库凭证(项目已内置 aws-sdk-go-v2 支持)

▪为 SSE 端点配置 API Gateway 鉴权

▪定期审计环境变量配置,避免凭证泄露

7.4 后续可扩展方向

NezhaCyberMCP 目前已注册但尚未实现的 4 个占位工具指明了未来方向:

▪get\_kev\_status:集成 CISA KEV(Known Exploited Vulnerabilities)目录,标记已被主动利用的漏洞

▪get\_epss:集成 EPSS(Exploit Prediction Scoring System),提供漏洞被利用的概率评分

▪prioritize:基于 KEV + EPSS + CVSS 多维度优先级排序,帮助安全团队聚焦最紧急的漏洞

▪match\_sbom:支持 SBOM(软件物料清单)标准格式输入,实现更精准的供应链漏洞匹配

此外,社区还可以考虑:

▪增加更多区域安全公告数据源(如 CNVD、CNNVD)

▪支持 Webhook 通知,新漏洞入库时主动推送告警

▪提供漏洞去重与关联分析,跨数据源合并同一漏洞的多源信息

▪集成到 CI/CD 流水线,构建时自动检查依赖漏洞

🔗 项目链接 GitHub 仓库 github.com/ctkqiang/NezhaCyberMCP 官方网站  www.nezhacyber.xin/zh 开源协议  MIT License 如果这篇文章对你有帮助,欢迎点赞收藏,也欢迎到 GitHub 仓库给作者 ctkqiang 一个 Star ⭐


哪吒网络安全MCP" 网络安全文章

哪吒网络安全MCP"

哪吒网络安全MCP是一个基于Go语言的开源MCP服务器,旨在将AI编程助手与CVE漏洞数据库桥接,使开发者在编码阶段即可实时查询漏洞信息。它聚合CIRCL、GitHubAdvisoryDatabase和MyCERT三大数据源,提供18个工具,支持本地stdio和云端Lambda两种部署模式。其核心设计是非阻塞启动,确保AI助手连接零等待。该项目可有效将安全检测左移,降低修复成本。
BeyondTrust修复高危认证绕过:远程支持平台,必须按关键资产管理" 网络安全文章

BeyondTrust修复高危认证绕过:远程支持平台,必须按关键资产管理"

BeyondTrustRemoteSupport与PrivilegedRemoteAccess平台存在多项高危漏洞,包括CVE-2026-40138等Critical级别认证绕过问题,CVSSv4评分9.2。攻击者可能在特定配置下未授权访问设备。官方已发布修复补丁,自托管客户需升级至RS/PRA25.3.3及以上版本。企业应优先修补自托管实例,收紧管理面暴露,并将远程运维平台纳入关键资产管理。
DEBULL滥用设备代码登录:MFA不是“点一下就安全”的护身符" 网络安全文章

DEBULL滥用设备代码登录:MFA不是“点一下就安全”的护身符"

文章分析了DEBULL工具链滥用Microsoft365设备代码流程进行钓鱼攻击的手法。攻击者利用合法OAuth机制,诱导用户在真实登录页面输入攻击者提供的代码,从而绕过MFA获取会话令牌。文章指出此类攻击针对高价值岗位,并建议企业限制设备代码流程、审计异常授权、监控邮箱行为,同时提醒用户不要输入他人提供的设备代码。MFA是基础但非终点,身份安全需转向持续授权合理性判断。
评论:0   参与:  0