pam-mcp-server
A local MCP server that answers an agent's questions about the support status of SAP product versions from the reader's own export of the SAP Product Availability Matrix.
Lets an agent look up the support status of an SAP product version while it reads an architecture document or a specification that names one, without the SAP Support RadarSAP Support RadarA browser app that checks the support and maintenance status of the SAP product versions a person runs against their own export of the SAP Product Availability Matrix.independent, umbrella app it ships beside. Three tools over stdio: one lists the matrix fields that can be filtered, one lists the values a field holds, and one queries the entries by any of them, as a Markdown table or as JSON records. It reads the JSON file the app's import script makes from the reader's own SAP Product Availability MatrixSAP Product Availability MatrixSAP's list of its software releases on the SAP Support Portal, with release types, maintenance durations, planned availability, upgrade paths and supported platforms. For the things here it is the export a person downloads and converts themselves, the data they read. export, is read-only and makes no network calls. It runs on the reader's own machine only: the matrix is SAP customer-licensed data, so there is no hosted endpoint.
Facts
Where it sits
Who is behind it
In the atlas: maintains 4, contributes to 12@tobiashofmannmaintainer
What it declares
Every artifact
- Type
- MCP server
- Origin
- Independently maintained
As an MCP server
- Runs as
- local process
- Transport
- stdio
- Read-only
- yesstates it is
- Guardrails
1 quoted from README show all
It is read-only and makes no network calls — it only reads the local
PAM.jsonfile.
Connections
Whether a release is still maintained, and until when
SAP's list of its software releases on the SAP Support Portal, with release types, maintenance durations, planned availability, upgrade paths and supported platforms. For the things here it is the export a person downloads and converts themselves, the data they read.
Browser app checking SAP product support status from a PAM export
Download
Architecture
Download
README
quoted from tobiashofmann/sap-support-radar under Apache-2.0, readpam-mcp-server
An MCP server exposing the SAP Product Availability Matrix (PAM) data
from de.itsfullofstars.sap.pam (webapp/model/PAM.json) as queryable tools, so an LLM
client can look up product/version support status without needing the PAM app's UI.
It is read-only and makes no network calls — it only reads the local PAM.json file.
This is deliberately local-only, not a hosted service: real PAM data is SAP customer-licensed
information that can never be bundled with this app or served publicly (see
ADR 0006). Each user generates their own PAM.json locally
(npm run pam:import, from their own SAP PAM CSV export) and runs this server against it on their own
machine — there is no remote endpoint to connect to instead.
Tools
pam_list_fields— lists every filterable PAM field (e.g.version,product,line,status,eomm, ...), its human-readable label, and whether it's matched exactly or by substring. Call this first if you're unsure which field name to use.pam_list_field_values— lists the distinct values a given field currently has, most common first (e.g. every status value that actually occurs, with counts). Useful to discover the exact spelling of a status/category/line value before filtering.pam_query_products— the main query tool. Accepts one optional filter per PAM field (a string or array of strings, OR'd within a field, AND'd across fields), pluslimit/offsetpagination and aresponse_format("markdown"summary table or"json"full records).
How specific a filter is determines how many entries come back, by design:
| You filter by... | You get... |
|---|---|
version (e.g. "SAP S/4HANA 2025") | Typically a single matching entry. |
product or line (e.g. "SAP S/4HANA") | Every entry belonging to that product/line. |
status (e.g. "Unrestricted available") | Every product currently in that status. |
Any other status/date field (ra_puna, ra_pua, ua, hanaStatus, hanaDate, eomm, eom, eop1, eosk, addOn) | Every entry with that exact value. |
Setup
npm install
npm run build
Running
npm start # runs dist/index.js over stdio
npm run dev # tsx watch mode, runs src/index.ts directly
npm run inspector # opens the MCP Inspector against the built server
By default, the server reads ../webapp/model/PAM.json (relative to this package, i.e. the main app's
bundled PAM data). Point it at a different file — e.g. a freshly re-imported or uploaded export — via the
PAM_JSON_PATH environment variable:
PAM_JSON_PATH=/path/to/other/PAM.json npm start
See ../docs/architecture.md for the full PAM.json field
mapping, and ../docs/index.md for how PAM.json itself is
generated from an SAP PAM CSV export.
Using with Claude Code / another MCP client
Add it as a local stdio server, e.g. via the Claude Code CLI:
claude mcp add pam -- node /absolute/path/to/pam-mcp-server/dist/index.js
or in an MCP client's JSON config:
{
"mcpServers": {
"pam": {
"command": "node",
"args": ["/absolute/path/to/pam-mcp-server/dist/index.js"]
}
}
}
Project structure
pam-mcp-server/
├── package.json
├── tsconfig.json
├── src/
│ ├── index.ts # entry point: creates the McpServer, registers tools, connects stdio transport
│ ├── data.ts # loads/caches PAM.json
│ ├── fields.ts # field metadata (names, labels, match mode) shared by all tools
│ ├── filtering.ts # filter matching + distinct-value counting logic
│ ├── format.ts # markdown table rendering + response truncation
│ ├── constants.ts # CHARACTER_LIMIT, pagination defaults
│ └── tools/
│ ├── listFields.ts
│ ├── listFieldValues.ts
│ └── queryProducts.ts
└── dist/ # built output (entry point: dist/index.js)
- ui5-task-check-eocpui5-task-check-eocpA UI5 builder task that matches the UI5 version in ui5.yaml against the versions retrieved from ui5.sap.com and warns during the build once that version's End of Cloud Provisioning quarter has been reached.independent, ui5UI5 build task warning when the app's UI5 version reaches EOCPfrom UI5
- SAP Support RadarSAP Support RadarA browser app that checks the support and maintenance status of the SAP product versions a person runs against their own export of the SAP Product Availability Matrix.independent, umbrellaBrowser app checking SAP product support status from a PAM exportfrom Across stacks
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
History in the atlas
- Staged as its own entry beside the app (ADR-0063, two entries) because an agent reaches for the server and a person opens the app. part_of rests on the README's project layout. ecosystem: umbrella and serves_ecosystems: abap for the same reasons as the app: it reads the same matrix, and its documentation's worked example queries SAP S/4HANA 2022 and SAP NetWeaver 7.5. No tool_count: the README lists three tools and states no count. Its package is private and not on npm.
- First seen.
For your agent
- Ref
artifact:tobiashofmann-pam-mcp-server- JSON
- /artifacts/tobiashofmann-pam-mcp-server.json
- MCP
- Connecting an agent