AIと外部のサービスなどとを接続するためのMCPが、ODCの機能としてリリースされた。
これで、Claude CodeなどのコーディングエージェントからODCを操作したり、情報を抜き出したりできる。
まずは、基本的な使い方を確認する。
環境情報
Claude Code v2.1.294 (Opus 5.5)
ODC Personal Edition
ドキュメント
起点になるドキュメント→
OutSystems MCP
セットアップ方法(特定のMCP hostに限定しない)→
Connect MCP hosts to OutSystems MCP
MCP hostというのはClaude CodeのようにMCPサーバーに対してつなぎに行く側のこと。
Claude Code向けセットアップ方法:
Get started with OutSystems MCP
Claude CodeをMCPに接続する
使用するコーディングエージェントによって接続方法は異なるらしい。
Claude Codeの場合は、OutSystemsが提供するClaude Code pluginを使用する。
pluginをインストール
Claude Codeのpluginはskillやagentなんかをひとまとめにしたもの。
Claude Codeのドキュメント:Create a marketplaceによると、marketplaceというのは作ったpluginを配布する場所、くらいの意味のようだ。
事前にODC Portalのホスト名部分(XX.outsystems.devの部分)を確認しておく。
CLIで以下のコマンドを順に入力。2番目のコマンドの<host>部分を確認しておいた値で置き換える。
claude plugin marketplace add OutSystems/outsystems-mcp
claude plugin install outsystems@outsystems --config tenant_hostname=<host>
インストール確認コマンドとその結果(<host>部分は上で入力した値)
claude mcp list
plugin:outsystems:outsystems: https://<host>/mcp (HTTP) - ! Needs authentication
起動とサインイン
CLIで「claude」と入力してClaude Codeを起動。
OutSystemsのskillが入っているので、OutSystems関係の依頼をすると、MCPを利用してくれるようだ。最初のアクセス時には認証が必要。
接続先のOutSystems環境で直近にPublishしたAppとその日付は?
⏺ Skill(outsystems:outsystems)
Successfully loaded skill
16 skills available
Called plugin:outsystems:outsystems
OutSystems環境(<host>)を読み取るにはサインインが必要です。
次のURLをブラウザで開いてサインインしてください。
<ODC認証用のURL>
<ODC認証用のURL>をブラウザのアドレスバーに貼り付けてアクセス。
本来はODCのログイン画面が開くと思うが、私はログイン済みだったので認証に成功したというメッセージが表示された。
Claude Codeに戻ってサインインした旨伝えると以下のように正しい答えが返ってきた。
直近にPublishされたAppは MinimumEnterprise です。
- App: MinimumEnterprise(WebApplication)
- Asset key: 1f5fc1c2-2c47-4665-bf5d-03d87e75059c
- Revision: 2
- Publish日時: 2026-09-26 10:55 UTC(日本時間 19:55)
接続先はテナント <host> です。環境はDevelopmentの1つだけです(env_key <stageのkey>)。
各アセットの最新リビジョン日時を比べて判断しました。参考に、その次に新しいものを挙げます。
- (System)(システムライブラリ):2026-09-22
- Template_MobileApp:2026-09-16
- Test:2026-09-12(rev 206)
こういう回答が滑らかに返ってくるのはよい。調査が捗りそう。
いくつか簡単な操作を試してみる。
参照を調べる
まずLibraryを見つけて、そのConsumerを確認してみたい。
接続先にあるLibraryとそのConsumer数を教えて
☐ 集計方法
│ Consumer数の集計方法を選んでください。テナントにはLibraryが24個あります(LowCode 8、Extension 11、Widget 1、Mobile 2、External 2)。
❯ 1. 削除影響分析(推奨)
各Libraryに「削除したら何が壊れるか」の分析を24回実行し、依存元を正確に数えます。読み取り専用で実際の削除は行いませんが、削除に関わる操作なので確認しています。
2. 参照リストを逆引き
Library以外の約36アプリについて参照リストを1件ずつ取得して集計します。インデックスはEntity参照しか確実に拾わないことがあり、Action・Block・Themeだけの利用は漏れる可能性があります。
3. Type something.
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
4. Chat about this
Claude Codeは、プロンプトが曖昧だったりオプションが複数あるときは、確認の質問を投げてくることがある。
Entityの参照以外はうまく拾ってくれないと選択肢に書いてあるが、意図としては「2」なのでこちらを選択してみた。
本当に全Appに対して参照を拾っている(=App数分だけリクエストを投げている)ようだ。skillのおかげか、OutSystemsのこともわかっている回答になっている。ただ、参照取得には制限もあるようだ。
テナント内のLibraryとConsumer数
テナント(<host>)にはLibraryが24個あります。参照リストの逆引きで1件以上のConsumerが見つかったのは6個だけです。ただし、この数字はEntityを使った参照しか数えていません。Action・Block・Themeだけで使っているアプリは含まれないので、実際より少なく出ている可能性があります。
Consumerが見つかったLibrary
┌───────────────────┬─────────┬──────────────────────────────────────┬───────────────────────────────┐
│ Library │ 種別 │ Asset key │ Consumer数 │
├───────────────────┼─────────┼──────────────────────────────────────┼───────────────────────────────┤
│ (System) │ LowCode │ 478870b9-2d60-4f73-9eb3-7cd8b994a737 │ 39(調べた全アプリ) │
├───────────────────┼─────────┼──────────────────────────────────────┼───────────────────────────────┤
│ OutSystems UI │ LowCode │ 8be17f2a-431c-4958-b894-c77b988a7271 │ 19 │
├───────────────────┼─────────┼──────────────────────────────────────┼───────────────────────────────┤
│ OutSystems Charts │ LowCode │ 38b70e23-50fc-4710-80cf-3682a9dc998a │ 15 │
├───────────────────┼─────────┼──────────────────────────────────────┼───────────────────────────────┤
│ OutSystems Maps │ LowCode │ 95bb31d1-f079-4fd6-ab2e-5c8326855aaa │ 13 │
├───────────────────┼─────────┼──────────────────────────────────────┼───────────────────────────────┤
│ Haptics Plugin │ Mobile │ 71eb9c16-cb8c-413d-ac02-d99b012a9ab2 │ 2(TestMobile, MobileUITest) │
├───────────────────┼─────────┼────────────────────────────────────────────┤
│ Keyboard Plugin │ Mobile │ 9a38f258-1563-42be-a22a-2b6df0af689a │ 2(TestMobile, MobileUITest) │
└───────────────────┴─────────┴────────────────────────────────────────────┘
Consumerが見つからなかったLibrary
以下はConsumer 0件と出ましたが、上の理由で実際に使われていないとは限りません。
- LowCode: TestLibrary, MarkdownRenderer, LiveStyleGuide_Theme, BDD Framework
- Widget: MobileUI
- Extension(11個): Zip, Xml, URL, Text, TextDictionary, Security, Sanitization, Math, HTTP, DateTime, BinaryData
- External: JapaneseCharacters, IQiitaSample2
ExtensionとExternalのLibraryはActionとして呼び出すのが普通なので、ここでは拾えません。たとえばJapaneseCharactersTestはJapaneseCharactersを使っていそうですが、この方法では検出されませんでした。
数字の範囲
- Consumer数は、参照リストを取得できた39アセットだけから数えています。
- 取得できなかったのはTemplate_MobileAppとMobileUIです。システムモジュールまたは非対応の形式のため、参照リストを読めませんでした。
- Keyboard PluginとHaptics PluginもMobileUIと同じ形式だては調べていません。
正確な数が必要なLibraryがあれば言ってください。そのLibraryついて削除影響分析(読み取り専用で、実際には何も削除しません)を実行します。
Appの設計情報を抜いてみる
試しに画面イメージ取得を依頼、ODC Studioで開いた時の設計イメージではなくブラウザで開いた時の実行イメージの方を取得した(ローカルでブラウザ起動してページを表示して撮影)。本当はODC Studioで開いた時のイメージが欲しかったので聞いてみたが「OutSystemsのMCPには、ODC Studioの編集画面を描画する機能がありません。」とのことだった。
Test AppのGallery Screenの画面イメージを取得して。
Gallery画面は認証不要(Roleなし)のようなので、ローカルのヘッドレスブラウザで撮影を試みます。
Testアプリ(asset key 1bfe99c9-6b9a-4686-95af-6de3c8959385)のGallery画面を、Development環境に公開中のrev 206からキャプチャしました。
画面の内容
- タイトルは「Product Overview」です。
- 商品カードが4列のグリッドで並んでいます(ヘッドホン、ノートPC、時計など。画像・商品名・価格つき)。
- 右側のサイドバーに、検索ボックスとフィルタがあります。
- カテゴリ:Smartwatches、Speakers、Headphones など8種類
- 価格:0〜1600のスライダー
- ヘッダーにはメニュー(Test、Dummies)とLoginリンクがあります。
この画面にはRoleが設定されていないため、ログインせずに撮影しています。撮影には、ローカルのヘッドレスChromeを1440px幅で使いました。
撮れているのは画面の上部(3行目のカード)までです。ページ全体やスマホ幅が必要なら撮り直します。
Settingの一覧
以下のように聞いてみたが、『「現在の値」はODC Portal側で管理されていて、OutSystemsのMCPにはそれを読むツールがありません。』、Settingのリストは参照用インデックスにないのでMentorに問い合わせてAppを開いて確認した結果を返してくれた。
Test AppのSetting一覧を取得して(来歴:どのLibraryから来たかあるいはそのAppで定義されたか、名前、デフォルト値、現在の値)
リストは表で出してくれたが、
- 現在の値は(↑の通り)MCPにツールがなくて取れない
- Library由来のSettingについては『Mentorは「参照しているLibrary由来のSettingはない」と答えましたが、これは鵜呑みにしないでください。Mentorが読める範囲に、Library由来のSettingが含まれていないだけの可能性があります。』
という制限がある。
現段階で運用ツールに使うなら、App・Libraryを列挙してそれぞれで定義されているSettingリストを取得する、くらいかな。それでもだいぶ助かるが。
ちなみにODC REST APIを使えば現在値はとれるので、Claude Codeを使って取得スクリプトを作成し、さらにそのスクリプトをClaude Codeに渡してやれば現在地もとれそう。
Usage
この記事分の調査で、ClaudeのCurrent SessionのUsageは10%くらい消費(Pro plan)。大量のApp・Libraryを対象にするときは注意したほうがよさそう。