SAP Security Notes MCP Server
Enables querying SAP Security Note metadata including Patch Day releases, CVSS scores, CVEs, affected components, and actively-exploited status via the Model Context Protocol.
README
SAP Security Notes MCP Server
Ask questions about SAP Security Note metadata — Patch Day releases, CVSS scores, CVEs, affected components, and actively-exploited status — via the Model Context Protocol (MCP).
Server URL: https://notes.syntaai.com/mcp
Features
- 10 Tools — Patch Day summaries, note/CVE lookup, component exposure checks, exploited-in-the-wild status, month comparisons (all read-only)
- 4 Resources — Catalog info, latest Patch Day summary, component list, priority definitions
- 4 Prompts — Monthly patch briefing, exposure check, patch backlog prioritizer, CVE investigation
- No authentication required — public read-only data.
- stdio transport — run it locally with Claude Desktop or any MCP client
Example Interactions
Example 1: Patch Day Summary
User prompt: "What came out in July's SAP Patch Day?"
What happens:
- Returns counts by priority for 2026-07, the HotNews list with CVSS scores, top affected components, and new vs. updated notes
Tool used: get_patch_day_summary
Example 2: Active Exploitation
User prompt: "Are any SAP vulnerabilities actively exploited right now?"
What happens:
- Cross-references the catalog's CVEs against the CISA Known Exploited Vulnerabilities (KEV) snapshot and returns matches with KEV dates
- A zero-match answer is reported honestly, with what that does and does not mean
Tool used: get_exploited_notes
Example 3: Component Exposure
User prompt: "Here is my stack: SAP S/4HANA 2023, SAP_BASIS 758, BC-JAS-WEB — what applies to me?"
What happens:
- Each item is classified: application component (
BC-JAS-WEB), software component optionally with a version (SAP_BASIS 758), or product/stack name from Maintenance Planner (SAP S/4HANA 2023) - Software components match primarily against SAP's own published affected-component/version lists; a curated mapping fills in notes that have no published list. Application components match directly (exact + prefix)
- A pasted version gets a tier per matched note:
- Affected version confirmed — the version is in SAP's published list
- Component listed, your version not in the published list — not proof of safety, published lists can be summarized
- Component affected, version not assessed — no version given, or no published list to check (exact-string match only — never a range or "close enough" inference)
- Returns matching notes grouped by provenance, plus an honest "not assessed" bucket for anything that could not be classified or matched
Tool used: check_component_exposure
Tools Reference
Patch Day & Search
| Tool | Description | Annotations |
|---|---|---|
get_patch_day_summary |
Priority counts, HotNews list, top components, new vs. updated for a month | Read-only |
search_notes |
Keyword search over titles/components with priority, CVSS, month filters, ranked by CVSS | Read-only |
compare_patch_months |
Note counts, severity mix, and HotNews delta between two months | Read-only |
get_catalog_info |
Catalog version, note count, coverage window, data sources | Read-only |
Lookup
| Tool | Description | Annotations |
|---|---|---|
get_note_details |
Full metadata record for one note number | Read-only |
lookup_cve |
SAP note(s) addressing a CVE ID | Read-only |
get_notes_by_component |
Notes for a component, exact + prefix matching | Read-only |
Risk Views
| Tool | Description | Annotations |
|---|---|---|
get_hot_news |
All HotNews notes, ranked by CVSS | Read-only |
get_exploited_notes |
Notes with CISA-KEV-listed CVEs, with KEV dates | Read-only |
check_component_exposure |
Match a pasted list (app components, software components — optionally versioned — or product names) against the catalog | Read-only |
Data Sources & Honesty
- Canonical source: SAP's public Patch Day pages. As of v2.1, the
catalog is built primarily from SAP's public, no-login Security Patch
Day pages (
support.sap.com/.../security-notes-news/<month>-<year>.html), not a private export. Each page publishes, per note: title (with CVE prefix), CVE ID(s), priority, CVSS, the affected product name(s), and the affected software-component/version list. Raw pages are cached indata/pages/for reproducible rebuilds. - Public metadata only. The catalog never contains SAP note body text or correction instructions — only what SAP already publishes openly: note numbers, titles, CVSS scores/vectors, CVE IDs, priorities, affected software components and their published version lists, dates, and public note URLs.
- Coverage window is stated, not implied. Current catalog:
January 2026 – July 2026 (
get_catalog_infoalways tells you exactly). - Null-evidence rule. Absence from this catalog does not mean absence of vulnerability. Every tool says so on every not-found answer, and no tool ever fabricates a note, CVE, score, date, or version.
- Exploitation data comes from the public CISA KEV feed; the snapshot version and fetch date are recorded in the catalog for reproducibility.
- Public-evidence date policy. Exact release days ship only when
publicly evidenced without login: the page's own stated Patch Day date
for notes in its main table, or a date matching the CVE's public NVD
publisheddate. Everything else ships asnull, withrelease_monthretained (a note's presence on its public month page is the evidence for the month). - Version lists are exact and verbatim.
affected[].versionsare kept exactly as SAP published them — no numeric coercion, no range expansion, no normalization (758,75A,2008_1_700,10.0are all real, unmodified formats). A version line SAP publishes in a form the parser can't parse cleanly (a typo, a "< X.Y.Z" threshold instead of a discrete list, a component name containing a space) is kept verbatim inversions_unparsed— never partially guessed. - Matching behavior & provenance labels.
check_component_exposureaccepts application components (the legacy per-note header field, e.g.BC-MID-RFC— not published by pages, so it'snullfor notes added from pages only, never fabricated), software components (System → Status, e.g.SAP_BASIS, optionally versioned likeSAP_BASIS 758), and product names (Maintenance Planner, e.g. "SAP S/4HANA 2023"). For a software component, matching is two-tier by provenance: PRIMARY is a direct, exact match against SAP's own published affected-component list (match_type: published_affected_list); FALLBACK is a curated, rationale-documented mapping (data/component_mapping.yaml) to application-component prefixes, used only for notes with no published list (match_type: mapped_software_component). Every match says which it is. When a version is given, each matched note also gets an exact-string-match tier (1 confirmed / 2 listed-but-version-mismatch / 3 not assessed) — never a range or "close enough" inference. Products resolve through the same software-component chain; release years in product names are echoed back only. Which support package level fixes a note always requires the full SAP note. - Monthly updates on SAP Patch Tuesday:
scripts/monthly_update.py <page-url>fetches and caches the new page, rebuilds the catalog fresh from every cached page, re-runs KEV, validates the schema, and runs a CI gate requiring every application component to have an explicit mapping disposition before the build is considered commit-ready. - Community corrections welcome — open a PR against
data/notes_catalog.jsonordata/component_mapping.yaml.
Quick Start
claude.ai (hosted)
Add a custom connector with URL (no login needed):
https://notes.syntaai.com/mcp
Claude Desktop (local, stdio)
{
"mcpServers": {
"sap-security-notes": {
"command": "/path/to/venv/bin/python",
"args": ["/path/to/sap-security-notes-mcp/server.py"],
"env": { "MCP_TRANSPORT": "stdio" }
}
}
}
Deployment
git clone https://github.com/SYNTAAI/sap-security-notes-mcp
cd sap-security-notes-mcp
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
# Local stdio
MCP_TRANSPORT=stdio python server.py
# HTTP (this is how the hosted server runs — no authentication,
# the catalog is public read-only data)
MCP_NO_AUTH=1 PORT=8003 python server.py
# HTTP with OAuth (optional, if you self-host and want a login gate)
PORT=8003 SYNTAAI_ISSUER_URL=https://your-host python server.py
Adding a new month once its Patch Day page is live:
pip install -r requirements-dev.txt
python scripts/monthly_update.py \
https://support.sap.com/en/my-support/knowledge-base/security-notes-news/<month>-<year>.html
pytest
This fetches and caches the page, rebuilds the catalog from every cached
page in data/pages/ plus a fresh KEV pull, validates the schema, and
runs the CI disposition gate (fails loudly if a new application component
has no mapping decision in data/component_mapping.yaml yet).
One-time historical rebuild from all cached pages (used to migrate off the original xlsx-derived catalog in v2.1):
python scripts/backfill_from_pages.py --offline
License
Apache 2.0 — see also PRIVACY.md and TERMS.md.
Want to know which of these notes are actually implemented in your SAP systems, and what's exposed right now? That's what Syntasec does — syntaai.com.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。