sdcmodeler について
sdcmodeler は SDCStudio 向けの Python クライアント、CLI、MCP サーバーです。モデラーやエージェントが公開カタログを検索し、SDC4 モデルを見積もり・構築して、公開やパッケージ、アプリの生成を行えます。
主な機能
- 01公開コンポーネントカタログの検索
- 02モデルの再利用とコストの見積もり
- 03SDC4 モデルの組み立てと公開
- 04パッケージとアプリの生成
- 05ビルドジョブの状態確認
活用シーン
- 01新しいモデルでカタログのコンポーネントを再利用
- 02構築前にモデルのコストを見積もる
- 03モデルを公開してパッケージを取得
- 04モデルから Django アプリを生成
MCP 対応
`sdcmodeler mcp` コマンドで JSON-RPC 2.0 の標準入出力サーバーを起動します。カタログ検索、モデルの見積もりと構築、ジョブ確認、パッケージ取得、アプリ生成のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx sdcmodelerSDCSTUDIO_API_KEYシークレットAn SDCStudio API key (Settings, API Keys) with the scopes and spending limit the agent should have. Optional: the catalog and estimates work without one.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
sdcmodeler
**SDCStudio 向けのモデラークライアントです。**公開カタログを検索し、見積もりを取得して、SDC4 データモデルを組み立てて公開します。さらに、そのパッケージとアプリケーションを生成します。依存関係は httpx のみの Python クライアント、CLI、そしてあらゆるエージェントで使える MCP サーバー sdcmodeler mcp を提供します。
理由
エージェントが機能を構築するとき、その場でデータモデルを決めます。sdcmodeler を使えば、データはデフォルトで SDC にモデル化されます。エージェントはまずカタログを検索し、適合する公開済みコンポーネントがあれば再利用し、新しいものだけを作成してモデルを公開し、パッケージを取得します。共有・公開済みのコンポーネントで構成されるため相互運用性があり、すべてのレコードが公開済みスキーマに照らして検証されるため、検証可能です。
この名前は、ほかの Semantic Data Charter サーバーと同じ役割を表す命名パターンに従っています。sdcvalidator は検証し、sdcgovernance はガバナンスを担い、sdcreader は読み取り、sdcmodeler はモデル化します。また、SDCStudio がすべてのユーザーを指す際に使う「Modeler」という名称も表しています。
インストール
pip install sdcmodeler
カタログと見積もりにはアカウントは必要ありません。構築には SDCStudio API キーが必要です。Settings の API Keys で、利用者に付与するスコープと支出上限を設定して作成してください。
export SDCSTUDIO_API_KEY=sdcs_...
3 つのレイヤー
クライアント
from sdcmodeler import SDCStudioClient
c = SDCStudioClient() # key from $SDCSTUDIO_API_KEY, URL from $SDCSTUDIO_URL
hits = c.search_components("blood pressure", type="xdquantity")
tree = {
"label": "Vitals",
"components": [
{"ct_id": hits["results"][0]["ct_id"]}, # reuse: free
{"label": "Pulse", "data_type": "XdCount"}, # mint: 100 credits
],
"clusters": [],
}
estimate = c.estimate(tree, "Vitals") # the server's estimate: reuse, mint, problems, total_credits, wallet, key, estimate_id
result = c.assemble("Vitals", tree, estimate_id=estimate["estimate_id"]) # 500 credits plus the mints
すべてのリーフが既存の場合、サーバーは 1 回の呼び出しで組み立て、公開し、パッケージを生成します(result["mode"] == "reuse"。published と generated がその状態を示します)。新しいリーフがある場合、パイプラインが実行され、result["job_ct_id"] を c.job_status(...) または c.wait_for_job(...) で completed になるまでポーリングします。完了時には、ジョブが依頼どおりに公開と生成を済ませ、結果にモデルへのリンクが含まれています。publish=False にすると、担当者が確認できるよう下書きが残ります。見積もり後にツリーが変更された場合、サーバーは構築を拒否します。
402 は、クレジット数を含む InsufficientCredits です。キーのポリシー(spend スコープがない、または上限を超過した)による 403 は、KeyPolicyRefused です。クライアントがウォレットに入金することはありません。入金は担当者がウォレットページで行います。
CLI
sdcmodeler search "blood pressure" --type xdquantity
sdcmodeler models "patient"
sdcmodeler model <ct_id>
sdcmodeler artifact <ct_id> xsd --dir ./schemas
sdcmodeler estimate tree.json --title "Vitals"
sdcmodeler build tree.json --title "Vitals" --wait
sdcmodeler job <job_ct_id>
sdcmodeler package <ct_id> --dir ./packages
sdcmodeler app <ct_id> --profile lightweight --dir ./apps
sdcmodeler wallet
MCP サーバー
sdcmodeler mcp
SDK を使わない JSON-RPC 2.0 の標準入出力サーバーです。sdcvalidator と sdcgovernance も同じ方式で構築されています。クライアント設定に必要なのは次の項目だけです。
{"command": "uvx", "args": ["sdcmodeler", "mcp"], "env": {"SDCSTUDIO_API_KEY": "sdcs_..."}}
| ツール | 内容 | 支出 |
|---|---|---|
search_components | ラベル、タイプ、プロジェクトで公開カタログを検索 | いいえ |
list_models, get_model | 公開済みモデルとそのアーティファクトのルートを取得 | いいえ |
estimate_model | ツリーで再利用・作成されるものとコストを見積もり、estimate_id を返す | いいえ |
build_model | 組み立て、公開、生成(または下書きの場合は publish: false)。担当者が確認した estimate_id が必要。キーの上限を超える場合は拒否 | はい |
job_status | ID で指定した 1 つのジョブについて、ステータス、ステップ、現時点までのコスト、モデルへのリンクを取得 | いいえ |
download_package | キーを使ってモデルのパッケージ ZIP を取得。プライベートプロジェクトのモデルにも対応。generate が false でない限り、パッケージがなければ最初に生成(無料、1 回のみ) | いいえ |
generate_app | アプリケーションを生成してダウンロード。confirm_charge が必要。初回は 1,500 クレジット、以降は無料 | はい |
wallet | クレジット残高とキーのポリシーを取得 | いいえ |
**ポリシーはサーバー側にあります。**表示済みの見積もりなしに支出することはありません。build_model には、このプロセスで同じタイトルとツリーに対して estimate_model が返した estimate_id を渡します。キーの上限で停止します。見積もり額がキーで追加支出できる額を超える構築は、サーバーへのリクエスト前に拒否されます。支払いは決して行いません。402 が返された場合はウォレットページのアドレスを通知し、ツールは停止します。URL、キー、支払い方法を引数に取るツールはありません。キーはサーバーの起動環境に設定します。
パッケージかアプリケーションか
get_model は、アーティファクトの名前を指定します。XSD 1.1 スキーマ、インスタンステンプレート、JSON、JSON-LD、SHACL、HTML、GraphQL です。パッケージは実行時環境を伴わない契約です。既存のアプリケーション内の機能が、任意の言語でこれを実装し、sdcvalidator を使ってすべてのレコードをローカルで検証します。生成されるアプリケーション(軽量プロファイルまたはエンタープライズプロファイル)は、新しいサービスを作る場合に、同じパッケージ上で動作する Django 実装です。CordovaOS は、統合コードを一切使わずにデータを共有する、そのようなアプリケーション10個で構成されています。
ここにないもの
検証(sdcvalidator のサーバー)、ガバナンス(sdcgovernance のサーバー)、受領証の検証(sdcreceipt のサーバー)、既存データの取り込み(sdc-agents)は、それぞれ独立して登録されたサーバーです。sdcmodeler はこれらと連携しますが、再実装はしません。
リリース
手順は2つです。main にマージし、次に pyproject.toml のバージョンと一致する v<version> タグをプッシュします。release.yml がテストとビルドを実行し、Trusted Publisher を通じて PyPI に、また MCP レジストリに公開します。
ライセンス
Apache License 2.0。Copyright Axius SDC, Inc.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。