MCP serverMCP servertypeExposes tools to a coding agent over MCP.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

sap-dm-pod2-mcp-server

An MCP server for SAP Digital Manufacturing POD 2.0 extension development: 23 tools over POD2 pattern docs, the POD2 class API, SAP DM REST and MDO specs and the SAPUI5 API, with five code-generation prompts.

A POD 2.0 extension is written against the POD2 JSDoc API, SAPUI5, SAP DM's REST services and its MDO Extractor entities, and an agent asked to write one answers from what it recalls of all four. This serves them as 23 tools an agent calls: pattern docs with full-text search, the POD2 class API, OpenAPI specs per REST service, MDO entity property lists, SAPUI5 symbol metadata, the source of five reference extensions, and validate_project, which checks a generated extension against the documented standards. Five prompts generate the artefacts themselves: create_widget, create_action, create_extension, migrate_widget and validate_project. Only the hand-written pattern docs and the POD2 API reference ship with the repository; the REST OpenAPI specs come from the SAP Business Accelerator Hub at api.sap.com, the MDO metadata from a tenant's own $metadata document and the SAPUI5 metadata from the SDK, each fetched locally under the reader's own licence. Beside the server the repository carries a CLAUDE.md rule file and a plugin template to copy into the project folder, which drive a two-phase workflow: one scaffold pass, then iteration after each manual pack-and-upload, because a POD 2.0 plugin only renders once it is deployed.

Facts

Last pushLicenceMIT

Where it sits

Provides
POD pluginsSAP Digital ManufacturingPOD pluginscapabilityExtending SAP Digital Manufacturing's Production Operator Dashboard with plugins of your own: a view, a panel or an action that runs inside the operator's POD, packaged as an extension the product loads. Distinct from [launchpad plugins](capability:launchpad-plugins), which extend a launchpad's shell around many apps.Agent guidanceCAPAgent guidancecapabilityPackaged knowledge you hand a coding agent so it gets a framework right unprompted — skills, rule files, instruction packs. Distinct from agent tooling, which is about building agentic features into your application, and from [agent access to your code](capability:agent-code-access), where the agent reads the real project instead of being handed a file about it.
Optional
SAP Digital ManufacturingSAP Digital Manufacturingoutside the atlasthe licensed release whose REST OpenAPI specifications and MDO Extractor metadata are tenant-bound content the repository does not redistribute, loaded locally before those tools answertarget product

Who is behind it

Philipp DomschkePhilipp DomschkePersonMaintains this
In the atlas: maintains 1, contributes to 1
@blumenkuebel
maintainer

Before choosing this

Conditions

PracticalFunctional boundary

Three of its five reference corpora are not shipped: without an api.sap.com key and session cookie, a tenant bearer token and a local SAPUI5 fetch, the REST, MDO and UI5 tools return a message naming the preparation step that is missing. The HTTP transport has no authentication until MCP_AUTH_TOKEN is set, so anything past localhost needs that or an authenticating reverse proxy. Packing the ZIP, uploading it through Manage POD 2.0 Extensions and placing the widget in the POD Designer stay manual steps outside the agent, and the SAPUI5 fetch defaults to the SDK's newest version, which the README says is not the version a tenant runs. Node.js 22 or newer.

What it declares

Every artifact

Type
MCP server
Origin
Independently maintained
Runtime
Node.js

As an MCP server

Transport
stdioHTTP

Connections4

sap-dm-pod2-mcp-server connectionssap-dm-pod2-mcp-serverPROVIDES→ provides2provides stated Hands the agent the POD2 rules as a file to load and the development rules as a tool: `CLAUDE.md` is copied into the plugin folder and read at the start of every session, and `get_pod2_guidelines` returns the same rules, widget types and coding standards from the server. sap-dm-pod2-mcp-server — usage guide, A2. Copy template files: https://raw.githubusercontent.com/blumenkuebel/sap-dm-pod2-mcp-server/main/usage/README.md sap-dm-pod2-mcp-server — README, Tools: https://github.com/blumenkuebel/sap-dm-pod2-mcp-serverAgent guidanceprovides stated Serves what a POD 2.0 extension is written against as tools an agent calls: the POD2 class API, hand-written pattern docs, SAP DM REST and MDO specs, the SAPUI5 API and the source of five reference extensions. Five prompts generate a widget, an action or a whole extension, and `validate_project` checks the result against the documented standards. sap-dm-pod2-mcp-server — README: https://github.com/blumenkuebel/sap-dm-pod2-mcp-server sap-dm-pod2-mcp-server — README: https://github.com/blumenkuebel/sap-dm-pod2-mcp-server sap-dm-pod2-mcp-server — README, Capabilities: https://github.com/blumenkuebel/sap-dm-pod2-mcp-serverPOD pluginsNEEDS→ connects to1connects to stated If: the MDO entity tools are used, which requires exporting the metadata from the tenant with a bearer token first the MDO Extractor entity metadata behind `list_mdo_entities`, `get_mdo_entity` and `search_mdo_entities`: the OData V4 `$metadata` document is exported from the tenant and indexed locally sap-dm-pod2-mcp-server — README, Tools: https://github.com/blumenkuebel/sap-dm-pod2-mcp-server sap-dm-pod2-mcp-server — README, Step 4: https://github.com/blumenkuebel/sap-dm-pod2-mcp-serverSAP Digital Manufacturingif→ optionally needs1optionally needs stated If: the REST API specification and MDO entity tools are used; the server starts without the specifications and the tools that need them say which step is missing the licensed release whose REST OpenAPI specifications and MDO Extractor metadata are tenant-bound content the repository does not redistribute, loaded locally before those tools answer sap-dm-pod2-mcp-server — README, Step 3: https://github.com/blumenkuebel/sap-dm-pod2-mcp-server sap-dm-pod2-mcp-server — README, Step 4: https://github.com/blumenkuebel/sap-dm-pod2-mcp-serverSAP Digital Manufacturingif
Where sap-dm-pod2-mcp-server runsSAP cloudsap-dm-pod2-mcp-server — README, checked 2026-10-17: “Built with [FastMCP](https://github.com/punkpeye/fastmcp) — supports both **HTTP Stream** and **stdio** transports.”stdio or HTTPdocumentedconnectsif the MDO entity tools areused, which requires exportingthe metadata from the tenant wit…Your MCP client, actorYour MCP clientsap-dm-pod2-mcp-server, modulesap-dm-pod2-mcp-serv…SAP Digital Manufacturing, SAP solutionSAP DigitalManufacturingSAP solution
SAPnot SAP's, or the project's ownstated in the documentunder a condition

README

quoted from blumenkuebel/sap-dm-pod2-mcp-server under MIT, read
blumenkuebel/sap-dm-pod2-mcp-server/README.mdOn GitHub

sap-dm-pod2-mcp-server

An MCP (Model Context Protocol) server for SAP Digital Manufacturing POD 2.0 extension development.

Provides AI assistants with access to pattern documentation, API references, REST API specs, UI5 API, code examples, and validation workflows — everything needed to build, review, and migrate POD 2.0 extensions.

Built with FastMCP — supports both HTTP Stream and stdio transports.

Disclaimer. This is an independent, community-maintained project. It is not an official SAP product and is not affiliated with, sponsored, or endorsed by SAP. "SAP", "SAP Digital Manufacturing", "SAPUI5", and related names are trademarks of SAP SE, used here only for identification. SAP provides no support for this project — issues and questions go through this repository, not SAP support channels.

Note on bundled content. This repository ships the hand-written pattern & reference docs and the reference example extensions under MIT. It also ships the POD2 API reference (docu/pod2-api-specs/), generated from the POD 2.0 JSDoc bundle SAP publishes under Apache-2.0. The SAPUI5 API metadata is fetched locally from the SAPUI5 SDK under your own SAP license. It does not redistribute tenant-bound SAP specs (SAP DM REST OpenAPI specs, MDO metadata) — those are release-bound SAP content you fetch locally for your own licensed release. See Step 3: Load the REST API specifications.


Capabilities

CategoryCountDetails
Tools23Guidelines, docs, API refs, REST specs, UI5 API, examples, MDO, validation, search
Resources6Pattern index, basics, API index + 3 URI templates
Prompts5create_widget, create_action, create_extension, migrate_widget, validate_project
Tools
ToolDescription
get_pod2_guidelinesCore development rules, widget types, coding standards
list_capabilitiesOverview of all tools, resources, and prompts
list_pattern_docsIndex of all pattern documentation files
get_pattern_docRead a specific pattern doc (common-mistakes, widget-patterns, etc.)
search_docsFull-text search across pattern documentation
get_api_docAPI reference for a POD2 class (e.g. Widget, Action, PodContext)
list_api_docsList POD2 API class docs
search_api_docsSearch API reference docs
get_api_indexBrowse all API classes and namespaces
list_rest_apisList SAP DM REST API specifications (requires fetched specs)
get_rest_apiOpenAPI spec for a service (e.g. order, sfc, material)
search_rest_apisSearch across REST API specs
list_ui5_librariesList bundled SAPUI5 libraries
search_ui5_apiSearch SAPUI5 symbols across all libraries
get_ui5_apiFull metadata for a UI5 class (properties, methods, events)
get_ui5_guidelinesCurated SAPUI5 coding guidelines
list_examplesList reference example extensions with file structure
get_exampleRead source code from a reference extension
list_mdo_entitiesList SAP DM MDO Extractor OData V4 entities (requires fetched specs)
get_mdo_entityFull property list for an MDO entity
search_mdo_entitiesSearch MDO entity definitions
validate_projectValidate a POD2 extension against all standards
search_allCross-area search: pattern docs + API specs + REST specs

Getting started

Follow these steps in order.

Step 1: Install the server
git clone <repo>
cd sap-dm-pod2-mcp-server
npm install
npm run build

Requirements: Node.js ≥ 22

The server can start without SAP specifications. Tools that require them return a clear message explaining which preparation command is missing.

Step 2: Prepare the SAPUI5 API reference

SAPUI5 is the preferred UI framework for POD 2.0 extensions. Fetch the API metadata for the UI5 version used by your SAP Digital Manufacturing system:

npm run update-ui5-api-specs -- --source sapui5

The metadata is written to the docu/ui5-api-specs/ directory and is used by the list_ui5_libraries, search_ui5_api, and get_ui5_api tools. SAPUI5 metadata is proprietary and must not be redistributed. By default this fetches the SDK's newest published version, which is not the same as your tenant's actual runtime version and may describe controls or properties that don't exist yet in your SAP DM release.

The UI5 runtime version changes with every SAP DM release wave and does not follow a predictable formula — find the exact version your tenant runs by opening the SAP DM Fiori launchpad, opening the browser DevTools console, and evaluating sap.ui.version. Then pass it explicitly:

npm run update-ui5-api-specs -- --source sapui5 --version <version>

Audit the selected SAPUI5 version later with npm run check-ui5-api-freshness.

Step 3: Load the REST API specifications

SAP Digital Manufacturing ships in release waves (format YYMM, e.g. 2605, 2608).

The REST OpenAPI specifications are tenant-bound SAP content and are not redistributed. Load them locally from the SAP Business Accelerator Hub using credentials for your licensed SAP Digital Manufacturing release:

SAP_API_HUB_KEY=<key> SAP_API_HUB_COOKIE='<cookie>' npm run fetch-rest-specs

The REST OpenAPI specs are fetched via the SAP Business Accelerator Hub. This requires an api.sap.com API key and a browser session cookie:

Important: wrap the cookie value in single quotes — it contains semicolons and special characters that the shell would otherwise split.

Get credentials:

  • API key: api.sap.com → profile → Settings → show API Key
  • Cookie: Log in to api.sap.com, open DevTools (F12) → Network tab → reload the page → click any request to api.sap.com → Request Headers → copy the full Cookie header value

Example (truncated for readability):

SAP_API_HUB_KEY=AaBbCc123456 \
  SAP_API_HUB_COOKIE='country=DE; IDP_SESSION_MARKER_accounts=eyJ...; JSESSIONID=s%3A...' \
  npm run fetch-rest-specs

Specs are converted from Swagger 2.0 to OpenAPI 3.0 automatically. Without SAP_API_HUB_COOKIE the catalog step is skipped and the script re-downloads specs for existing artifact IDs only.

SAP DM is SaaS, so the Business Accelerator Hub always serves the current release — this step always fetches the newest specs and there is no version to pick. Just re-run it to refresh. The fetch date is recorded in docu/sap-dm-api-specs/VERSION.md.


Step 4: Load MDO metadata

MDO metadata is required for the MDO entity tools. It is tenant-bound SAP content and is not redistributed. Export the OData V4 $metadata document from your SAP Digital Manufacturing tenant and generate the local index:

1. Export $metadata from your tenant (requires a bearer token):

mkdir -p docu/sap-dm-mdo-specs
SAP_DM_TOKEN=<token> curl -H "Authorization: Bearer $SAP_DM_TOKEN" \
  "https://api.<region>.dmc.cloud.sap/dmci/v4/extractor/\$metadata" \
  -o docu/sap-dm-mdo-specs/metadata.xml

The hostname depends on your system type: production systems use api.<region>.dmc.cloud.sap, test/non-production systems typically use api.test.<region>.dmc.cloud.sap. Check your SAP DM tenant's actual API URL (e.g. in the Fiori launchpad or your BTP subaccount) and adjust accordingly.

2. Generate the Markdown index:

npm run generate-mdo-index

Get a bearer token from the SAP DM Fiori launchpad developer tools. Tokens expire quickly, so export the metadata and run the generator in the same session.

Step 5: Optional - Update the POD2 API reference

The POD2 API reference is included in docu/pod2-api-specs/ and is ready to use. To update it to a different SAP Digital Manufacturing release, download the JSDoc bundle for that release (jsdoc-pod2-<YYMM>.zip) from SAP-samples/digital-manufacturing-extension-samples, extract it, then run the update script with the path to the extracted docs folder:

npm run extract-docs -- /path/to/jsdoc-pod2-<YYMM>/docs --release <YYMM>

--release <YYMM> labels the generated index with the release wave — pass the same <YYMM> as the downloaded bundle. This updates only the local POD2 API reference. It does not load the REST API or MDO metadata.

Step 6: Start the server

Start the HTTP transport (the default):

npm start
# Server running at http://localhost:3001/mcp
# Health: http://localhost:3001/health

For an MCP client that starts the server as a local process, use the stdio transport:

npm run start:stdio

Usage

HTTP Stream (default)

Custom port:

PORT=8080 npm start

Security: the HTTP transport has no authentication by default. For anything beyond localhost, set MCP_AUTH_TOKEN to require an Authorization: Bearer <token> header (or run the server behind an authenticating reverse proxy). The /health endpoint stays public.

MCP_AUTH_TOKEN=<your-token> npm start

MCP Client Configuration

HTTP Stream
{
  "mcpServers": {
    "sap-dm-pod2": {
      "url": "http://localhost:3001/mcp"
    }
  }
}
stdio
{
  "mcpServers": {
    "sap-dm-pod2": {
      "command": "node",
      "args": ["/path/to/sap-dm-pod2-mcp-server/dist/index.js", "--stdio"]
    }
  }
}

Development

npm run typecheck   # Type-check without building
npm run build       # Compile TypeScript → dist/
npm test            # Build + run tests
npm start           # HTTP on port 3001
npm run start:stdio # stdio transport
npm run lint        # ESLint
npm run format      # Prettier (write)

Project Structure

sap-dm-pod2-mcp-server/
├── src/
│   ├── index.ts              ← FastMCP init + transport startup
│   ├── config.ts             ← Paths, version, port, log level
│   ├── helpers.ts            ← File I/O, caching, TF-IDF search, OpenAPI slicing
│   ├── logging.ts            ← Log level helpers
│   ├── tools/                ← 9 tool modules
│   ├── resources/docs.ts     ← 3 static resources + 3 URI templates
│   └── prompts/generators.ts ← 5 code-generation prompts
├── docu/                     ← Pattern docs (shipped) + fetched specs (git-ignored)
│   ├── *.md                  ← Hand-written pattern & reference docs (MIT, shipped)
│   ├── pod2-api-specs/       ← POD2 API class docs (Apache-2.0, SAP-samples) — shipped
│   ├── sap-dm-api-specs/     ← REST API OpenAPI specs — fetched locally, not shipped
│   ├── ui5-api-specs/        ← SAPUI5 API metadata — generated locally, not shipped
│   └── sap-dm-mdo-specs/     ← MDO Extractor metadata — fetched locally, not shipped
├── scripts/                  ← Spec fetch/extract generators (prepare:specs, fetch-rest-specs, …)
├── test/                     ← Node built-in test suite (helpers, tools, server)
├── examples/                 ← Production-grade reference extensions
│   ├── Customer.Coating/
│   ├── Customer.HelloWorld/
│   ├── Customer.TableView/
│   ├── Customer.Utils/
│   └── Customer.SoundAlert/
├── package.json
└── tsconfig.json

Environment Variables

VariableDefaultDescription
PORT3001HTTP listen port
MCP_AUTH_TOKEN—When set, the HTTP transport requires Authorization: Bearer <token>; empty/unset disables auth (local dev). /health stays public.
LOG_LEVELinfoLog verbosity: debug, info, warn, error
SAP_DM_RELEASE2608SAP DM release wave (YYMM) used when fetching/generating specs
SAP_API_HUB_KEY—API key for fetch-rest-specs (never committed)
SAP_DM_TOKEN—Bearer token for generate-mdo-index (never committed)

License

Licensed under the MIT License — © 2026 sap-dm-pod2-mcp-server blumenkuebel.

Third-party attributions are collected in THIRD-PARTY-NOTICES.md:

  • Pattern & reference documentation (docu/*.md) — portions adapted from KevinHunter12/SAP_DM_AI_POD_SKILL (MIT).
  • POD2 API reference (docu/pod2-api-specs/) — generated from the POD 2.0 JSDoc bundle in SAP-samples/digital-manufacturing-extension-samples (Apache-2.0); the folder carries its own LICENSE + NOTICE.
  • SAPUI5 API metadata (docu/ui5-api-specs/, when generated) — fetched locally from the SAPUI5 SDK under the applicable SAP license; it is not redistributed.

Tenant-bound SAP specs (SAP DM REST OpenAPI, MDO metadata) are not covered by this license and are not redistributed here — you obtain them under the applicable SAP terms of use for your own release. See Step 3: Load the REST API specifications.

MIT, read

Others providing2

POD plugins
  1. Cogniac SAP DM POD 2.0 ExtensionSAP Digital Manufacturing POD plugin for Cogniac image detections
Agent guidance
  1. pod2-configAn agent skill that turns a described POD change into an importable [SAP Digital Manufacturing](external:sap-digital-manufacturing) POD 2.0 export, built from standard plugins and actions only.

Details

Sources3
GitHub APIdiscovered herechecked
github.com/blumenkuebel/sap-dm-pod2-mcp-servertree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

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
runtimesnode
discovered viaGitHub API
first seen in the atlas
ecosystem and domaindigital-manufacturing, ai-and-agents
History in the atlas1
  1. First seen.
For your agent
Ref
artifact:blumenkuebel-sap-dm-pod2-mcp-server
JSON
/artifacts/blumenkuebel-sap-dm-pod2-mcp-server.json
MCP
Connecting an agent