mdk-mcp-server について
@sap/mdk-mcp-serverは、MDK開発者向けのオープンソースMCPサーバーです。AIエージェントに開発ガイド、プロジェクト固有の情報、テンプレート、MDK CLIツールを提供し、検証や移行、デプロイを支援します。
主な機能
- 01MDKのベストプラクティスとガイド
- 02プロジェクト固有のコンテキスト
- 03新規プロジェクト用テンプレート
- 04MDK CLIツールへのアクセス
- 05スキーマの検証と移行
活用シーン
- 01新しいMDKアプリプロジェクトの生成
- 02既存ページへのUIコントロール追加
- 03プロジェクトスキーマの確認や移行
- 04プロジェクトのデプロイとオンボーディングQRコード作成
MCP 対応
プロジェクト情報、テンプレート、MDK CLI機能を含むMDKの知識と開発ツールを、MCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
@sap/mdk-mcp-server へようこそ
Mobile Development Kit(MDK)向け MCP サーバーとは?
このオープンソースのサーバーは、AI エージェントに MDK に関する包括的な知識とツールを提供します。ベストプラクティスのガイドライン、プロジェクトに応じたコンテキスト情報、新規プロジェクト作成用のテンプレート、MDK CLI ツールへのアクセスを組み合わせることで、MDK MCP サーバーは AI エージェントを MDK 開発のエキスパートに変えます。
Mobile Development Kit とは?
Mobile Development Kit は、メタデータ駆動型のアプローチを用いて、開発者がクロスプラットフォームのモバイルアプリケーションを構築できる強力なフレームワークです。SAP Business Technology Platform の一部であり、SAP Mobile Services と緊密に統合されています。 SAP の大規模で複雑なモバイルアプリの一部は、MDK を使用して構築されています。その例として、SAP Service and Asset Manager があります。
目次
- セットアップ
- 利用可能なツール
- GitHub ナレッジの取り込み(上級者向け)
- オフライン OData のクエリ(上級者向け)
- サポート、フィードバック、貢献
- テレメトリ
- セキュリティ/情報開示
- 行動規範
- ライセンス
- 謝辞
セットアップ
プラットフォームのサポート
MDK MCP サーバーは、次のプラットフォームをサポートしています。
- macOS:Apple Silicon(ARM64)のみ
- ⚠️ 注記:onnxruntime-node ≥1.24 で darwin/x64 バイナリが廃止されたため、v0.4.0 以降では Intel Mac(x64)はサポートされていません
- Linux:x64、ARM64、およびその他のアーキテクチャ
- Windows:x64、ARM64
Intel Mac をお使いの場合は、次の方法が必要になることがあります。
- Rosetta 2 を使用して ARM64 バージョンを実行する(パフォーマンスは異なる場合があります)
- または、onnxruntime-node <1.24 を使用する以前のバージョンを使い続ける
インストール手順
-
node.js 24.11.1 をインストールします。
-
MDK MCP サーバーをインストールする方法は 2 つあります。
a. npm を使って、公開 npmjs レジストリから @sap/mdk-mcp-server をインストールします。
npm install -g @sap/mdk-mcp-serverb. オープンソースのコードリポジトリ https://github.com/SAP/mdk-mcp-server をクローンし、
npmを使ってインストールします。git clone https://github.com/SAP/mdk-mcp-server.git cd mdk-mcp-server npm i npm run build npm i -g @sap/mdk-mcp-server@. -
MCP クライアント(AI エージェント)を設定して、サーバーに接続します。設定方法は、使用する AI エージェントによって異なります。
VS Code の Cline: Cline 拡張機能を使用する例です。
- Cline を開き、プロンプトボックスの下にある Manage MCP Servers をクリックします。
- ダイアログで Settings をクリックします。MCP Servers ページが開きます。
- Configure MCP Servers をクリックします。エディターで
cline_mcp_settings.jsonファイルが開きます。 - JSON 設定ファイルの
mcpServersセクションに MDK MCP サーバーの設定ブロックを追加し、ファイルを保存します。サポートされているスキーマのバージョンは、26.6(デフォルト)、26.3、25.9、25.6、24.11、24.7 です。
{ "mcpServers": { "mdk-mcp": { "type": "stdio", "command": "mdk-mcp", "args": ["--schema-version", "26.6"] } } }注記:
Cline 拡張機能に利用可能なツールとともに MCP サーバーがすぐに表示されない場合は、VS Code を再起動してください。展開: Claude Code での使用方法(VS Code 拡張機能)
Claude Code は、設定から MCP サーバーを検出します。
- Claude Code の設定ファイルを開く(または作成します)。
~/.claude.json- 次の MCP サーバー設定を追加します。
{ "mcpServers": { "mdk-mcp": { "type": "stdio", "command": "mdk-mcp", "args": ["--schema-version", "26.6"] } } }注記:
~/.claude.jsonがすでに存在する場合は、ファイル全体を置き換えるのではなく、既存のmcpServersセクションにmdk-mcpエントリーをマージしてください。- VS Code のウィンドウを再読み込みするか、VS Code を再起動します。
インストールを確認する
VS Code で Claude Code パネルを開き、次を実行します。
/mcp使用可能な MCP サーバーとして
mdk-mcpが表示されます。展開:OpenCode での使用方法
OpenCode を使用する例:
{ "mcp": { "mdk-mcp": { "type": "local", "command": ["mdk-mcp", "--schema-version", "26.6"], "enabled": true } } }展開:Cursor での使用方法
~/.cursor/mcp.jsonファイルを編集します。{ "mcpServers": { "mdk-mcp": { "type": "stdio", "command": "mdk-mcp", "args": ["--schema-version", "26.6"] } } }展開:Claude Desktop での使用方法
Claude Desktop の設定ファイルでは、Node.js の絶対パスを使用してください。-
ターミナルで次のコマンドを実行して、Node.js のインストールパスを確認します。
which node/usr/local/bin/nodeや/opt/homebrew/bin/nodeのようなパスが出力されます。 -
~/Library/Application Support/Claude/claude_desktop_config.jsonを編集し、commandフィールドに絶対パスを指定します。{ "mcpServers": { "mdk-mcp": { "command": "/usr/local/bin/node", "args": ["/usr/local/lib/node_modules/@sap/mdk-mcp-server/build/index.js", "--schema-version", "26.6"] } } } -
Claude Desktop を再起動します。
注記: 実際の Node.js と MDK MCP サーバーのインストール場所に合わせて、パスを調整してください。
設定が完了すると、AI エージェントは MDK MCP サーバーにアクセスできるようになります。IDE の設定によっては、ツールの初回呼び出しを承認する必要があります。
-
ルールファイルを作成する:AI コーディングアシスタントがプロジェクトに適した方法で MCP サーバーを使用するように、
AGENTS.mdという名前のファイルでルールとガイドラインを定義します。VS Code の Cline 拡張機能で、プロンプトボックスの下にある Manage Cline Rules & Workflows アイコンをクリックし、+ をクリックして新しいルールファイル(例:AGENTS.md)を作成してから、以下のルール例を追加します。- `.service.metadata` ファイルを生成しないでください。 - `Services` フォルダーに `.xml` ファイルを生成しないでください。 - `.project.json` ファイルを変更しないでください。 -
LLM プロバイダーと AI モデルを確認します。
VS Code に Cline を追加すると、デフォルトの API プロバイダーとして機能します。SAP AI Core など、別の LLM プロバイダーを選択できます。 VS Code の Cline 拡張機能に SAP AI Core API プロバイダーを追加するには、次の手順に従います。
- Cline を開いた状態で、プロンプトボックスの下にある Select Model / API Providers をクリックします。
- API プロバイダー(SAP AI Core など)を選択し、詳細を入力します。詳しい設定方法はこちらをご覧ください。
- 使用する AI モデルを選択します。
-
SAP Mobile Services との連携: 新しい MDK アプリケーションを作成するために、MCP サーバーは Cloud Foundry CLI と、次の内容を含む
.service.metadataファイルを使用します。- SAP Mobile Services インスタンスで定義されたモバイルアプリケーション。
- Mobile Services API Endpoint
- Mobile Services App ID
- OData サービスのメタデータを含むモバイル宛先。
.service.metadataファイルの作成や更新を支援するツールを、VS Code 拡張機能:Mobile development kit extension for VS Code の一部として提供しています。このツールを使用して.service.metadataファイルを作成または更新する方法は次のとおりです。- Mobile development kit extension for VS Code バージョン 1.32.0 以降をインストールします。
- Cloud Foundry CLI をインストールします。
- SAP BTP Cloud Foundry 環境にログインします。詳しくは、こちらのヘルプドキュメントをご覧ください。
cf login -a <your target endpoint> --sso- マシン上に空のフォルダーを作成し、VS Code で開きます。
- VS Code でコマンドパレットを開き、MDK: Open Mobile App Editor を選択します。
- 新しいモバイルアプリを作成するか、既存のモバイルアプリを選択します。
- 宛先を選択します。
- Add App to Project をクリックします。
- SAP Mobile Services インスタンスで定義されたモバイルアプリケーション。
-
これで、MCP サーバーを使用した MDK 開発の環境が整いました。プロンプトを入力して、次の操作を実行できます。
- OData エンティティの情報を表示する新しい MDK プロジェクトを生成する。
- 指定したページに UI コントロールを追加して、既存のプロジェクトを拡張する。
- 現在の MDK プロジェクトのスキーマを検証する。
- 古い MDK プロジェクトを最新のスキーマに移行する。
- MDK プロジェクトをデプロイする。
- オンボーディング用の QR コードを生成する。
- 特定のプロパティについて説明する。
- コントロールのプロパティやドキュメントの任意の項目に関する情報を検索する。
利用可能なツール
メモ
ツールは AI モデルによる使用を目的としており、安定した API を構成するものではありません。
このリリースの MDK MCP サーバーには、AI エージェントが利用できる次のツールが含まれています。
| ツール | 説明 | パラメーター |
|---|---|---|
mdk-create | テンプレート(CRUD、List Detail、Base)を使用して、MDK プロジェクトまたはエンティティメタデータを作成します。新しいプロジェクトの初期化や、既存のプロジェクトへのエンティティメタデータの追加に使用します。 | - folderRootPath: 現在のプロジェクトのルートフォルダーのパス。 - scope: 作成の範囲:• project: 完全な構造を含む新しい MDK プロジェクトを初期化します• entity: 既存のプロジェクトにエンティティメタデータを追加します- templateType: 使用するテンプレートの種類(crud、list detail、base)。注:base テンプレートは、project スコープでのみ有効です。- oDataEntitySets: ユーザーのプロンプトに関連する OData エンティティセットを、コンマ区切りで指定します。- offline: オフラインモードでプロジェクトを生成するかどうか(project スコープにのみ適用)。オフラインが明示的に指定されていない場合は、false に設定します。 |
mdk-gen | ページ、アクション、i18n ファイル、ルール参照などの MDK アーティファクトを生成します。LLM 処理用のプロンプト(ページ、アクション、i18n)を返すか、ルールの例を検索します。 | - artifactType: 生成するアーティファクトの種類:• page: データバインディングまたはレイアウトを含む MDK ページファイル(.page)を生成します• action: MDK アクションファイル(.action)を生成します• i18n: 国際化ファイル(.properties)を生成します• rule: 関連する JavaScript ルールの例を検索して返します- folderRootPath: 現在のプロジェクトのルートフォルダーのパス(rule アーティファクトタイプでは不要)。ページアーティファクトの場合: - pageType: ページの種類(page):• databinding: OData にバインドされたコントロールを使用するデータ駆動型ページ• layout: 特定のレイアウトを使用する構造重視のページ- controlType: データバインディングページのコントロールの種類(pageType が databinding の場合は必須)。使用可能な種類:ObjectTable、FormCell、KeyValue、ObjectHeader、ContactTable、SimplePropertyCollection、ObjectCard、DataTable、KPIHeader、ProfileHeader、ObjectCollection、Timeline、TimelinePreview、Calendar。- oDataEntitySets: 任意:ページ生成に使用する OData エンティティセットを、コンマ区切りで指定します(pageType が databinding の場合のみ必須)。- layoutType: レイアウトページのレイアウトの種類(pageType が layout の場合は必須)。使用可能な種類:Section、BottomNavigation、FlexibleColumnLayout、SideDrawerNavigation、Tabs、Extension。アクションアーティファクトの場合: - actionType: アクションの種類(artifactType が action の場合は必須)。使用可能な種類:CreateODataEntity、UpdateODataEntity、DeleteODataEntity、CreateODataMedia、InitializeOfflineOData、DownloadOfflineOData、UploadOfflineOData、CancelDownloadOfflineOData、CancelUploadOfflineOData、ClearOfflineOData、CloseOfflineOData、CreateODataRelatedEntity、CreateODataRelatedMedia、CreateODataService、DeleteODataMedia、DownloadMediaOData、LogMessage、Message、Navigation、OpenODataService、ProgressBanner、PushNotificationRegister、PushNotificationUnregister、ReadODataService、RemoveDefiningRequest、SendRequest、SetLevel、SetState、ToastMessage、UndoPendingChanges、UploadLog、UploadODataMedia、UploadStreamOData、ChatCompletion、PopoverMenu、CheckRequiredFields、ChangeSet、OpenDocument、Banner、Filter。- oDataEntitySets: 任意:アクション生成に使用する OData エンティティセットを、コンマ区切りで指定します(artifactType が action の場合のみ必須)。i18n アーティファクトの場合: - folderRootPath 以外に必要なパラメーターはありません。 ルールアーティファクトの場合: - query: ルール参照の検索クエリ(artifactType が rule の場合は必須)。例:get app name、handle form validation、navigate to page など。 |
mdk-manage | ビルド、デプロイ、検証、移行、QR コードの表示、モバイルアプリエディターの操作を行う、包括的な MDK プロジェクト管理ツールです。 | - folderRootPath: 現在のプロジェクトのルートフォルダーのパス。 - operation: MDK プロジェクトで実行する操作。使用可能な操作:• build: MDK プロジェクトをビルドします• deploy: MDK プロジェクトを Mobile Services にデプロイします• validate: MDK プロジェクトを検証します• migrate: MDK プロジェクトを最新の MDK バージョンに移行します• show-qrcode: MDK プロジェクトの QR コードを表示します• open-mobile-app-editor: .service.metadata ファイルを作成するために Mobile App Editor を開く方法を案内します- externals: 任意:デプロイに含める外部パッケージ名の配列(例:[@nativescript/geolocation)。指定されていない場合は、プロジェクトの .vscode/settings.json にある mdk.bundlerExternals から自動的に読み取ります。どちらも指定されていない場合は、空の配列がデフォルト値になります。 |
mdk-docs | 検索、コンポーネントスキーマ、プロパティの詳細、使用例など、MDK ドキュメントにアクセスするための統合ツールです。 | - operation: 実行するドキュメント操作の種類:• search: 意味検索により MDK ドキュメントから上位 N 件の結果を関連度順に返します• component: コンポーネント名に基づいて MDK コンポーネントのスキーマを返します• property: MDK コンポーネントの特定のプロパティに関するドキュメントを返します• example: MDK コンポーネントの使用例を返します• search-samples: GitHub の MDK チュートリアルサンプル とコード例を検索します- folderRootPath: 現在のプロジェクトのルートフォルダーのパス。適切な MDK スキーマバージョンの判断に使用します。 - query: 検索クエリ文字列(search および search-samples 操作で必須)。 - component_name: コンポーネント名(component、property、example 操作で必須)。 - property_name: プロパティ名(property 操作で必須)。 - N: 検索操作で返す結果数(デフォルト:5)。 |
mdk-fetch-mobile-metadata | Mobile Services の宛先から OData の $metadata ドキュメントを取得し、MDK プロジェクト内に .service.metadata ファイルとして保存します。このファイルは、データバインドされたページやアクションを生成する mdk-create および mdk-gen ツールに必要です。CF CLI 認証(cf login)が必要です。 | - folderRootPath: .service.metadata の保存先となる MDK プロジェクトのルートフォルダーのパス。- appId: Mobile Services のアプリケーション ID(例:myapp.mdk.demo)。- destination: Mobile Services で設定された宛先名(例:IncidentManagement)。- pathSuffix: 任意:/$metadata の前に追加するパスサフィックス(例:/api/v1)。不要な場合は空のままにします。- landscapeType: Mobile Services のランドスケープの種類。本番環境では Standard(デフォルト)、プレビュー環境では Preview を使用します。 |
GitHub のナレッジの取り込み(上級)
MDK MCP サーバーは、GitHub リポジトリから追加のナレッジを取り込んで、search-samples 操作を強化できます。これにより、AI エージェントは MDK のチュートリアルサンプルやコード例を検索できます。
取り込まれる内容
デフォルトでは、サーバーは以下のナレッジを取り込みます。
- MDK チュートリアルサンプル:https://github.com/SAP-samples/cloud-mdk-tutorial-samples
- MDK サンプルおよびショーケースアプリ:https://github.com/SAP-samples/cloud-mdk-samples
取り込みを実行するタイミング
通常、取り込みが必要なのは以下のような場合だけです。
- 初回セットアップ時(
search-samples操作を使用する場合) - ナレッジベースの更新時(GitHub リポジトリに新しいサンプルが追加された場合)
- リポジトリのクローン後(取り込まれたデータはリポジトリに含まれていません)
**注:**取り込み処理は任意です。取り込みを行わなくてもサーバーは動作しますが、取り込みが完了するまでは
search-samples操作で結果が返されません。
取り込み方法
基本的な取り込み(利用可能な場合はキャッシュデータを使用):
npm run ingest
新規取り込み(キャッシュを無視し、すべてを再ダウンロード):
npm run ingest:fresh
GitHub トークンを使用(より高いレート制限が適用されるため推奨):
export GITHUB_TOKEN="your_github_token_here"
npm run ingest
カスタムオプション:
npm run build
node build/ingest-github-knowledge.js --no-cache --github-token "your_token" --chunk-size 800
コマンドラインオプション
| オプション | 説明 | デフォルト |
|---|---|---|
--no-cache | キャッシュを無視して、すべてのコンテンツを強制的に再ダウンロードします | キャッシュを使用 |
--github-token <token> | API リクエスト用の GitHub 個人アクセストークン | $GITHUB_TOKEN 環境変数 |
--vector-db <path> | ベクトルデータベースの保存先パス | ./knowledge.db |
--chunk-size <number> | 埋め込み用テキストチャンクのサイズ | 1000 |
--chunk-overlap <number> | チャンク間の重複量 | 200 |
GitHub トークンの設定
GitHub API のレート制限を回避するには、個人アクセストークンを作成します。
- https://github.com/settings/tokens にアクセスします
- 新しいトークンを生成(クラシック)をクリックします
- スコープとして
public_repo(パブリックリポジトリへの読み取りアクセス)を選択します - トークンをコピーし、環境変数として設定します。
export GITHUB_TOKEN="ghp_your_token_here"
取り込みの出力
取り込み処理では、以下を行います。
- 設定された GitHub リポジトリからコンテンツを取得します
- コンテンツを扱いやすいサイズに分割します
- AI モデルを使用して埋め込みを生成します
- ベクトルデータベースに埋め込みを保存します
search-samples操作によるセマンティック検索を有効にします
出力例:
Fetching from MDK Tutorial Samples...
Chunking content: 150 chunks created
Generating embeddings: 150/150 (100%)
✓ Ingestion complete!
トラブルシューティング
問題:GitHub API のレート制限を超過した
- 解決方法:GitHub トークンを設定します(上記を参照)
問題:取り込みに時間がかかりすぎる
- 解決方法:
--no-cacheは必要な場合にのみ使用します。キャッシュを使用した実行は大幅に高速です
問題:メモリ不足
- 解決方法:
--chunk-sizeを小さくするか、処理するリポジトリを減らします
オフライン OData のクエリ(上級)
MDK MCP サーバーを使用すると、ilodata コマンドラインツールでオフライン OData ストアにクエリを実行できます。オフラインアプリケーションのデバッグや、開発中にデバイス上へローカル保存されたデータの確認に役立ちます。
前提条件
- MDK SDK
- ilodata ツール:MDK SDK 内の
SAPOfflineOData-xx.xx.xx-Tools.zipから展開します - オフラインストアファイル:オフラインアプリケーションの
.udbファイルと.rq.udbファイルのペア
セットアップ手順
-
ilodata ツールを展開します:
# Download MDK SDK and locate the tools zip file unzip SAPOfflineOData-*.zip -d ~/ilodata-tools -
オフラインストアファイルを準備します:
# Copy your offline store files to the ilodata folder cp /path/to/your/app/*.udb ~/ilodata-tools/ cp /path/to/your/app/*.rq.udb ~/ilodata-tools/
オフラインストアへのクエリ
セットアップが完了したら、MDK MCP サーバーに自然言語でプロンプトを入力して、オフラインストアにクエリを実行できます。
プロンプトの例:
基本的なクエリ:
Open and query the CustomerStore offline store located at ~/ilodata-tools/CustomerStore.udb
and retrieve the top 5 entities from the Customers entity set
フィルター付きクエリ:
Query the SalesOrders offline store at ~/ilodata-tools/SalesOrders.udb
and get all orders where CustomerID equals `ALFKI`
特定のフィールド:
Open the Products offline store at ~/ilodata-tools/Products.udb
and retrieve ProductID, ProductName, and UnitPrice from the Products entity set
エンティティの件数を数える:
Query the Employees offline store at ~/ilodata-tools/Employees.udb
and count the total number of records in the Employees entity set
仕組み
AI エージェントは以下を行います。
- 自然言語のクエリを理解します
- 適切な
ilodataコマンドを組み立てます - オフラインストアに対してコマンドを実行します
- 読みやすい形式で結果を返します
サポート、フィードバック、コントリビューション
このプロジェクトでは、GitHub issuesを通じて、機能のリクエストや提案、バグ報告などを受け付けています。コントリビューションやフィードバックを歓迎しており、いつでもお待ちしています。
コントリビューション
以下の手順では、このプロジェクトのコード品質を維持するために、コントリビューターが環境をセットアップし、テストを実行する方法を説明します。すべてのコマンドは、ターミナルでプロジェクトフォルダーから実行してください。
- テスト:
npm test - ビルド:
npm run build - Lint:
npm run lint:all
コントリビューションの方法、プロジェクト構成、その他のコントリビューションに関する情報については、コントリビューションガイドラインをご覧ください。
テレメトリ
分析情報の収集は有効にも無効にもできます。デフォルトでは、製品の利用状況を把握し、MDK MCP Server の改善に役立てるため、個人を特定できない情報を収集します。オプトアウトする場合は、次のいずれかの方法でテレメトリを無効にできます。
方法 1:設定ファイル
ファイル ~/.fioritools/telemetrysettings.json を作成するか、変更してください。
{
"telemetrysettings": {
"telemetrySetting": {
"enableTelemetry": false
}
}
}
enableTelemetry を false に設定すると、テレメトリの収集が無効になります。
方法 2:環境変数
環境変数 SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY を true に設定してください。
export SAP_UX_FIORI_TOOLS_DISABLE_TELEMETRY=true
この環境変数を設定すると、テレメトリクライアントが無効になります。
セキュリティ/情報開示
セキュリティ上の問題につながる可能性のあるバグを見つけた場合は、報告方法についてセキュリティポリシーの手順に従ってください。セキュリティ関連の懸念や問題について、GitHub issues を作成しないでください。
行動規範
メンバー、コントリビューター、リーダーとして、誰もがハラスメントを受けることなくコミュニティに参加できるよう取り組むことを誓います。このプロジェクトに参加することで、常に行動規範を遵守することに同意したものとみなされます。
ライセンス
Copyright 2025 SAP SE or an SAP affiliate company. 著作権およびライセンスに関する情報については、LICENSEをご覧ください。サードパーティーのコンポーネントと、そのライセンスおよび著作権に関する情報を含む詳細は、でご確認いただけます。
謝辞
- @huggingface/transformers.js は、WordPiece トークナイザーの出力の比較に使用されています。
- @modelcontextprotocol/sdk は、MCP 用の SDK を提供します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。