Claude Media
SAP MDK MCPサーバーでClaudeにMDKアプリを作らせる手順

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-mcp

READMEの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-mcp

claude 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. 1

    CF環境にログインする

    Cloud Foundry CLIでcf login -a <エンドポイント> --ssoを実行します。

  2. 2

    空のフォルダをVS Codeで開く

    プロジェクト用の空フォルダを開き、コマンドパレットから「MDK: Open Mobile App Editor」を選びます。

  3. 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の判断次第です。進め方は次の順が基本になります。

  1. mdk-createでプロジェクトの骨格とエンティティのメタデータを作る
  2. mdk-genでページとアクションを足す(データバインド型は.service.metadataが必須)
  3. mdk-manageのvalidateでスキーマを検証する
  4. 通ったらbuild、続いてdeployでMobile Servicesへ載せる
  5. 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を触らない」「検証が通るまで完了としない」を書いておくことが、最小の安全策になります。

この記事を共有:XはてブLinkedIn