mcpField
P
Patch Tuesday

Patch Tuesday

远程服务
pypi.org云与基础设施511 周前更新

关于 Patch Tuesday

Patch Tuesday 是一个 Python MCP 服务,用于查询来自公开 MSRC 数据源的 Microsoft 安全更新。它支持按发布批次和产品进行分诊,并提供 CVE、KB、利用情况、EPSS 与 CISA KEV 信息,面向安全及 IT 团队。

主要功能

  1. 01查询每月 MSRC 发布
  2. 02按产品、严重性和 CWE 筛选
  3. 03关联 KB 文章与 CVE
  4. 04补充 EPSS 和 CISA KEV 信息
  5. 05查看缓解措施和已知问题
  6. 06将分诊结果导出为 Markdown 或 CSV

适用场景

  1. 01汇总某月的 Microsoft 补丁
  2. 02确定漏洞修复优先级
  3. 03确认 KB 是否需要重启
  4. 04准备补丁分诊简报

MCP 相关

通过 `msrc_search` 工具向 MCP 客户端提供 Microsoft 安全更新查询。它读取公开的 MSRC 数据,无需 API 密钥。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://patch-tuesday-mcp.agreeabledesert-d0b8e491.eastus2.azurecontainerapps.io/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
pypipatch-tuesday-mcp0.9.1

工具

详细介绍

免责声明:这是一个独立构建的项目,并非 Microsoft 官方工具或服务。

Patch Tuesday MCP Server

patch-tuesday-mcp MCP server PyPI MCP Registry License: MIT

mcp-name: io.github.jonnybottles/patch-tuesday

向你的 AI 助手询问 Microsoft 安全更新。这个基于 Python 的 MCP(Model Context Protocol)服务将 Claude、Copilot 和 ChatGPT 等 AI 助手连接到 MSRC Security Update Guide——这是 Microsoft 发布的所有 CVE 补丁的权威来源——让你可以用自然语言查询 Patch Tuesday 发布内容,包括 CVE、KB 文章、严重性评级、CVSS 评分、受影响的产品以及是否已在实际攻击中利用。

功能介绍

Patch Tuesday MCP Server 将 Microsoft 官方的 CVRF 安全更新 API 与你的 AI 助手连接起来,让你可以:

  • 获取每月汇总 - “本月的补丁星期二修复了什么?”
  • 查找正在遭利用的漏洞 - “哪些漏洞正在野外遭到利用?”
  • 查询任意 CVE - “告诉我 CVE-2026-41108 的相关信息”(KB、受影响产品、CVSS、描述)
  • 将 KB 映射到 CVE - “KB5094123 修复了哪些漏洞?”
  • 按产品筛选 - “本月有哪些严重级别的 CVE 影响 Windows Server 2022?”
  • 追踪零日漏洞 - “4 月是否修复了任何已公开披露的漏洞?”
  • 查看已确认遭利用的漏洞 - “本月的哪些 CVE 在 CISA KEV 列表中?”——附带联邦修复截止日期
  • 按遭利用概率排序 - “显示 EPSS 高于 50% 的 CVE”——每日更新的 FIRST.org 漏洞利用预测评分
  • 查找无需点击、可从互联网访问的严重漏洞 - “哪些严重级别的 CVE 可通过网络访问,且无需权限或用户交互?”——根据解析出的 CVSS 攻击向量、权限和用户交互字段进行筛选
  • 直接跳转至权威来源 - 每个 CVE 详情都附带可直接打开的 MSRC、NVD、EPSS 和(如有列出)CISA KEV 参考链接
  • 避免使用过时补丁 - “KB5087538 是否已被更新版本取代?”——沿着 Microsoft 的取代关系链接进行追踪
  • 尚无补丁时获取缓解措施 - “CVE-2026-47291 是否有缓解措施或解决方法?”——提供 Microsoft 的缓解措施、解决方法以及不予修复的指导
  • 发现一段时间内的趋势 - “过去 6 个月发布了多少个 HTTP.sys CVE?”(months_back=6,或使用 start_month/end_month)——汇总已发布月份中的匹配项,并按月统计
  • 按 Microsoft 自己的利用预测筛选 - “Microsoft 将本月哪些 CVE 评为‘更有可能遭到利用’?”(exploitation_likely=True)
  • 发现被勒索软件利用的 CVE - “本月哪些 CVE 被用于已知的勒索软件活动?”(ransomware=True;添加 include_kev_details=True 可获取包含必要操作的完整 CISA 条目)
  • 规划部署,而不只是确定优先级 - “KB5094123 是否需要重启?哪个版本号包含修复?”(include_kb_details=True 会添加每个 KB 的 URL、修复版本号、取代关系和重启要求)
  • 了解 Microsoft 指出的更新问题 - “部署 KB5094126 之前,有什么已知问题吗?”(include_known_issues=True 会添加 Microsoft 确认的每个 KB 的已知问题,包括症状、解决方法和解决问题的更新;尽可能从其公开支持页面获取,主要针对 Windows 更新;如果 Microsoft 未发布任何问题,响应会明确说明)
  • 了解更新更改了什么,而不只是修复了什么 - “KB5099536 除了安全修复之外,实际还包含什么内容?”(include_update_summary=True 会添加 KB 支持页面中的摘要和改进要点——MSRC 安全数据不包含的更改说明内容;通过与查询已知问题相同的页面获取)
  • 按弱点类别筛选月份 - “显示本月的释放后使用 CVE”(cwe="CWE-416" 或 cwe="use after free")
  • 查看版本目录 - “有哪些月度版本可用?它们上次修订是什么时候?”(list_months=True)
  • 导出分诊简报 - “将本月的严重级别 CVE 制作为 Markdown 报告”或“……制作成 CSV”——生成按优先级排列的执行摘要和表格,或便于电子表格处理的导出文件(format="markdown" / format="csv")
  • 强制刷新并检查数据新鲜度 - “重新拉取本月的最新数据”(force_refresh=True)会绕过进程内缓存;include_freshness=True 会报告 MSRC 文档以及 EPSS/KEV 补充数据的缓存时间和 TTL
  • 确定补丁优先级 - 结果按紧急程度从高到低排序:KEV/已遭利用,然后是 EPSS、严重程度,最后是 CVSS

非常适合每月分诊 Microsoft 安全更新的安全分析师、系统管理员和 IT 专业人员——无需点击浏览安全更新指南门户。 数据来自官方公开的 MSRC CVRF v3 API。无需身份验证或 API 密钥。

为什么选择此服务?

这是唯一一个以补丁星期二发布本身为建模对象的 MCP 服务。 很多 MCP 服务都能查询 CVE——通用漏洞聚合器会将已知的 CVE ID 分发到 NVD、OSV 和威胁情报源。它们回答的是 “告诉我 CVE-X 的相关信息”。但它们不了解每月的 Microsoft 发布、KB 文章或产品系列,因此从结构上就无法回答 Microsoft 用户每月第二个星期二真正会问的问题:

你实际会问的问题通用 CVE 查询服务patch-tuesday-mcp
“总结本月的补丁星期二”❌ 不知道发布的概念✅ 一次调用即可汇总并提供统计数据
“本月哪些严重 CVE 会影响 Windows Server 2022?”❌ 无法按 Microsoft 产品筛选✅ 支持按产品和产品系列筛选
“KB5094123 修复了哪些漏洞?”❌ 不了解 KB✅ 支持 KB ↔ CVE 映射
“目前有哪些漏洞正在被野外利用?”⚠️ 仅支持逐个查询 CVE,且需要你事先知道 CVE✅ 可筛选整个月的数据
“我应该优先修补什么?”❌✅ 按紧急程度排序:已遭利用/KEV → EPSS → 严重性 → CVSS
“哪些严重漏洞无需用户交互即可从互联网访问?”⚠️ 仅支持逐个查询 CVSS✅ 可按已解析的 CVSS 攻击向量、权限和用户交互筛选当月数据
“告诉我 CVE-X 的相关信息”✅(通常包含更多生态系统数据)✅ MSRC 详细信息:KB、版本、取代关系、已解析的 CVSS,以及 MSRC/NVD/EPSS/KEV 链接

在底层,区别在于数据源:此服务会解析完整的 MSRC CVRF 月度文档——ProductTree、各产品的严重性威胁、可利用性评估和 KB 修复链,这些信息从不由逐个 CVE 查询的 API 提供。正因如此,才能回答以发布为核心的问题。

它还特别做好了以下方面:

  • 无需 API 密钥,也无需账户——MSRC API 是公开的;只需运行一条 uvx 命令即可完成设置
  • 一个工具,而非三十个——通过单一的整合工具 msrc_search,让 AI 客户端的上下文保持精简,并可靠地选择工具
  • 专为月度工作流打造——对发布进行分类、向团队汇报、确定修补优先级,然后继续处理其他事务

即刻试用——托管端点(无需安装)

可免费使用远程实例:

https://patch-tuesday-mcp.agreeabledesert-d0b8e491.eastus2.azurecontainerapps.io/mcp

无需账户或 API 密钥。该端点提供的数据与本地安装相同——如果需要高频使用或保证可用性,请在本地运行(见下文)或自行托管。系统仅记录最少量的匿名使用数据——请参阅遥测与隐私。

要求

通用要求
  • Python 3.11+
  • 兼容 MCP 的客户端(Claude Desktop、Cursor、Claude Code、GitHub Copilot CLI 等)
使用 uvx(推荐)

如果你通过 uvx 安装或运行此服务,必须先安装 uv。

安装 uv:

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows (PowerShell)
irm https://astral.sh/uv/install.ps1 | iex

uvx 可让你运行 MCP 服务,而无需全局安装软件包。

使用 pip(替代方式)
pip install patch-tuesday-mcp

安装

从 PyPI 安装
uvx patch-tuesday-mcp

或使用 pip 安装:

pip install patch-tuesday-mcp
升级到最新版本
uvx patch-tuesday-mcp@latest

或使用 pip:

pip install --upgrade patch-tuesday-mcp

快速设置

在 VS Code 中设置 在 Cursor 中设置 在 Claude Code 中设置 在 Copilot CLI 中设置

一键设置: 点击 VS Code 徽章即可自动配置(需要安装 uv) 手动设置: 请参阅下方针对 VS Code、Cursor、Claude Code、Copilot CLI 或 Claude Desktop 的说明

功能

  • msrc_search – 按关键字、CVE、KB 编号、月份、产品、严重性、CVSS 分数、是否已在实际攻击中利用或是否公开披露,搜索并筛选 Microsoft 安全更新。如果未指定月份,结果默认采用最近一个已过补丁星期二的版本——默认跳过下个月的预发布文档(仅包含早期 Chromium/带外条目),可通过 month= 显式查询。结果会补充 EPSS 分数(FIRST.org 提供的 30 天攻击利用概率,可用 min_epss=0.5 筛选)和 CISA KEV 目录状态及联邦修复截止日期(可用 kev=True 筛选);两者均为公开、无需密钥的数据源。按 解析后的 CVSS v3.x 暴露字段筛选——attack_vector(N/A/L/P)、privileges_required(N/L/H)、user_interaction(N/R)和 scope(U/C)——例如,筛出可通过网络访问、无需点击的严重漏洞。匹配结果会显示一个从原始向量字符串解析出的结构化 cvss 对象。每条 CVE 详情还包含一个可直接打开的链接 references 区块(MSRC 更新指南、NVD、EPSS API,以及 CVE 列入目录时的 CISA KEV 目录)。在 KB 查询中添加 include_chain=True,即可查看 Microsoft 声明的 取代关系链(它取代了哪些 KB,从新到旧)。传入 KB 编号列表(kb=["5094123", "KB5094127", ...],最多 30 个)即可在一次调用中查询全部编号——例如,将计算机已安装更新列表作为补丁报告的上下文——并获取按 KB 分组的响应,每个 KB 均有一条结果(找到或未找到,其内容与单个 KB 查询相同);整个批次中,每份月度文档仍最多只会从上游获取一次。在任意 KB 查询(单个或批量)中添加 include_known_issues=True,即可查看每项更新的 Microsoft 已确认已知问题——问题标题、症状、解决方法,以及 Microsoft 指明的修复 KB。系统会尽力从 KB 的公开支持页面抓取这些信息,并为每个 KB 明确报告状态:published、none_published(Microsoft 未发布该 KB 的已知问题数据——Windows OS 更新以外的情况通常如此)或 unavailable(检索/解析失败,与“没有问题”明确区分);该结果反映的是 Microsoft 已确认会造成的问题,而不是对你所处环境的预测。在 KB 查询中添加 include_update_summary=True,即可了解 更新内容——支持页面上的 Summary/Highlights 文本及其 Improvements 项目列表(有大小上限,若内容被截断则以 truncated 标记),并采用同样明确的三种状态;这两个支持页面区块通过一次获取提供,并共用一条缓存记录。在 CVE 查询中添加 include_guidance=True,即可查看 Microsoft 提供的 缓解措施、解决方法和不予修复的公告,以及供应商修复 KB。在月度/筛选搜索中传入 format="markdown" 或 format="csv",即可额外生成 分流简报——Markdown 格式提供优先级排序的摘要和表格,CSV 格式提供可直接用于电子表格的导出内容——两者均按相同的紧急程度排序生成。JSON vulnerabilities 列表始终会包含在内。使用 force_refresh=True 可绕过进程内缓存,重新获取请求所需的 MSRC 文档和 EPSS/KEV 补充数据;使用 include_freshness=True 可添加 freshness 区块,报告 MSRC 文档和补充数据的缓存时长及 TTL。使用 months_back=N(最近发布的 N 个月)或 start_month/end_month,可搜索 历史时间范围,而不是单个月份——响应会汇总该范围内匹配的 CVE,并添加按月统计的 趋势数据;范围最多为 12 个月,并沿用现有的缓存/并发控制。设置 include_stats=True 可获取汇总计数(按严重性、影响、产品系列、是否已被利用及 KEV 分类)。与 include_stats=True 一起使用 limit=0,可仅查看某月的统计概览。按 Microsoft 对攻击利用可能性的评估筛选时使用 exploitation_likely=True(“Exploitation More Likely”/“Exploitation Detected”;匹配结果包含 exploitation_assessment 字段);按 已知勒索软件活动中的使用情况筛选时使用 ransomware=True(数据来自 CISA KEV 目录)。按需启用更丰富的结果:include_references=True 会在月份/KB/趋势列表结果中添加 MSRC/NVD/EPSS/KEV 链接区块;include_kev_details=True 会以完整目录条目(截止日期、所需操作、供应商/产品、勒索软件使用情况)替换布尔型 KEV 标记;include_kb_details=True 会将 KB 编号扩展为完整对象,包含每个 KB 的 URL、修复版本、取代关系、子类型和 是否需要重启状态;include_temporal=True 会在 cvss 区块中添加 Microsoft 的 CVSS 时间分数。使用 cwe=(ID 或名称子字符串,例如 cwe="CWE-416")可按 弱点类别筛选。使用 list_months=True 可获取 版本目录(所有可用月份及其首次/当前发布日期——便于确认有效的 month= 值和查找同月修订)。所有新增字段均为可选项:默认 JSON 结构保持不变。

产品配置文件(监视列表)

将搜索范围限定为你实际运行的产品。传入 product_profile="identity-core"(内置配置文件:identity-core、endpoint、server-infrastructure),或按需提供 products=["Exchange Server", "Windows Server"] / product_families=["Windows", "Azure"]。只要漏洞符合所列的任一产品或产品系列,就会保留。所有匹配都在本地进行——配置文件内容绝不会传输给 MSRC、FIRST.org、CISA 或遥测系统。

通过将 MSRC_PROFILES_PATH 指向 JSON 文件来覆盖或扩展内置配置:

{
  "my-estate": {
    "families": ["Windows", "Azure"],
    "products": ["Exchange Server", "Microsoft Entra"]
  }
}

每个条目都可以设置 products 和/或 families(不区分大小写的部分匹配)。与内置配置同名的文件条目会替换该配置。未知的 product_profile,或缺失/无效的 MSRC_PROFILES_PATH,会返回明确的 invalid_input 错误,而不会回退到范围过宽、未限定范围的结果。

配套分诊技能

便携式 Agent 技能 patch-tuesday-triage 可教会 AI Agent 如何在月度工作流中使用 msrc_search(运行哪些搜索、按什么顺序运行、如何确定优先级)。它采用纯 Markdown 编写,可独立于此服务部署:将 skills/patch-tuesday-triage/ 复制到 Agent 的技能目录中。有关部署详情,请参阅 skills/README.md。

引导式分诊提示词

该服务注册了一个名为 monthly_triage 的 MCP 提示词。支持提示词的 MCP 客户端可以选择它,以获取完全基于 msrc_search 构建的分步分析工作流——公开披露的零日漏洞、CISA KEV、已遭利用的漏洞、网络可利用/无需身份验证/无需用户交互的严重漏洞、身份相关产品、终端/Intune,以及简报。它接受两个可选参数:product_profile(将整个工作流限定到某个监视列表)和 month(对指定版本进行分诊)。不会引入新工具——该提示词仅负责协调 msrc_search 调用。

此提示词的便携式纯文本副本位于 prompts/ 下,因此该工作流可以独立于此服务使用。

提示词示例

连接到 MCP 客户端后,你可以提出以下问题:

  1. 月度概览:“总结本月的 Patch Tuesday”
  2. 已遭利用的漏洞:“哪些 Microsoft 漏洞正在被积极利用?”
  3. CVE 查询:“CVE-2026-41108 是什么?哪个 KB 修复了它?”
  4. KB 查询:“KB5094123 修补了什么?”
  5. 计算机补丁报告:“这是此服务器上已安装的 KB:KB5094123、KB5094127、KB5093998——它们修复了什么?是否有任何更新已被取代?”
  6. 产品筛选:“显示本月影响 Exchange Server 的严重漏洞”
  7. 补丁优先级排序:“我应该先安装 2026 年 6 月更新中的哪些补丁?”
  8. CISA KEV:“本月的哪些 CVE 在 CISA KEV 列表中?”
  9. EPSS:“显示 EPSS 高于 50% 的 CVE”
  10. 暴露面筛选:“哪些严重 CVE 可通过网络访问,且无需权限或用户交互?”
  11. 参考链接:“提供 CVE-2026-41108 的 MSRC、NVD 和 EPSS 链接”
  12. 缓解措施和解决方法:“CVE-2026-41108 有哪些缓解措施或解决方法吗?”
  13. 分类报告:“以 Markdown 简报的形式列出本月的严重 CVE”(或“……将它们导出为 CSV”)
  14. 按需获取最新数据:“重新获取本月的更新,并告诉我数据有多新” (force_refresh=True, include_freshness=True)
  15. 历史趋势:“过去 6 个月发布了多少个 HTTP.sys RCE CVE?” (query="HTTP.sys", months_back=6)
  16. 取代关系:“KB5087538 是否已被更新的补丁取代?”
  17. 利用情况预测:“Microsoft 认为本月哪些 CVE 的‘利用可能性较高’?”
  18. 勒索软件:“本月的哪些 CVE 被用于已知的勒索软件攻击活动?”
  19. 部署规划:“KB5094123 是否需要重启?哪个版本可以修复它?”
  20. 部署前了解已知问题:“Microsoft 已确认 KB5094126 会导致什么问题?是否有修复或解决方法?” (include_known_issues=True)
  21. 更新内容:“总结 KB5099536 除安全修复之外还做了哪些更改” (include_update_summary=True)
  22. 弱点类别:“显示本月的释放后使用漏洞” (cwe="CWE-416")
  23. 发布目录:“可以查询哪些 Patch Tuesday 月份?”
  24. 产品关注列表:“显示本月影响我整个系统环境的严重 CVE” (product_profile="identity-core", severity="Critical")
  25. 引导式分类:“引导我完成本月针对身份系统环境的分类” (选择 monthly_triage 提示词,并使用 product_profile="identity-core")

使用方法

运行 MCP 服务
uvx patch-tuesday-mcp

或者,如果通过 pip 安装:

patch-tuesday-mcp
从 VS Code 连接

选项 1:一键安装(推荐)

点击本 README 顶部的 在 VS Code 中设置 徽章即可自动配置(需要安装 uv)。

选项 2:手动配置

VS Code 使用专用的 mcp.json 文件存储 MCP 服务,而不是 settings.json。 打开命令面板(Windows/Linux 上按 Ctrl+Shift+P,macOS 上按 Cmd+Shift+P),然后运行以下命令之一:

  • MCP: Open User Configuration — 编辑用户级 mcp.json(适用于每个工作区)
  • MCP: Open Workspace Folder Configuration — 编辑项目本地的 .vscode/mcp.json

然后添加服务。请注意,VS Code 使用顶层 "servers" 键(其他客户端使用 "mcpServers" 键):

{
  "servers": {
    "patch-tuesday": {
      "type": "stdio",
      "command": "uvx",
      "args": ["patch-tuesday-mcp"]
    }
  }
}
从 Claude Desktop 连接

将以下内容添加到 Claude Desktop MCP 配置中:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

使用 uvx(推荐)

{
  "mcpServers": {
    "patch-tuesday": {
      "command": "uvx",
      "args": ["patch-tuesday-mcp"]
    }
  }
}

使用已安装的软件包

{
  "mcpServers": {
    "patch-tuesday": {
      "command": "patch-tuesday-mcp"
    }
  }
}
从 Cursor 连接

选项 1:一键安装(推荐)

cursor://anysphere.cursor-deeplink/mcp/install?name=patch-tuesday-mcp&config=eyJjb21tYW5kIjogInV2eCIsICJhcmdzIjogWyJwYXRjaC10dWVzZGF5LW1jcCJdfQ==

选项 2:手动配置

将以下内容添加到 Cursor MCP 配置(~/.cursor/mcp.json):

{
  "mcpServers": {
    "patch-tuesday": {
      "command": "uvx",
      "args": ["patch-tuesday-mcp"]
    }
  }
}
从 Claude Code 连接
claude mcp add --transport stdio patch-tuesday -- uvx patch-tuesday-mcp
从 GitHub Copilot CLI 连接

添加到 ~/.copilot/mcp-config.json:

{
  "mcpServers": {
    "patch-tuesday": {
      "type": "stdio",
      "command": "uvx",
      "args": ["patch-tuesday-mcp"]
    }
  }
}

将 MCP 服务自托管为远程 MCP 服务

该服务还支持 HTTP 传输,可用于远程/共享部署:

MCP_TRANSPORT=http MCP_PORT=8000 patch-tuesday-mcp
# MCP endpoint: http://localhost:8000/mcp

也可以使用 Docker:

docker build -t patch-tuesday-mcp .
docker run -p 8000:8000 patch-tuesday-mcp

HTTP 模式环境变量:

变量默认值描述
MCP_TRANSPORTstdio远程服务设置为 http
MCP_HOST / MCP_PORT0.0.0.0 / 8000绑定地址
MCP_MAX_BODY_BYTES262144请求正文大小上限;超过此值时返回 413(0 表示禁用)
MCP_CORS_ORIGINS*(全部)以逗号分隔的浏览器来源允许列表。公开部署时请设置明确的列表(例如 https://app.example.com)
MCP_LIMIT_CONCURRENCY40并发进行中的连接数上限;超过此值时,uvicorn 返回 503(0 表示禁用)
MCP_TIMEOUT_KEEP_ALIVE15空闲的 keep-alive 连接关闭前的等待秒数
MCP_LOG_LEVELWARNING根日志级别(DEBUG/INFO/WARNING/ERROR/CRITICAL);日志输出到 stderr
MCP_MSRC_MAX_RESPONSE_BYTES67108864 (64 MiB)单个 MSRC 上游响应正文的上限(流式读取,不会缓冲超过上限的内容)
MCP_ENRICHMENT_MAX_RESPONSE_BYTES33554432 (32 MiB)单个 EPSS/KEV 上游响应正文的上限
MCP_KNOWN_ISSUES_MAX_RESPONSE_BYTES4194304 (4 MiB)单个 support.microsoft.com KB 页面正文的上限(已知问题/更新摘要查询)
APPLICATIONINSIGHTS_CONNECTION_STRING未设置选择启用使用情况遥测(需要 pip install patch-tuesday-mcp[telemetry])
MCP_DEPRECATION_SUNSET未设置此部署停止提供服务的 ISO 日期(YYYY-MM-DD)。设置此项时还需同时设置 MCP_DEPRECATION_REPLACEMENT_URL,以发布迁移公告(见下文)
MCP_DEPRECATION_REPLACEMENT_URL未设置客户端应迁移到的 URL
MCP_DEPRECATION_SINCE未设置可选的弃用公告 ISO 日期(以 RFC 9745 Deprecation 日期形式发出)
MCP_DEPRECATION_MESSAGE未设置可选的人类可读通知文本覆盖值
发布弃用公告(自托管者)

如果你要停用某个部署,请仅在该部署上设置 MCP_DEPRECATION_SUNSET 和 MCP_DEPRECATION_REPLACEMENT_URL。随后,服务器会通过以下四种渠道 报告迁移信息:

  • 每个 msrc_search 响应(以及 /health)中的 deprecation 块
  • 响应头 Deprecation、Sunset 和 Link: <url>; rel="successor-version" (RFC 9745、 RFC 8594、 RFC 5829)
  • MCP 服务在连接时向客户端显示的 instructions
  • msrc_search 工具描述

这些内容都只是描述性信息:陈述有关该部署的事实。它们绝不会指示已连接的 Agent 说或做任何事情——向其他人的模型发出指令的工具输出,无论载荷看起来多么无害,都属于提示词注入。变量未设置时,行为逐字节保持不变;只设置这一对变量中的一个,或日期格式错误,都会被忽略。

HTTP 模式还提供 GET /health(存活状态端点),并以无状态方式运行,因此可以在负载均衡器后扩展到多个副本,无需会话亲和性。

加固公开的 HTTP 部署

HTTP 传输未经身份验证——msrc_search 只读取公开的漏洞数据,但开放的端点仍可能被滥用。在将其暴露到互联网之前:

  • 在前端设置经过身份验证的入口。 在反向代理 / API 网关处终止 TLS 并要求身份验证(例如 Azure API Management、oauth2-proxy 等 OAuth2/OIDC 代理、Cloudflare Access,或你的 Ingress 控制器的身份验证功能)。此服务有意不内置身份验证,以便你在其前面接入组织标准的访问控制。
  • 限制 CORS。 将 MCP_CORS_ORIGINS 设置为 MCP 客户端的确切来源,而不是宽松的默认值 *。
  • 保持默认设置。 将 MCP_MAX_BODY_BYTES 和 MCP_LIMIT_CONCURRENCY 保持为默认值(或进一步收紧)——它们是防止负载过大和连接耗尽的第一道防线。
  • 上游读取有上限,且不会跟随重定向。 从 MSRC/EPSS/KEV 获取的响应会在流式读取时限制大小,并且永不跟随 HTTP 重定向,因此行为异常的上游不会耗尽容器内存。

本地 stdio 用法不受以上内容影响;默认传输不会运行这些中间件。

该容器可在任何能够提供 HTTP 服务的主机上运行——Azure Container Apps、Cloud Run、Fly.io 或普通 VM。

遥测与隐私

  • 本地 stdio(默认):绝不收集遥测数据——不存在任何会发送数据的代码路径。
  • 托管端点会将最少量的使用数据记录到 Azure Application Insights(保留 90 天):每日加盐的客户端 IP 哈希值(绝不存储原始 IP;仅在内存中短暂保留以防止滥用)、请求路径和时间戳、所用工具参数(仅参数名称——绝不记录查询文本或 CVE/KB 值;仅保留低基数的 month 和 severity 值)、结果数量、延迟和错误类别。不使用 Cookie,不涉及账户,也不记录请求 / 响应正文。
  • 自托管 HTTP 不会收集任何数据,除非你将 APPLICATIONINSIGHTS_CONNECTION_STRING 设置为自己的资源——这样,同一组最少量的数据就会发送到你的实例。

开发

pip install -e ".[dev]"
pytest                  # offline suite (mocked feeds)
pytest --run-live       # also run live smoke tests against the real MSRC / EPSS / KEV APIs
pytest --cov=patch_tuesday_mcp   # coverage (CI enforces >= 90%)
ruff check src/ tests/

CI(GitHub Actions)会在 Python 3.11/3.12/3.14 上运行离线测试套件并检查覆盖率门槛,使用 ruff 进行 lint,构建容器,使用 Trivy 扫描容器,并在每次推送 / PR 时生成 SPDX SBOM。发布构建会为已发布的 wheel/sdist 证明其来源。依赖项已锁定在 uv.lock 中(Docker 构建通过 uv sync --locked 使用)。

安全

请参阅 SECURITY.md,了解受支持的版本、范围,以及如何私下报告漏洞。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。