Wie Sie einen eigenen MCP Server auf SAP BTP einrichten
MCP-Server sind der Schlüssel für einen produktiven Einsatz von AI-Agenten. Sie bieten eine standardisierte Schnittstelle für den Zugriff der LLMs auf externe Werkzeuge und Datenquellen. In diesem Beitrag zeige ich Ihnen, wie Sie selbstständig einen MCP Server erstellen und auf SAP BTP Cloud Foundry hosten können.
Operatives Reporting und strategische Planung in gewohnter Excel Umgebung. Mit der zweiten Auflage meines Praxishandbuchs lernen Sie, SAP Analysis for Microsoft Office einzurichten, aktuelle Daten aus SAP Systemen in Excel auszuwerten und professionelle Berichte zu erstellen.
Im Beitrag Vibe Coding mit SAP AI Core habe ich die Verwendung von MCP Servern vorgestellt. In diesem Beitrag werden wir einen eigenen MCP Server erstellen und auf SAP BTP hosten.
Um die Funktionsweise zu erklären, erstelle ich einen einfachen MCP Server, der die aktuelle Zeit ausgibt. Abgelegt als time_server.py.
from mcp.server.fastmcp import FastMCP
from datetime import datetime
# Create an instance of the FastMCP server
mcp = FastMCP("TimeServer", stateless_http=True)
@mcp.tool(description="Provides the current time in ISO format as a string")
def get_current_time() -> str:
"""
Use this tool to get the current time in ISO format as a string.
Returns:
str: Current time in ISO format. The full format looks like 'YYYY-MM-DD HH:MM:SS.mmmmmm'. The default separator between date and time is 'T'. e.g 2025-10-17T17:04:22.739427.
"""
return datetime.now().isoformat()
Darüber hinaus erstelle ich einen Ressourcen MCP Server, der den Inhalt von denis_reis_cv.md bereitstellt. Gespeichert als cv_server.py.
from mcp.server.fastmcp import FastMCP
from pathlib import Path
import anyio
# Create an instance of the FastMCP server
mcp = FastMCP("CvServer", stateless_http=True)
@mcp.resource(
uri="data://cv",
name="DenisReisCv",
description="Provides the CV of Denis Reis.",
mime_type="text/markdown",
)
async def get_cv() -> str:
"""
Retrieves the professional CV of Denis Reis.
Returns:
str: The complete CV content in markdown format, or an error message if unavailable.
Raises:
Returns error message strings rather than exceptions for graceful degradation.
"""
try:
# Get the directory where this script is located
script_dir = Path(__file__).parent
cv_path = script_dir / "denis_reis_cv.md"
# Use anyio to perform file I/O in a thread pool to avoid blocking the event loop
cv_content = await anyio.Path(cv_path).read_text(encoding="utf-8")
return cv_content
except FileNotFoundError:
return "Error: CV file not found."
except Exception as e:
return f"Error reading CV: {str(e)}"
def main():
# Initialize and run the server
mcp.run(transport='stdio')
if __name__ == "__main__":
main()
Diese beiden Server werden über die server.py Datei gestartet. Beachten Sie, dass der Time MCP über <host>/time/mcp und der CV MCP über <host>/cv/mcp erreichbar sein wird.
import contextlib
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
import os
from time_server import mcp as time_mcp
from cv_server import mcp as cv_mcp
# Create a combined lifespan to manage both session managers
@contextlib.asynccontextmanager
async def lifespan(app: FastAPI):
async with contextlib.AsyncExitStack() as stack:
await stack.enter_async_context(time_mcp.session_manager.run())
await stack.enter_async_context(cv_mcp.session_manager.run())
yield
app = FastAPI(lifespan=lifespan)
app.mount("/time", time_mcp.streamable_http_app())
app.mount("/cv", cv_mcp.streamable_http_app())
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["POST", "GET", "OPTIONS"],
allow_headers=["*"],
)
PORT = os.environ.get("PORT", 10000)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=PORT)
Um die MCP Server als Remote Streamable HTTP Server bereitzustellen, richten wir diese auf SAP BTP ein. Die Erstellung einer Cloud Foundry App auf BTP habe ich Wie Sie eine App auf SAP BTP Cloud Foundry erstellen detailliert beschrieben.
Definieren Sie die folgenden Dateien:
manifest.yml
---
applications:
- name: mcp_demo
random-route: false
routes:
- route: https://mcp_demo.cfapps.eu10-004.hana.ondemand.com
path: ./
memory: 512M
disk_quota: 1024M
instances: 2
buildpacks:
- python_buildpack
command: python server.py
Procfile
web: python server.py
requirements.txt
anyio==4.7.0
fastapi==0.119.0
mcp==1.18.0
uvicorn==0.37.0
runtime.txt
python-3.13.x
Folgen Sie anschließend den Anweisungen, um die App über cf push bereitzustellen.
Nach der erfolgreichen Bereitstellung können die MCP Server über die URLs https://mcp_demo.cfapps.eu10-004.hana.ondemand.com/time/mcp sowie https://mcp_demo.cfapps.eu10-004.hana.ondemand.com/cv/mcp erreicht werden.
Planung mit SAP Business Planning and Consolidation leicht gemacht!
So erleichtern Sie die Entscheidungsfindung und gewinnen einen umfassenden Überblick über Ihr Geschäft! Mit diesem Buch lernen Sie, SAP BPC für die Unternehmensplanung einzurichten, zu nutzen und zu erweitern. Anhand zahlreicher Abbildungen werden die Grundprinzipien der BPC-Embedded-Anwendungen dargestellt.
MCP Server testen
Sie können den MCP Inspector nutzen, um Ihre MCP Server zu testen.
npx @modelcontextprotocol/inspector
Alternativ können Sie die beiden MCP Server direkt in Ihren Agenten einsetzen, z.B. GitHub Copilot in VS Code. Gehen Sie dazu im Agent Modus auf Einstellungen.

Wählen Sie anschließend Add MCP Server aus.

Wählen Sie nun als Typ HTTP aus.

Geben Sie nun die URL des MCP Servers, den Sie gerade auf BTP bereitgestellt haben ein.

Vergeben Sie anschließend eine eindeutige ID.

Selektieren Sie schließlich, ob der MCP Server Global oder nur in dem aktuellen Workspace verfügbar sein soll.

Nun wird die Konfiguration aktualisiert und Sie sehen, dass der Server erfolgreich gestartet wurde und ein Tool / Werkzeug identifiziert wurde.

Anbei die json Konfiguration:
{
"servers": {
"mcp-time": {
"url": "https://mcp_demo.cfapps.eu10-004.hana.ondemand.com/time/mcp",
"type": "http"
},
"mcp-cv": {
"url": "https://mcp_demo.cfapps.eu10-004.hana.ondemand.com/cv/mcp",
"type": "http"
}
},
"inputs": []
}
Sie können die Verfügbaren Tools auch über die Configure Tools Einstellung einsehen.


Die Ressourcen können unter Extensions → MCP Servers – Installed eingesehen werden.

Wählen Sie dazu die Option Browse Resources aus.

Wählen Sie anschließend die gewünschte Ressource aus.

Der Inhalt der Ressource wird angezeigt.

Wenn Sie nun eine Frage an den Github Copilot Agenten richten, wird er die ihm zur Verfügung stehenden Tools nutzen.

Ihre User beklagen sich über langsame Berichte?
- In meinem Newsletter lernen Sie, wie Sie Abhilfe schaffen.
- Entdecken Sie die Möglichkeiten der Performanceoptimierung.
- Praktische Anleitungen ermöglichen Ihnen schnelle Erfolge bei der Optimierung von SAP Systemen.
- Viele Tipps und Tricks zu SAP BI Themen.
- Holen Sie die maximale Performance aus Ihrem SAP BI!
- Bei der Anmeldung zu meinem Newsletter erhalten Sie das Buch „High Performance SAP BI“ als Willkommensgeschenk.










Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!