@pired/sap-fiori-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SAP_USER | No | Username for the default SAP system. | |
| LOG_LEVEL | No | Log level: off, error, warn, info, debug. Logs to file, never to stdout. | error |
| SAP_CLIENT | No | Client for the default SAP system. | |
| UI5_CDN_URL | No | Alternative CDN URL for UI5 versions. | |
| SAP_BASE_URL | No | Base URL of the default SAP system (with Basic Auth). | |
| SAP_PASSWORD | No | Password for the default SAP system. | |
| BTP_CLIENT_ID | No | Client ID for the BTP Destination Service (alternative to using BTP_SERVICE_KEY_FILE). | |
| BTP_TOKEN_URL | No | Token URL for the BTP Destination Service (alternative to using BTP_SERVICE_KEY_FILE). | |
| BTP_USER_TOKEN | No | User token for BTP destinations using OAuth2UserTokenExchange or OAuth2JWTBearer. | |
| SAP_SYSTEM_NAME | No | System name for the default SAP system. | |
| SAP_SYSTEMS_FILE | No | Path to a JSON file containing an array of SAP system configurations. Alternative to SAP_SYSTEMS_JSON. | ~/.sap-fiori-mcp/systems.json |
| SAP_SYSTEMS_JSON | No | JSON string containing an array of SAP system configurations (e.g., [{"name","url","client","user","password"}]). Alternative to SAP_SYSTEMS_FILE. | |
| UI5_DISTRIBUTION | No | UI5 distribution: openui5 (sdk.openui5.org) or sapui5 (ui5.sap.com). | openui5 |
| BTP_CLIENT_SECRET | No | Client secret for the BTP Destination Service (alternative to using BTP_SERVICE_KEY_FILE). | |
| UI5_TYPES_CDN_URL | No | Source for UI5 type definitions used by get_api_reference. | jsDelivr @openui5/ts-types-esm |
| NODE_EXTRA_CA_CERTS | No | Path to a CA certificate file for custom SSL certificates. | |
| BTP_SERVICE_KEY_FILE | No | Path to a BTP service key file (downloaded from cockpit) containing clientid, clientsecret, url, and uri. Alternative to individual BTP_* variables. | |
| SAP_DESTINATIONS_DIR | No | Directory containing one JSON file per BTP destination (each file named <destination>.json). Alternative to SAP_DESTINATIONS_FILE. | ~/.sap-fiori-mcp/destinations |
| SAP_DESTINATIONS_FILE | No | Path to a JSON file containing a BTP destination (camelCase or cockpit format). Alternative to SAP_DESTINATIONS_DIR. | |
| SAP_DESTINATIONS_JSON | No | JSON string containing inline BTP destinations (e.g., [{"Name","URL","Authentication",...}]). | |
| SAP_FIORI_MCP_API_KEY | No | API key required in HTTP mode (sent via x-api-key or Authorization: Bearer). | |
| SAP_FIORI_MCP_LOG_FILE | No | Path to the log file. | ~/.sap-fiori-mcp/server.log |
| BTP_DESTINATION_API_URL | No | Destination API URL for the BTP Destination Service (alternative to using BTP_SERVICE_KEY_FILE). | |
| SAP_FIORI_MCP_ADMIN_PORT | No | Port for the admin panel. | 7392 |
| SAP_FIORI_MCP_TIMEOUT_MS | No | Timeout in milliseconds for OData/CDN requests. | 30000 |
| SAP_FIORI_MCP_TOOL_PREFIX | No | Prefix for all tool names to avoid collisions (e.g., 'sapfiori_'). | |
| NODE_TLS_REJECT_UNAUTHORIZED | No | Set to '0' to disable TLS certificate validation (not recommended for production). | |
| SAP_FIORI_MCP_WORKSPACE_ROOT | No | Default root for relative paths. | cwd |
| SAP_FIORI_MCP_ALLOWED_DOMAINS | No | Comma-separated allowlist of outbound hosts. Empty means no restriction. Supports wildcards like *.example.com. | |
| SAP_FIORI_MCP_ALLOWED_ORIGINS | No | Allowed browser origins in HTTP mode. Defaults to loopback only. Use '*' to disable origin checking. | |
| SAP_FIORI_MCP_RESPONSE_NO_RESOURCES | No | Set to disable MCP resources (for clients without support). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_docsA | Searches the bundled documentation corpora for SAP Fiori elements, UI annotations, UI5 development, OPA5 testing, UI Integration Cards, TypeScript conversion, CAP (CDS) development and SAP BTP destinations. Use this before generating or modifying apps to ground answers in current best practices. Local, no network required. |
| get_guidelinesA | Returns curated UI5 development best practices for a topic: general, views, bindings, routing, i18n, performance, security, testing. |
| get_integration_cards_guidelinesA | Returns best practices for developing SAP UI Integration Cards (manifest-driven cards for SAP Build Work Zone). |
| get_typescript_conversion_guidelinesA | Returns the step-by-step guideline for converting UI5 applications and controllers from JavaScript to TypeScript. |
| list_fiori_appsA | Scans a directory for existing SAP Fiori applications (Fiori elements V2/V4, freestyle, cards, adaptation projects) that can be modified. Returns app id, type, entity set, OData version and view files. Call this before modifying an app. |
| list_sap_systemsA | Lists SAP system connections available for OData calls (from env vars SAP_BASE_URL/SAP_USER/SAP_PASSWORD, SAP_SYSTEMS_JSON or the systems.json file). Use the returned system name with download_odata_service_metadata. |
| download_odata_service_metadataA | Downloads the $metadata EDMX document of an OData service (V2 or V4) and saves it as localService/metadata.xml (or a custom path). Provide serviceUrl directly, or a systemName from list_sap_systems plus servicePath, or a BTP destination (destination + optional servicePath). Returns a summary of entity sets and types. |
| generate_fiori_app_odataA | Generates a new SAP Fiori elements application for an OData V2/V4 service, e.g. from RAP. Floorplans: 'list-report' (LR+ObjectPage, V4+V2), 'object-page' (form entry, V4), 'worklist' (V4+V2), 'analytical-list-page' (V2), 'overview-page' (V2). Provide metadataXmlPath (from download_odata_service_metadata) or metadataXml content, or just entitySet. Creates manifest.json, Component.js, index.html, i18n, ui5.yaml and package.json. |
| generate_fiori_app_capA | Generates a new SAP Fiori elements application inside an existing SAP CAP project (app/ folder), based on an entity of the project's CDS model. Reads the CDS model to resolve the main entity and its to-many associations, and wires the app to the CAP service. |
| list_functionalityA | Gets the list of supported modification functionalities for an existing SAP Fiori application: add_page, delete_page, add_controller_extension, enable_fcl, enable_initial_load, update_manifest. Workflow: list_functionality → get_functionality_details → execute_functionality. |
| get_functionality_detailsA | Gets the required parameters and detailed information for a specific functionality before executing it. |
| execute_functionalityA | Executes a modification on an existing SAP Fiori application: adds/deletes pages, adds controller extensions, enables FCL or initial load, or updates manifest.json properties. |
| get_metadata_summaryA | Parses a local EDMX metadata.xml and returns entity sets, entity types, keys, associations and annotation targets. |
| create_ui5_appA | Creates a new UI5 freestyle app from templates: 'basic' (single page), 'worklist' (searchable table + object page, OData V2), 'master-detail' (FCL, 2 columns), 'fcl' (Flexible Column Layout with column routing) or 'tabs' (IconTabBar page). Generates manifest.json, Component.js, views, controllers, i18n, index.html, ui5.yaml and package.json. Fails if the target folder already exists. |
| create_integration_cardA | Creates a manifest-based UI Integration Card (List, Object, Table, Timeline, Analytical, Adaptive, Component, Calendar) with preview index.html. Fails if the target folder already exists. |
| get_api_referenceA | Fetches and formats the UI5 API reference (properties, aggregations, events, methods with JSDoc) for a control such as 'sap.m.Table'. Source: official UI5 TypeScript type definitions (@openui5/ts-types-esm), cached locally after first use. |
| get_project_infoA | Extracts metadata and configuration from a UI5 or CAP project: app ids, framework version, libraries, views, controllers, models, routing, data sources and package scripts. |
| get_version_infoA | Retrieves UI5 framework version information: latest version from the CDN (sap-ui-version.json) plus the local project's configured version. |
| run_manifest_validationA | Validates the manifest against UI5 rules: sap.app id pattern, dataSources, model references, routing targets, view/i18n files on disk, card structure. |
| run_ui5_linterA | Analyzes JS/XML code of a UI5 app for common issues: deprecated APIs (jQuery.sap.*, sap.ui.getCore().byId), removed libraries, deprecated controls, missing controllers and missing i18n keys. |
| search_modelA | Performs fuzzy searches against names of definitions from the compiled CDS model of a CAP project: entities, views (projections), services, types, aspects, events, actions. CDS parses all .cds files into a unified model including relationships and annotations. Example: searchModel(projectPath, 'Books', 'entity'). |
| get_cap_detailsA | Returns full details of one CDS definition: elements with types and annotations, associations (target, cardinality, on-condition), actions/functions, projections and includes. |
| query_cap_dataA | Executes a CQN-like query against the CAP sample data (CSV files in db/data following CAP conventions). Supports column projection, a WHERE-like filter (and/or, eq/ne/gt/ge/lt/le, contains), order by, skip/limit. Example filter: 'stock gt 10 and price le 50'. |
| list_btp_destinationsA | Lists the SAP BTP destinations available for OData calls: local destinations (env var SAP_DESTINATIONS_JSON / SAP_DESTINATIONS_FILE / SAP_DESTINATIONS_DIR) and, when configured, destinations of the BTP Destination Service (cloud). Secrets are redacted. Use the returned destination names with query_odata_data and download_odata_service_metadata. |
| get_btp_destinationA | Returns the details of one SAP BTP destination (local or from the BTP Destination Service): URL, authentication type, sap-client, custom headers and proxy type. Secrets are redacted. Useful to verify a destination before querying it with query_odata_data. |
| query_odata_dataA | Executes an OData query (V2 or V4) against an entity set and returns the rows as JSON. Target: a BTP destination (destination + optional servicePath), a configured SAP system (systemName + servicePath from list_sap_systems), or a full serviceUrl. Supports $filter, $top, $skip, $select, $orderby, $expand and $count. This is the remote counterpart of query_cap_data. |
| btp_loginA | Opens a browser for the one-time SAP BTP login of a destination and stores the refresh token it returns, so later calls renew themselves. Use it when a destination fails with an expired or missing refresh token. The destination must carry a serviceKeyPath. Signing in takes longer than an MCP client waits for a tool call, so this returns 'pending' with the URL once the browser is open: finish the login there and call it again for the same destination to collect the outcome. Set noBrowser to get the URL back instead, for a machine with no browser of its own. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| doc-fe-floorplans | fiori: SAP Fiori Elements floorplans overview |
| doc-fe-manifest-lr | fiori: Configure a List Report target in manifest.json (V4) |
| doc-fe-fcl | fiori: Flexible Column Layout in Fiori elements |
| doc-fe-annotations-ui | fiori: UI annotations for List Report and Object Page |
| doc-fe-annotations-valuehelp | fiori: Value help and common annotations (@Common, @Consumption) |
| doc-fe-draft | fiori: Draft handling in Fiori elements |
| doc-fe-building-blocks | fiori: Fiori elements building blocks (custom sections and extensions) |
| doc-fe-extensions | fiori: Extending Fiori elements apps: custom actions, columns, sections |
| doc-fe-opa5 | opa5: OPA5 test basics for Fiori apps |
| doc-fe-tools-preview | fiori: Previewing and testing Fiori apps locally |
| doc-fe-adaptation | fiori: UI adaptation projects and app variants |
| doc-fe-datamodel | fiori: Data model requirements for Fiori elements apps |
| doc-fe-manifest-datasources | fiori: manifest.json dataSources and models for OData V4/V2 |
| doc-fe-floorplan-selection | fiori: Choosing a floorplan for generate_fiori_app_odata/cap |
| doc-ui5-mvc | ui5: UI5 MVC basics: views, controllers, models |
| doc-ui5-bindings | ui5: Data binding syntax: property, aggregation, expression, absolute/relative |
| doc-ui5-controls | ui5: Common sap.m controls for tables, forms and dialogs |
| doc-ui5-i18n | ui5: Internationalization (i18n) in UI5 |
| doc-ui5-routing | ui5: Routing and navigation in manifest.json |
| doc-ui5-manifest-schema | ui5: manifest.json structure and validation rules |
| doc-ui5-guidelines-general | ui5: UI5 development best practices |
| doc-ui5-typescript | typescript: Converting UI5 apps from JavaScript to TypeScript |
| doc-ui5-cards | cards: UI Integration Cards overview and types |
| doc-ui5-versions | ui5: UI5 versions and long-term maintenance |
| doc-cap-cds-basics | cap: CDS basics: entities, types, associations |
| doc-cap-services | cap: Services: projections, exposure and annotations |
| doc-cap-handlers | cap: Custom handlers in CAP Node.js |
| doc-cap-data | cap: CAP sample data with CSV files |
| doc-cap-auth | cap: Authorization in CAP: @restrict, roles, XSUAA |
| doc-cap-events | cap: Messaging and events in CAP |
| doc-cap-testing | cap: Testing CAP applications |
| doc-cap-preview | cap: Previewing CAP services and Fiori apps |
| doc-btp-destinations-overview | btp: SAP BTP destinations for OData connectivity |
| doc-btp-destination-formats | btp: Destination file formats (cockpit export and camelCase) |
| doc-btp-destination-service | btp: BTP Destination Service (cloud) integration |
| doc-btp-odata-query | btp: Querying OData data remotely (query_odata_data) |
TDQS
Scored across 27 tools
Each tool maps to a distinct resource/action (apps, systems, destinations, CAP models, OData services), and the descriptions clarify boundaries. A few pairs like get_guidelines/search_docs or generate_fiori_app_odata/create_ui5_app could be momentarily confused, but the descriptions disambiguate them well.
Almost all tools follow snake_case verb_noun naming (list_*, get_*, run_*, query_*). Minor deviations: create_ui5_app vs generate_fiori_app_*, btp_login is noun_verb, and list_functionality is singular while other list_* tools are plural.
27 tools exceeds the 25+ threshold and feels heavy for an MCP surface, even for a broad SAP Fiori domain. Several guideline, validation, and connection tools could be consolidated into parameterized tools, so the count is more likely to overwhelm agents than help them.
The tool surface covers the main lifecycle: discover/create/modify Fiori apps, query OData/CAP data, fetch metadata, validate/lint, and access documentation. Missing build/deploy/test operations and full CRUD for CAP entities or destinations are minor gaps given the server's stated scope.