で見た、MCP機能のO11版についてみていく。
なお、MCPに対応していればどのコーディングエージェントでも手順は実行可能とのことだが、ここではClaude Codeを前提とする。
環境情報
Claude Code v2.1.312 (Opus 5.5)
Personai Environment
Service Studio (Version 11.55.94)
Service Studio 11.55.91以上が必要
OSはMac
ドキュメント
ODC版のMCPとの相違点
- O11では、MCPサーバーは「Service Studio」、つまりローカルにあるIDE(ODCではクラウドにあり、OutSystems管理だった)
- ローカルのService Studioで開いているモジュールが操作対象となる
- 2026/10時点ではMCP経由の書き込み機能はまだベータ(Readはサポートされている)
利用手順
Service Studio側の準備
Service Studioを立ち上げたら、操作したいモジュールを開く。
「From an app」のオプションからBankingを選択して作っておいたBankingモジュールを開いておく。
ダイアログが開く。試すだけなら何も変えずに「Start MCP Server」ボタンをクリック。

これでService StudioにMCPサーバーが立ち上がる。
ダイアログに表示されていたアドレス(上の例ではhttp://127.0.0.1:41820/mcp)を、Claude Codeからの接続に使うのでコピーしておく。
Claude CodeにMCPサーバーを登録
Claude Codeを起動する側のCLI(ここではMacを使っているのでTerminalを使用)で以下のコマンドを入力して登録する。アドレス部分は前の手順でコピーしておいた物に置き換える。Claude Codeを起動する前に入力する。
claude mcp add --transport http servicestudio http://127.0.0.1:41820/mcp --scope user
実行すると「Added HTTP MCP server servicestudio with URL: http://127.0.0.1:41820/mcp to user config」と表示された。
Skillをインストール
GitのレポジトリをCloneし、その中にあるインストール用スクリプトを流すようだ。
作業用ディレクトリで以下を実行。
git clone https://github.com/OutSystems/outsystems11-mcp.git
cd outsystems11-mcp
bash scripts/install.sh
なお、最後の行は、Windowsでやる場合は「powershell -ExecutionPolicy Bypass -File scripts\install.ps1」に置き換える。
実行すると、最後に以下のように表示された。
Installed 'servicestudio-mcp-oml' to /Users/ユーザー名/.claude/skills/servicestudio-mcp-oml
Start a new Claude Code session for the skill to load.
Claude Codeを起動して動作確認
「claude」コマンドを入力して起動する。
起動したら、読み取り系の機能を使ってみる(書き込み系の機能と違ってすでに正式リリース済みなので)。
Service Studioで開いているモジュールの用途とアーキテクチャを説明して
プロンプトを入力すると、Service Studio側で承認を求めるダイアログが表示されるので「Allow」を選択。
今度は、Claude Code側でも作業ディレクトリ外へのアクセスなので承認を求められた。承認すると作業が行われ、以下の内容が返ってきた。
レスポンス
Banking は、個人向けオンラインバンキングのデモ/サンプル用 Reactive Web アプリの画面層(End-User モジュール) です。残高・取引の確認、送金、支店検索、問い合わせができます。業務データとその主要ロジックは別モジュールの Banking_CS が持つ構成と見られます。
読み取りのみで、モジュールは変更していません。
用途
デモ用と判断した根拠は次の3点です。
- ContactUs の処理に「デモ目的でメールは送信されない」という注記があります。
- Login 画面がサンプルユーザーの ID を取得しています。
- サンプルユーザーでログインする Customer_SampleUser_Login が参照されています(使用箇所は未確認)。
┌────────────────────────────┬──────────┬───────────────────────────────────────────────────────────────────────────────┐
│ 画面 │ フロー │ 内容 │
├────────────────────────────┼──────────┼───────────────────────────────────────────────────────────────────────────────┤
│ Home │ MainFlow │ 利用可能残高と取引一覧。検索語、期間、金額による絞り込み用の構造体があります │
├────────────────────────────┼──────────┼───────────────────────────────────────────────────────────────────────────────┤
│ SendMoney │ MainFlow │ 3ステップの送金ウィザード。送金元、送金先、定期送金のスケジュールを指定します │
├────────────────────────────┼──────────┼───────────────────────────────────────────────────────────────────────────────┤
│ BranchFinder │ MainFlow │ 地図での支店検索(Google Maps) │
├────────────────────────────┼──────────┼───────────────────────────────────────────────────────────────────────────────┤
│ ContactUs │ MainFlow │ 問い合わせ(実際には送信されません) │
├────────────────────────────┼──────────┼───────────────────────────────────────────────────────────────────────────────┤
│ UserProfile │ MainFlow │ ユーザープロフィール │
├────────────────────────────┼──────────┼───────────────────────────────────────────────────────────────────────────────┤
│ Login / InvalidPermissions │ Common │ ログインと権限エラー │
└────────────────────────────┴──────────┴───────────────────────────────────────────────────────────────────────────────┘
アーキテクチャ
[画面層] Banking(Reactive Web)
画面7、独自ブロック3、Client Action、MenuItem
│ 参照
├─ Banking_CS 業務データ、送金用構造体
├─ Users ログイン処理(User_Login)
├─ OutSystemsUI UI 部品、レイアウト
├─ OutSystemsMaps 地図、マーカー
└─ (System) User、Role などの標準エンティティ
- データ: Banking 自身のエンティティは、メニュー項目を持つ静的エンティティ MenuItem だけです。
- Banking_CS のデータ: Customer、Account、Transaction、Location、LocationContact などのエンティティを持っています。
- 独自のサーバーロジック: Banking にあるのは DoLogin と DoLogout の2つだけです。DoLogin は Users の User_Login を呼ぶ薄いラッパーです。
- 送金: 口座の更新と取引記録の作成は、参照先の Transaction_SendMoney が行います。提供元は Banking_CS と推測していますが、未確認です。
- クライアント側: 金額や日付の書式設定、現在地の取得、2点間の距離計算、スライダー制御が中心です。
- UI 構成: 独自ブロックは Menu、UserInfo、EmptyState_NoAccount の3つです。
- その他: このモジュールには、外部連携、Timer、Site Property はありません。カスタムロールもなく、標準の Anonymous と Registered のみです。
注意点(エラーなし、警告あり)
- アクセス設定の矛盾: 6画面に「ログイン必須なのにロールがない」という警告が出ています。一方で Login と BranchFinder には、未認証でサーバーアクションを公開しているというセキュリティ警告も出ています。実際の公開範囲は各画面の設定で確認が必要です。
- Google Maps のキー: BranchFinder の警告対象は、GetGoogleMapsServerKey の呼び出しです。匿名アクセスが有効なら、API キーの取得処理が未認証で呼ばれる可能性があります。
- 本番利用の場合: デモ向けの構成なので、サンプルログインと問い合わせ機能は見直しが必要です。
確認できていない範囲
- 各画面の内部ロジックとウィジェットは開いていません。画面の説明は、名前、Description、警告の内容に基づいています。
- Banking_CS は開いていないため、エンティティの項目やリレーション、送金処理の中身は確認していません。
- モジュールを開いたまま使える棚卸しプローブは編集セッションが必要だったため、使わずに個別の読み取りツールで調べました。
どうやらちゃんと動いていそうだ。
これなら、リバースエンジニアリングして実装から仕様書起こしなども簡単にできそう。
書き込み(ベータ)も試してみる
ここではクイックに、「本日追加されたTransactionで、IsUrgentのものを抽出し管理者当てにメール送信するTimerを作成してください。ただし、この環境はデモ環境なので、実際のメール送信は行わず、メール送信処理のプレースホルダーとなるServer Actionを空の状態で作成してそのActionを呼ぶだけとします」としてみた。
Claude Code側でツールを呼びながら設計を検討し、実装が決まったらマージリクエストをMCPに対して投げる。
するとService Studio側で以下のマージダイアログが表示される。マージができたらいつものようにPublishすればよい。なお、どうも現在のバージョンではTimerのスケジュール設定には対応していないようで、スケジュールを設定する内容だとエラーになったため、明示的にスケジュールなしで、と指定した。


