SAP MDK MCPサーバーでClaudeにMDKアプリを作らせる手順
SAP公式のMDK MCPサーバーをClaude Codeに登録し、OData連携のモバイルアプリを生成・検証・デプロイさせる手順と、Fiori・UI5向けサーバーとの使い分けです。
SAP MDK MCPサーバー(@sap/mdk-mcp-server)は、SAP Mobile Development Kit(MDK)のアプリ開発に必要な知識とCLI操作をAIエージェントへ渡すオープンソースのMCPサーバーです。SAPのGitHub組織が公開しており、ClaudeからはMCPツールとして呼び出せます。
MDKはメタデータ駆動でクロスプラットフォームのモバイルアプリを作るフレームワークで、SAP Business Technology Platformの一部です。この記事では、Claude Codeへの登録、接続前の準備、プロンプトの出し方、検証の回し方、Fiori・UI5向けサーバーとの使い分けを順に扱います。
5つのツールで何を任せられるか
サーバーが公開するツールは5本です。READMEは、ツールがAIモデル向けであって安定したAPIではないと注記しています。
| ツール | 役割 |
|---|---|
mdk-create | 役割テンプレート(CRUD・List Detail・Base)からプロジェクトやエンティティのメタデータを作る |
mdk-gen | 役割ページ・アクション・i18nファイルを生成し、JavaScriptルールの例を検索する |
mdk-manage | 役割ビルド・デプロイ・検証・移行・QRコード表示を行う |
mdk-docs | 役割ドキュメント検索、コンポーネントのスキーマ、プロパティ、使用例、サンプル検索 |
mdk-fetch-mobile-metadata | 役割Mobile ServicesのデスティネーションからOData $metadata を取り、.service.metadataとして保存する |
READMEが挙げる依頼の例は、ODataエンティティを表示する新規プロジェクトの生成、既存ページへのUIコントロール追加、スキーマの検証、旧プロジェクトの最新スキーマへの移行、デプロイ、オンボーディング用QRコードの生成、プロパティの説明です。
mdk-genのページ生成は、データバインド型とレイアウト型に分かれます。データバインド型で選べるコントロールにはObjectTable・FormCell・KeyValue・Timeline・Calendarなどがあり、レイアウト型ではTabsやSideDrawerNavigationなどを指定します。プロンプトに「ObjectTableで一覧、Tabsで画面を分ける」と書けば、Claudeが引数へ落とし込めます。
前提条件を先に確認する
接続前にそろえるものは次のとおりです。
- Node.js 24.11.1
- macOSはApple Siliconのみ。Intel Macはv0.4.0以降で非対応(onnxruntime-nodeがdarwin/x64バイナリの提供をやめたため)
- Linuxはx64・ARM64など、Windowsはx64・ARM64
- Cloud Foundry CLIとSAP BTPのCloud Foundry環境へのログイン
- VS Code用のMobile development kit拡張(1.32.0以降)
Intel Macでは、Rosetta 2でARM64版を動かすか、onnxruntime-node 1.24未満を使う旧バージョンに留める方法がREADMEに載っています。パフォーマンスは保証されていません。
新規プロジェクトの作成にはCloud Foundry CLIと.service.metadataファイルが要ります。このファイルには、Mobile Servicesに定義したモバイルアプリ、APIエンドポイント、アプリID、ODataメタデータを含む接続先(デスティネーション)の情報が入ります。
Claude Codeに登録する
インストールはnpmのグローバル導入です。
npm install -g @sap/mdk-mcp-server
which mdk-mcpREADMEのClaude Code向け設定は、~/.claude.jsonのmcpServersに次を足す形です。既存ファイルがある場合は、全体を置き換えずmdk-mcpの項目だけを足します。
{
"mcpServers": {
"mdk-mcp": {
"type": "stdio",
"command": "mdk-mcp",
"args": ["--schema-version", "26.6"]
}
}
}CLIで登録する場合は、Claude Codeのstdioサーバー登録の書式に従い、--より後ろをサーバー起動コマンドとして渡します。
claude mcp add --transport stdio mdk-mcp -- mdk-mcp --schema-version 26.6
claude mcp get mdk-mcpclaude mcp getは接続状態の確認に使えます。READMEの確認手順は、VS Code拡張のClaude Codeパネルで/mcpを実行し、mdk-mcpが並んでいるかを見る形です。
--schema-versionで指定できるのは26.6(既定)、26.3、25.9、25.6、24.11、24.7です。mdk-docsはfolderRootPathからプロジェクトのスキーマバージョンを判断するので、既存プロジェクトを触る場合は、そのプロジェクトのバージョンに近い値を選ぶ使い方になります。
Claude Desktopから使うときは設定が違います。commandにNode.jsの絶対パス(which nodeで取得)、argsにbuild/index.jsの絶対パスと--schema-versionを並べ、Claude Desktopを再起動します。
.service.metadataを用意してからプロンプトを出す
データバインド付きのページやアクションを生成するには、mdk-createとmdk-genが.service.metadataを必要とします。作る方法は2つあります。
.service.metadataの作成手順
- 1
CF環境にログインする
Cloud Foundry CLIで
cf login -a <エンドポイント> --ssoを実行します。 - 2
空のフォルダをVS Codeで開く
プロジェクト用の空フォルダを開き、コマンドパレットから「MDK: Open Mobile App Editor」を選びます。
- 3
アプリと接続先を選ぶ
新規または既存のモバイルアプリを選び、デスティネーションを指定して「Add App to Project」を押します。
もう一つはmdk-fetch-mobile-metadataをClaudeに呼ばせる方法です。appId(例: myapp.mdk.demo)とデスティネーション名を渡すと$metadataを取得して保存します。こちらもCF CLIのログインが前提で、本番環境はStandard、プレビュー環境はPreviewとlandscapeTypeで分けます。
規約をCLAUDE.mdに書いて暴走を止める
READMEは、AIコーディングアシスタントがMCPサーバーを適切に使うよう、プロジェクトのルールファイルに次の3行を書く例を示しています。
.service.metadataファイルを生成しないServicesフォルダに.xmlファイルを生成しない.project.jsonを変更しない
Claude CodeならCLAUDE.mdに置けます。Fioriツール側のREADMEも、Claude CodeではプロジェクトルートのAGENTS.mdまたはCLAUDE.mdにルールを書くよう案内しています。次は、READMEの3行に検証の約束を足した例です。
## MDKプロジェクトのルール
- .service.metadata は生成も編集もしない(VS Code拡張で作る)
- Services フォルダに .xml を作らない
- .project.json は変更しない
- ページやアクションを生成・編集したら、mdk-manage の validate を実行し、
エラーが残る間は完了と報告しない最後の1行はREADMEにない追加です。生成後にスキーマ検証を通すことを完了条件にすると、Claudeの出力を自分で読む前に機械的な足切りが入ります。
プロンプトの出し方と検証の反復
最初のプロンプトでは、データ源と画面構成を同時に指定します。
.service.metadata にある Incidents エンティティを一覧表示する
MDK プロジェクトを CRUD テンプレートで新規作成して。
一覧は ObjectTable、詳細画面は KeyValue で。
作成後に mdk-manage で validate を実行して結果を教えて。これは例示であり、実際にどのツールの組み合わせで進むかはClaudeの判断次第です。進め方は次の順が基本になります。
mdk-createでプロジェクトの骨格とエンティティのメタデータを作るmdk-genでページとアクションを足す(データバインド型は.service.metadataが必須)mdk-manageのvalidateでスキーマを検証する- 通ったら
build、続いてdeployでMobile Servicesへ載せる show-qrcodeでオンボーディング用QRコードを出し、端末側で確かめる
デプロイは外部のMobile Servicesへ反映する操作です。deployの前にClaudeの許可確認が入るよう、権限設定を「毎回確認」のままにしておくと、意図しない公開を防げます。READMEにも、IDEの設定によっては初回のツール呼び出しで承認が必要になると書かれています。ツールの呼び出し制御の考え方はClaude CodeのMCPサーバー設定ガイドにまとめています。
サンプル検索とオフラインOData
mdk-docsのsearch-samplesは、GitHubのチュートリアルとサンプルアプリを検索する機能です。使うには、先に知識の取り込み(ingestion)を実行します。対象はSAP-samples/cloud-mdk-tutorial-samplesとSAP-samples/cloud-mdk-samplesです。
export GITHUB_TOKEN="(個人アクセストークン)"
npm run ingest取り込みはオプションで、未実行でもサーバーは動きますが、search-samplesは結果を返しません。リポジトリをクローンした場合は取り込み済みデータが含まれないため、改めて実行が要ります。トークンはGitHub APIのレート制限を避けるためのもので、スコープはpublic_repoです。
オフライン対応アプリのデバッグには、ilodataコマンドを使ったOfflineストアの照会があります。MDK SDKのSAPOfflineOData-*-Tools.zipからilodataを展開し、.udbと.rq.udbのペアを同じフォルダへ置きます。そのうえで「CustomerStoreのCustomersから上位5件を取得して」のように自然文で頼むと、Claudeがコマンドを組み立てて実行する流れです。端末内のデータを開発中に確認する用途で、本番データを扱う場合はMCPセキュリティガイドの観点で範囲を絞ってください。
つまずきやすい点
- ツールが一覧に出ない: Cline向けの注記では、すぐに表示されないときはVS Codeの再起動が案内されています。Claude Codeでも設定変更後はウィンドウの再読み込みか再起動が必要です
- Intel Macで動かない: v0.4.0以降の仕様で、上記のとおりARM64が前提です
- 生成が
.service.metadataの不足で止まる:mdk-fetch-mobile-metadataかVS Code拡張で先に作ります - テレメトリ: 既定で個人を特定しない利用情報が収集されます。無効にするには
~/.fioritools/telemetrysettings.jsonでenableTelemetryをfalseにするか、環境変数SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRYをtrueにします
FioriやUI5向けサーバーとの使い分け
SAPの周辺には、用途の違うMCPサーバーが並んでいます。選ぶ軸は「何のアプリを作るか」です。
| サーバー | 対象 | 登録例 |
|---|---|---|
| MDK MCPサーバー | 対象MDKのモバイルアプリ | 登録例mdk-mcp |
Fiori MCPサーバー(@sap-ux/fiori-mcp-server) | 対象SAP Fiori elementsアプリの生成と変更 | 登録例npx @sap-ux/fiori-mcp-server |
UI5 MCPサーバー(@ui5/mcp-server) | 対象UI5フレームワークでの開発支援 | 登録例リポジトリの案内に従う |
Fiori MCPサーバーのREADMEには、Fiori elementsのリストレポートをCAPプロジェクトへ足す、ODataサービスから新規アプリを生成する、FCL(フレキシブルカラムレイアウト)を追加するといった依頼例が並びます。Claude Codeへの登録はclaude mcp add fiori-mcp -- npx --yes @sap-ux/fiori-mcp-server@<version> fiori-mcpです。READMEは最良の結果のために@cap-js/mcp-serverと@ui5/mcp-serverの併用を勧めています。
分かれ目は成果物です。モバイル端末にMDKクライアントで載せるアプリならMDK、Fiori elementsの画面をCAPやODataサービスの上に作るならFiori、UI5そのものの開発支援ならUI5です。1つのリポジトリでMDKアプリとFioriアプリを両方持つ場合は、サーバーを3つ並べて登録できます。ただし、同時に有効なMCPツールが増えるとClaudeが選び間違える余地も増えるので、作業対象のフォルダごとにプロジェクトスコープで登録を分けるほうが扱いやすくなります。
SAP BTP自体の操作を任せたい場合は、コミュニティ製のサーバーが中心です。Claude SAP連携ガイドで対象範囲を整理しています。
まとめ
MDK MCPサーバーの価値は、MDKのスキーマ知識とCLI操作をClaudeの手元に置く点にあります。準備の山は.service.metadataとCF環境で、ここを越えれば、生成からvalidate、build、deployまでを1つの会話で進められます。CLAUDE.mdに「.service.metadataを触らない」「検証が通るまで完了としない」を書いておくことが、最小の安全策になります。