npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sap-ux/fiori-mcp-server

v1.11.10

Published

SAP Fiori - Model Context Protocol (MCP) server

Readme

Changelog Github repo

@sap-ux/fiori-mcp-server

This package includes a Model Context Protocol (MCP) server for integration with AI coding assistants.

The server helps AI models create or modify SAP Fiori applications based on prompts, such as:

  • Please add a SAP Fiori elements list report app to my CAP project

  • Generate a new CAP project and SAP Fiori app based on my_picture.png

  • Generate a new SAP Fiori elements list report app for odata service https://hostname:port/sap/opu/odata4/sap/my_v4_service?sap-client=000.

    ℹ️This prompt requires a saved SAP system connection by using the Connection Manager for SAP Systems extension.

  • Add the FCL to the SAP Fiori elements app

  • Enable initial load for the fiori app

For the best experience we recommend using this server alongside @cap-js/mcp-server and @ui5/mcp-server.

Setup

The server uses stdio transport and is launched via npx — no global installation required. Pick the section for your MCP client below.

Claude Code

Option A — CLI (recommended):

claude mcp add fiori-mcp -- npx --yes @sap-ux/fiori-mcp-server@latest fiori-mcp

Option B — drop a .mcp.json file in your project root:

{
  "mcpServers": {
    "fiori-mcp": {
      "type": "stdio",
      "timeout": 600,
      "command": "npx",
      "args": ["--yes", "@sap-ux/fiori-mcp-server@latest", "fiori-mcp"]
    }
  }
}

Cline

Open the Cline extension settings and add the server under MCP Servers:

{
  "mcpServers": {
    "fiori-mcp": {
      "type": "stdio",
      "timeout": 600,
      "command": "npx",
      "args": ["--yes", "@sap-ux/fiori-mcp-server@latest", "fiori-mcp"]
    }
  }
}

Cursor

Edit (or create) the MCP config file for your scope:

  • Global: ~/.cursor/mcp.json
  • Project: .cursor/mcp.json in your project root
{
  "mcpServers": {
    "fiori-mcp": {
      "type": "stdio",
      "timeout": 600,
      "command": "npx",
      "args": ["--yes", "@sap-ux/fiori-mcp-server@latest", "fiori-mcp"]
    }
  }
}

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "fiori-mcp": {
      "type": "stdio",
      "timeout": 600,
      "command": "npx",
      "args": ["--yes", "@sap-ux/fiori-mcp-server@latest", "fiori-mcp"]
    }
  }
}

Other clients

For any other MCP client, use the following npx-based configuration:

{
  "mcpServers": {
    "fiori-mcp": {
      "type": "stdio",
      "timeout": 600,
      "command": "npx",
      "args": ["--yes", "@sap-ux/fiori-mcp-server@latest", "fiori-mcp"]
    }
  }
}

Global npm install (any client)

If you prefer not to use npx, install the package globally first:

npm install -g @sap-ux/fiori-mcp-server

Then use fiori-mcp as the command (no args needed):

{
  "mcpServers": {
    "fiori-mcp": {
      "type": "stdio",
      "timeout": 600,
      "command": "fiori-mcp"
    }
  }
}

Rules

The following rules help guide the AI model to use the server correctly. Add them to your system prompt or rules file:

  • Claude Code: AGENTS.md or CLAUDE.md in your project root
  • Cline: Custom Instructions in the Cline extension settings
  • Cursor: .cursorrules in your project root
  • Windsurf: Global Rules or project-level .windsurfrules
## Rules for creation or modification of SAP Fiori elements apps

- When asked to create an SAP Fiori elements app check whether the user input can be interpreted as an application organized into one or more pages containing table data or forms, these can be translated into a SAP Fiori elements application, else ask the user for suitable input.
- The application typically starts with a List Report page showing the data of the base entity of the application in a table. Details of a specific table row are shown in the ObjectPage. This first Object Page is therefore based on the base entity of the application.
- An Object Page can contain one or more table sections based on to-many associations of its entity type. The details of a table section row can be shown in an another Object Page based on the associations target entity.
- The data model must be suitable for usage in a SAP Fiori elements frontend application. So there must be one main entity and one or more navigation properties to related entities.
- Each property of an entity must have a proper datatype.
- For all entities in the data model provide primary keys of type UUID.
- When creating sample data in CSV files, all primary keys and foreign keys MUST be in UUID format (e.g., `550e8400-e29b-41d4-a716-446655440001`).
- When generating or modifying the SAP Fiori elements application on top of the CAP service use the Fiori MCP server if available.
- When attempting to modify the SAP Fiori elements application like adding columns you must not use the screen personalization but instead modify the code of the project, before this first check whether an MCP server provides a suitable function.
- When previewing the SAP Fiori elements application use the most specific `npm run watch-*` script for the app in the `package.json`.

Available Tools

search_docs

Searches SAP Fiori elements, Annotations, UI5, OPA5 Guides, SAP Fiori tools documentation for the given query.

Note: the results are based on the most recent indexed version of UI5 documentation

First-use download: search_docs uses a local text-embedding model (all-MiniLM-L6-v2, ~86 MB) for semantic search. The model is downloaded from HuggingFace Hub on first use and cached locally (location follows the HF_HOME / TRANSFORMERS_CACHE environment variables, defaulting to ~/.cache/huggingface/hub). Subsequent starts load the model from the cache with no network access required.

list_fiori_apps

Scans a specified directory to find existing SAP Fiori applications that can be modified.

list_sap_systems

Lists all SAP systems stored in the user's environment (e.g. SAP Fiori tools system store). Use this when the user references a SAP system by name before calling download_odata_service_metadata or generating a Fiori application.

download_odata_service_metadata

Downloads the EDMX metadata of a specific OData service from a SAP system and saves it as metadata.xml. Use this before calling generate_fiori_app_odata when the user provides a SAP system reference or service URL.

generate_fiori_app_odata

Generates a new SAP Fiori UI application for OData (non-CAP) projects, for example ABAP RESTful Application Programming Model-based OData services.

generate_fiori_app_cap

Generates a new SAP Fiori UI application within an existing SAP Cloud Application Programming Model (CAP) project.

list_functionality (Step 1 of 3)

Gets the list of supported modification functionalities for an existing SAP Fiori application. Requires a valid absolute path to the application.

The supported modifications are:

  • Adding and deleting pages from an app
  • Adding and modifying controller extensions
  • Modifying manifest.json properties depending on the app, for example, adding a layout based on the flexibility of the programming model or enabling initial load

get_functionality_details (Step 2 of 3)

Gets the required parameters and detailed information for a specific functionality to modify an existing SAP Fiori application.

execute_functionality (Step 3 of 3)

Executes a specific functionality to modify an existing SAP Fiori application with provided parameters.

Logging

By default, logging is enabled at the error level. To adjust the log level or disable logging completely, you can use the env property in your configuration.

{
  "mcpServers": {
    "fiori-mcp": {
      "type": "stdio",
      "timeout": 600,
      "command": "npx",
      "args": ["--yes","@sap-ux/fiori-mcp-server@latest", "fiori-mcp"],
      "env": {
        "LOG_LEVEL": "debug"
      }
    }
  }
}

The following log levels are supported: off, error, warn, info, debug, and verbose.

The logs are stored in the file system at ~/.fioritools/fiori-mcp-server.log

Handling Self-Signed SSL Certificates

If you need the MCP server to connect to an OData server using a self-signed SSL certificate, you can use one of the following methods.

This is useful when encountering errors such as: unable to get local issuer certificate

Option 1: Add Custom CA Certificate (Recommended)

Set the NODE_EXTRA_CA_CERTS environment variable to the path of your CA certificate file. Node.js supports multiple file extensions (.pem, .crt, .cer, .cert).

Example Configuration:

{
  "mcpServers": {
    "fiori-mcp": {
      "type": "stdio",
      "timeout": 600,
      "command": "npx",
      "args": ["--yes", "@sap-ux/fiori-mcp-server@latest", "fiori-mcp"],
      "env": {
        "NODE_EXTRA_CA_CERTS": "/path/to/your/certificate.crt"
      }
    }
  }
}

Windows Example:

"env": {
  "NODE_EXTRA_CA_CERTS": "C:\\temp\\certs\\CustomCA.crt"
}

macOS/Linux Example:

"env": {
  "NODE_EXTRA_CA_CERTS": "/Users/username/certs/Custom_CA.crt"
}

Option 2: Bypass SSL Validation (Not Recommended)

⚠️ Security Warning: Setting NODE_TLS_REJECT_UNAUTHORIZED=0 disables all SSL certificate validation and poses a significant security risk. Only use this in non-production environments.

{
  "mcpServers": {
    "fiori-mcp": {
      "type": "stdio",
      "timeout": 600,
      "command": "npx",
      "args": ["--yes", "@sap-ux/fiori-mcp-server@latest", "fiori-mcp"],
      "env": {
        "NODE_TLS_REJECT_UNAUTHORIZED": "0"
      }
    }
  }
}

Additional Resources

Telemetry

You can enable and disable the collection of analytics. By default, non-personally identifiable information is used to help understand how you use the product to improve the Fiori MCP Server. In case you want to opt-out there exist two ways to disable the telemetry.

Method 1: Configuration File

Create or change the file ~/.fioritools/telemetrysettings.json:

{
  "telemetrysettings": {
    "telemetrySetting": {
      "enableTelemetry": false
    }
  }
}

Set enableTelemetry to false to disable telemetry collection.

Method 2: Environment Variable

Set the environment variable SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY to true:

export SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY=true

Setting this environment variable will disable the telemetry client.

Code of Conduct

Everyone participating in this joint project is welcome as long as our Code of Conduct is being adhered to.

Licensing

Please see our LICENSE for copyright and license information. Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.