SAP UI5 MCPサーバーをClaude Codeに登録しUI5アプリを書かせる
@ui5/mcp-serverの10個のツールをClaude Codeに登録し、CLAUDE.mdの規約と環境変数まで整えてUI5アプリの作成・lint・manifest検証を任せる手順です。
UI5のMCPサーバー(@ui5/mcp-server)は、プロジェクトの雛形作成、API参照、lint、manifest検証をClaude Codeから呼べるようにする仕組みです。登録は1行のコマンドで済み、あとはCLAUDE.mdに規約を1節足せば使い始められます。
導入の流れ
- 1
サーバーを登録する
claude mcp addで@ui5/mcp-serverを登録し、claude mcp getで確かめます。 - 2
規約をCLAUDE.mdに書く
get_guidelinesを呼ばせる1節と、完了前の検証手順を足します。 - 3
環境変数と権限を整える
社内CDNやODataを使うときだけ環境変数を足し、読み取り系ツールを許可リストに入れます。
- 4
検証まで含めて依頼する
実装を頼むときに、linterとmanifest検証の実行までを指示に含めます。
SAP全体の連携先をどう選ぶかはClaude SAP連携ガイドにまとめています。ここではUI5に絞ります。
UI5 MCPサーバーはClaude Codeに何を渡すか
UI5 MCPサーバーは、エージェント型AIツールでUI5を開発するときの体験を良くするためのサーバーです。READMEは主な機能を3つ挙げています。UI5プロジェクトの新規作成の補助、UI5固有のエラーの検出と修正の支援、UI5固有の情報の提供です。
ツールは10個あります。README記載の説明を、作業の段階ごとに並べ直すと次のとおりです。
| 段階 | ツール | README上の説明 |
|---|---|---|
| 作る | ツールcreate_ui5_app | README上の説明テンプレートからUI5アプリの雛形を作る |
| 作る | ツールcreate_integration_card | README上の説明UI Integration Cardの雛形を作る |
| 調べる | ツールget_api_reference | README上の説明UI5のAPIドキュメントを取得して整形する |
| 調べる | ツールget_project_info | README上の説明UI5プロジェクトのメタデータと設定を取り出す |
| 調べる | ツールget_version_info | README上の説明UI5フレームワークのバージョン情報を取得する |
| 方針を読む | ツールget_guidelines | README上の説明UI5開発のベストプラクティスを返す |
| 方針を読む | ツールget_integration_cards_guidelines | README上の説明Integration Cards開発のベストプラクティスを返す |
| 方針を読む | ツールget_typescript_conversion_guidelines | README上の説明JavaScriptからTypeScriptへ変換するときの指針を返す |
| 検証する | ツールrun_ui5_linter | README上の説明@ui5/linterでコードを解析して問題を報告する |
| 検証する | ツールrun_manifest_validation | README上の説明manifestをUI5のManifestスキーマで検証する |
run_ui5_linterが使うのは、UI5公式の静的解析ツール@ui5/linterです。生成したコードの確認を、モデルの自己申告ではなくlinterの出力で行えるのが、このサーバーを入れる主な理由になります。
Claude Codeに登録する
必要なのは、Node.js v20.17.0以上(v22系ならv22.9.0以上)とnpm v8.0.0以上です。MCPクライアントにClaude Codeが明記されています。
登録コマンドはREADMEにそのまま載っています。
claude mcp add --transport stdio --scope user \
ui5-mcp-server -- npx -y @ui5/mcp-server--より前がClaude Codeのオプション、後ろがサーバーを起動するコマンドです。--scope userを付けると~/.claude.jsonに保存され、どのプロジェクトでも使えます。省略するとlocalスコープになり、登録したプロジェクトの中でだけ有効です。UI5案件が1つに決まっているなら省略したほうが、他のプロジェクトのツール一覧を汚しません。
登録できたかは次のコマンドで確かめます。
claude mcp get ui5-mcp-serverclaude mcp listなら全サーバーの状態を一覧でき、各サーバーの横に✔ Connectedか✘ Failed to connectが出ます。セッション内では/mcpでも確認でき、✔ Connectedと出ていれば準備完了です。
チームで共有するなら.mcp.json
リポジトリにコミットして全員で使うなら、プロジェクトスコープ(--scope project)にするか、プロジェクト直下の.mcp.jsonに書きます。READMEの標準設定をそのまま使った形は次のとおりです。
{
"mcpServers": {
"@ui5/mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@ui5/mcp-server"]
}
}
}.mcp.jsonのサーバーは、初回に承認が求められます。承認前はclaude mcp listにPending approvalと表示されます。
Windowsでの注意
ネイティブWindows(WSLではない環境)では、npxの前にcmd /cが必要になる場合があるとREADMEにあります。その場合の.mcp.jsonは次の形です。
{
"mcpServers": {
"@ui5/mcp-server": {
"type": "stdio",
"command": "cmd",
"args": ["/c", "npx -y @ui5/mcp-server"]
}
}
}CLAUDE.mdにUI5の規約を足す
サーバーを登録しただけでは、モデルがget_guidelinesを呼ぶとは限りません。READMEは、LLMにUI5 MCPサーバーを正しく使わせるルールをAGENTS.mdに足すよう案内していて、Claude Codeの場合はCLAUDE.mdに書くと明記しています。
READMEが示す規約は、次の1節だけです。
## Guidelines for UI5
Use the `get_guidelines` tool of the UI5 MCP server to retrieve
the latest coding standards and best practices for UI5 development.UI5 MCPサーバー側がベストプラクティスを持っているので、CLAUDE.mdには規約の中身を書き写さず、「get_guidelinesで取得する」とだけ指示する設計です。サーバーが更新されれば規約も追随します。
これに、プロジェクトで毎回守らせたい手順を足す例を挙げます。READMEの規約ではなく、運用上の追加案です。
## UI5の変更を終える前に
- 変更したUI5コードには `run_ui5_linter` を実行し、報告が残っていれば直す
- `manifest.json` を触った場合は `run_manifest_validation` も実行する
- 未知のコントロールやメソッドは、推測せず `get_api_reference` で確認する最後の1行は、記憶に頼ったAPI呼び出しを避けさせるための指示です。参照先を指定しておけば、書いたあとの検証もlinterに寄せられます。
環境変数で挙動を調整する
UI5 MCPサーバーはコマンドライン引数を受け付けず、設定はすべて環境変数で行います。
| 環境変数 | 既定値 | 役割 |
|---|---|---|
UI5_MCP_SERVER_ALLOWED_DOMAINS | 既定値localhost, services.odata.org | 役割各ツールが使うことを許すドメインのカンマ区切りリスト |
UI5_MCP_SERVER_RESPONSE_NO_STRUCTURED_CONTENT | 既定値なし | 役割何か値を入れると、応答のstructured contentを無効にする |
UI5_MCP_SERVER_RESPONSE_NO_RESOURCES | 既定値なし | 役割何か値を入れると、応答のresourcesを無効にする |
UI5_MCP_SERVER_CDN_URL | 既定値OpenUI5はhttps://sdk.openui5.org、SAPUI5はhttps://ui5.sap.com | 役割UI5リソースの取得先CDNを上書きする |
UI5_LOG_LVL | 既定値info | 役割ログレベル(silentからsillyまで) |
UI5_DATA_DIR | 既定値ホームの.ui5ディレクトリ | 役割APIリファレンスのキャッシュなどの保存先 |
社内ミラーのCDNを使う、ODataのサンプルサービス以外へ接続させる、といった場面で効くのは最初と4つ目です。Claude Codeでは--envで渡します。
claude mcp add --transport stdio --scope user \
--env UI5_MCP_SERVER_ALLOWED_DOMAINS=localhost,.example.com \
ui5-mcp-server -- npx -y @ui5/mcp-serverドメインの書き方には2つの決まりがあります。ワイルドカードのサブドメインはドメインの前にドットを付けます(.example.comはwww.example.comに一致しますが、example.com自体には一致しません)。空文字列にするとすべてのドメインを許可します。許可範囲を広げる設定なので、空文字列にするのは接続先を把握できる環境に限るのが安全です。
CDNを上書きすると、OpenUI5とSAPUI5の両方にそのURLが使われます。実行時には、プロジェクトのUI5バージョンがURLに自動で付け加えられます。
作業の流れの例
実際の依頼は、検証までを1回の指示に含めると安定します。次はプロンプトの一例です(READMEにある文面ではなく、ツール構成から組んだ例です)。
UI5のプロジェクト情報を確認して、既存のListReportに
ステータス列を追加して。UI5のガイドラインに従い、
終わったらlinterとmanifest検証を回して結果を報告して。この指示なら、ツールは概ね次の順で呼ばれる想定です。get_project_infoでバージョンと設定を読み、get_guidelinesで方針を取り、get_api_referenceで使うコントロールを確認し、コードを書いたあとにrun_ui5_linterとrun_manifest_validationを呼びます。ただし呼び出しの順序は保証されません。想定どおりに呼ばれたかは、Claude Codeの出力に出るツール名で確認できます。
JavaScriptで書かれた既存のUI5アプリをTypeScriptに移す場合は、get_typescript_conversion_guidelinesが専用の入口になります。変換指針をサーバーから取ってから着手するよう、プロンプトに書いておくとよいでしょう。
許可プロンプトを減らす
読み取り系のツールは毎回確認が出ると手間です。Claude Codeでは、MCPツールをmcp__<サーバー名>__<ツール名>の形で権限ルールに書きます。サーバー名は登録時のui5-mcp-serverです。.claude/settings.jsonの例は次のとおりです。
{
"permissions": {
"allow": [
"mcp__ui5-mcp-server__get_guidelines",
"mcp__ui5-mcp-server__get_api_reference",
"mcp__ui5-mcp-server__get_project_info"
]
}
}雛形を作るツールやlinterは、ファイルを書いたりコマンドを走らせたりする可能性があるため、許可リストに入れず都度確認にしておく運用が無難です。
つまずきやすい点
ツールが使えないときは、次の順で切り分けると原因に早く当たります。
UI5 MCPサーバーのツールが使えないとき
- Qclaude mcp listの一覧に ui5-mcp-server 自体が出ているか?答えがいいえ(一覧に出ない)答えがはい
localスコープで登録したプロジェクトとは別のディレクトリでClaude Codeを起動していないか確認します。どこでも使いたいなら
--scope userで登録し直します。.mcp.json経由ならPending approvalのままかもしれません。claudeを対話で起動して承認します。 - Q一覧で ui5-mcp-server が Connected になっているか?答えがいいえ(Failed to connect)答えがはい
✘ Failed to connectなら起動に失敗しています。Nodeのバージョンを確かめます。要件はv20.17.0以上、またはv22.9.0以上で、v20.11などでは動かない可能性があります。@ui5/linter単体の要件はこれより緩く書かれているため、linterが動くからといってサーバーも動くとは限りません。 - QWSL・macOS・Linuxで起動しているか?答えがいいえ(ネイティブWindows)答えがはい
前述の
cmd /c形式に書き換えます。
それでも起動が遅い・タイムアウトする
npx -yは初回にパッケージを取得するため、起動に時間がかかることがあります。Claude Codeはサーバーの起動待ち時間をMCP_TIMEOUT環境変数で変えられます(MCP_TIMEOUT=10000 claudeで10秒)。
接続できてからの落とし穴は2つあります。
落とし穴
ODataの接続先でブロックされる
既定で許可されているのはlocalhostとservices.odata.orgだけです。社内のODataサービスを参照するなら、UI5_MCP_SERVER_ALLOWED_DOMAINSに追加します。
落とし穴
resourcesに対応しないクライアント向けの設定を迷う
UI5_MCP_SERVER_RESPONSE_NO_RESOURCESは、CursorやGemini CLIのようにresourcesに対応しないクライアント向けの設定とされています。Claude Codeで応答がうまく扱えないと感じたときの切り分けにも使えます。
他のSAP向けMCPサーバーとの違い
SAPには、作業領域ごとに別のMCPサーバーがあります。UI5 MCPサーバーの守備範囲は、UI5のフロントエンド開発(アプリ、コントロール、manifest、Integration Cards)です。バックエンドのCAPサービスや、モバイルアプリ、Web Componentsは別のサーバーが受け持ちます。
| 作業 | npmパッケージ | READMEに載るツール |
|---|---|---|
| UI5アプリ(sap.mなど) | npmパッケージ@ui5/mcp-server | READMEに載るツール10個(前掲の表) |
| UI5 Web Components | npmパッケージ@ui5/webcomponents-mcp-server | READMEに載るツールget_component_api / get_guidelines / list_docs / get_doc |
| CAP(バックエンド) | npmパッケージ@cap-js/mcp-server | READMEに載るツールsearch_model / search_docs |
| MDK(モバイル) | npmパッケージ@sap/mdk-mcp-server | READMEに載るツールガイドライン、テンプレート、MDK CLIの呼び出し |
UI5 Web Componentsは、READMEによるとReact、Angular、素のJavaScriptから使うコンポーネント群のサーバーです。@ui5/mcp-serverが扱うUI5アプリとは別物なので、両方を触る案件では両方を登録します。Claude Codeへの登録コマンドもREADMEにあり、サーバー名はui5-webc-mcp-serverです。
claude mcp add --transport stdio --scope user \
ui5-webc-mcp-server -- npx -y @ui5/webcomponents-mcp-server2つのUI5系サーバーはどちらもget_guidelinesというツールを持ちます。Claude Codeではサーバー名がmcp__<サーバー名>__<ツール名>の形で付くので衝突はしません。ただしCLAUDE.mdに規約を書くときは、「UI5 MCPサーバーのget_guidelines」のようにどちらのサーバーかを書いておくと、取り違えを防げます。権限ルールもmcp__ui5-mcp-server__get_guidelinesとmcp__ui5-webc-mcp-server__get_guidelinesで別々に書きます。
CAP向けはREADMEに、claude mcp add --scope user cds-mcp -- npx -y @cap-js/mcp-serverの形が載っています。MDK向けはNode.js 24.11.1を前提にグローバルインストールする手順で、READMEではIntel Macが対象外(v0.4.0以降)と注記されています。UI5案件でも、CAPバックエンドと組む構成ならCAP向けを足す、という使い分けになります。
同じ名前のサーバーを複数のスコープに登録すると、claude mcp listと/mcpに競合の警告が出ます。接続に使われるのはlocal、project、userの順で優先度の高い1つで、フィールドは合成されません。--scope userで入れたものを.mcp.jsonでも定義したときは、project側の定義が使われます。
フレームワーク専用のMCPサーバーをClaude Codeに足す、という形は他にもあります。開発サーバーの状態を読ませる例はNext.js MCPサーバーのClaude Code設定ガイドが参考になります。同じclaude mcp addでも、UI5はnpxでローカル起動するstdioサーバーで、登録に--env以外の引数は要りません。
まとめ
UI5 MCPサーバーの導入は、登録コマンド1行とCLAUDE.mdの規約1節で完了します。効果を左右するのは、CLAUDE.mdに「完了前にlinterとmanifest検証を実行する」と書いておくかどうかです。環境変数は、社内CDNや社内ODataを使う場合にだけ触れば足ります。