MCP servers continue to be seen as a Swiss army knife. Specially in the SAP universe, MCP servers are a way to access an SAP system. They build a bridge to the fortress SAP by providing access to well hidden and protected features. However, what should not be ignored are RAG. Combining RAG and MCP gives an LLM access to missing information and access to a system. RAG allows enhancing the included knowledge of an LLM. An LLM that is given access to the knowledge store and gives the answers based on that knowledge. It comes with many benefits, specially for companies. The documents for the RAG can be controlled and updated when needed. Adding metadata allows for very specific filtering. The LLM will base the answer on the provided RAG output. Access to the RAG is normally provided via a chat UI. Adding MCP server capability to the RAG allows using the knowledge from any RAG client. This can be e.g. Claude, VS Code or any of the many AI coding tools.

When developing an app the coding client can access the RAG and the information it contains and make coding decisions based on that information. A possible scenario could be: a developer wants to enhance a given SAP transaction. The AI can ask the RAG to find out that the transaction is deprecated as there is a Fiori app available. Instead of working on the transaction, the Fiori app can be activated, and an adaptation project created.
Fiori library app for the users
For this to work, a Fiori App Library MCP server is needed. Based on a RAG for Fiori apps. This is an alternative for searching for Fiori apps. Users can talk directly to the AI and the answer returned is based on the app metadata stored in the RAG. Using the language the users are used to, the Fiori library app gives back the information requested. Rather than having the user apply filters in an app, it can be a question like: “How many Fiori apps are in S/4HANA 2025 FPS1?” The answer is then looked up by the app based on the provided data. The same applies for other questions like:
- “I work with transaction XD01. Is there a Fiori app available?” or
- “My LoB is Material Management”,
- “Which apps are using OData service MDG_APPROVE_CR2”,
- “I work with managing bank accounts. Are there any Fiori apps for me?”
- “How many Fiori Elements app are in S/4HANA 2023?”
- “Which apps are part of business role SAP_BR_AP_MANAGER?”
- …
Instead of having to work with an app, applying filters, knowing how the filters work, etc., users can just ask questions. As the answer is based on what is in the RAG, you can control what is included. If the target release is only S/4HANA 2023 FPS3: just do not add information for a different release. If the focus is on Fiori Apps and Web Dynpro or SAP GUI is not in scope: only include the Fiori Apps.
As LLMs are good in text and languages, users can ask questions in their language. Not just their language like English, German, French, but how they communicate in their professional life: the terms and expressions. The LLM can understand it, search for the information, and even when the information in the RAG is only stored in English, can respond in Spanish. And even adjust to the specific technical terms.
RAG app
I always wanted to have a Fiori app library that supports me. That makes it easy to find answers to technical and functional questions. To which app does OData server FIN_ACCOUNTING_IMPACT_SRV belong? Which apps were added between two releases? What was changed in module FI? What Fiori apps support a functional scenario that includes working with sales orders? Being able to have something that can be used by the end users? Going through dozens of filters just to find out how many apps might be suitable isn’t the UX everyone finds acceptable.
I also wanted to have a tool that can be used during development to find out if there is maybe a standard Fiori app available. A tool that can be used by the AI and IDE to point a developer to a possible standard solution. Like: you are going to add something to transaction XD01, but there is also a Fiori app successor available for that transaction. Would be nice to have a skill that gives a warning or that writes this down in an ADR.
Features
Being able to ask your AI for information for Fiori apps that meet your needs: that’s the basics. I wonder why SAP is not providing a tool for this. The name is easily to find: Joule for Fiori. Of course, this is not enough. Features are missing to make a Fiori App MCP server useful:
- Activate Fiori apps: take the app found and activate it directly in the SAP system
- Enable adaptation project: allows to not only activate the app, but to enable it already as an adaptation project
- Customize app: next would be to take the changes identified by the user, and apply them to the adaptation project
- App management: clear caches, manage spaces and pages, assign roles.
Examples
Here are some example questions and the answer given by the chat.
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
![]() | ![]() |
Architecture
If you want to try this out on your own: the project is available on GitHub. A description on how to install and run it is provided. However, this is not a task you get done in 5 minutes. Make sure to go through the documentation. You’ll need Docker / Podman, python3, TypeScript. I recommend to first start with a Dify example chatflow with simple a knowledge before installing the Fiori apps chatflow.
Pre-requisites
The RAG app is available on [GitHub]https://github.com/tobiashofmann/rag-fiori-apps 🔗). (Some files are still being added or updated.) The foundation is Dify. Dify can be run locally in Docker. If you are using Podman: make sure to use a compatible docker compose tool. The base configuration is to set up the knowledge (vector store: Qdrant) and to add a container for the SQLite database as well as the tool for querying the knowledge (folders: kb, sqlgw and kbgw). Do not forget to configure SSR to allow access to the ports and added containers. When Dify is up and running, you can configure the knowledge, create the chatflow and provide the app metadata.
App metadata
To get the Fiori app metadata, you’ll have to download it on your own. The script app_metadata/scripts/fetch_fiori_apps.py lets you download the data for a given release and technology. You should only download what you really need. If you are not using e.g. S/4HANA 2022, why download the metadata? The download script will store the metadata in individual JSON files. These are the ones you should keep. From these, the markdown files are generated, as well as the diffs and SQLite data. Specifically the SQLite data is important. Questions like: how many apps, or which apps in role/catalog or which apps use OData service abc are answered by querying the database. These are not questions going to be answered by RAG / vector store data.
Knowledge
The setup of the knowledge base is done with kb/dify-kb.ts. This adds the knowledge and the metadata. Upload to the RAG is done via script upload_to_dify.py. All data added to the knowledge will consume memory. Make sure you have enough memory available to make use of the added metadata.
LLMs
The chat flow is in chatflow/Fiori_Apps.yml. The LLM configured in the template are embeddinggemma for embedding and qwen3.5:4b. The quality of the RAG heavily depends on the LLM you use. Best results are given when a powerful LLM is configured. For instance, Dify knowledge can use LLM to set the metadata from the context. Using a LLM that I can run locally however gave me back results that were not matching the data. Therefore, I added the query container that takes the identified metadata and sends a tailored query to the knowledge.
Tests
When the RAG is activated it can be tested. Some test scenarios are defined in tests/TESTS.md. You can your AI create test files out from the scenarios, or reuse the ones in tests/tests/cases.json by running the test script tests/scripts/run_tests.py.
Just like as most code, the test scripts are AI generated.
MCP Server
Dify allows publishing a chatflow as an MCP server. The chatflow can be used by an MCP client. This combination gets powerful when adding a coding skill that makes the AI look up information about Fiori apps.

Fiori App MCP server
Would be nice to get an official Fiori App MCP Server from SAP. Having an app is nice, but now focus on value: A Fiori App MCP server. With all the features listed here. Offering AI tools only to cloud customers is not helpful. When you raise barriers, you also have to deliver. Imagine: providing value. And yes: for free, and of course: no Joule as a requirement.







