mcpField
C
catalog-item-generation

catalog-item-generation

github.com/happy-technologies-llc開発4141 回インストール2 日前に更新
リポジトリ

catalog-item-generation について

catalog-item-generation は、自然言語のサービス説明を設定済みの ServiceNow カタログアイテムに変換するスキルです。サービスオーナー向けに、変数、カテゴリ、承認、履行設定を扱います。

主な機能

  1. 01説明文からカタログアイテムを生成
  2. 02変数と選択肢の作成
  3. 03アイテムをカタログカテゴリに分類
  4. 04承認ルールとワークフローの設定
  5. 05変数セットと動的フォームの構成
  6. 06カタログアイテムの検証と有効化

活用シーン

  1. 01サービス説明から申請フォームを作成
  2. 02アイテムの価格に応じた承認手順の追加
  3. 03複数のカタログアイテムを一括作成

MCP 対応

ServiceNow MCP ツールでテーブルを照会し、レコードの作成・更新、類似アイテムの検索、スキーマ確認、バックグラウンドスクリプトの実行を行います。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill catalog-item-generation

インストール後、Claude Code で/catalog-item-generationを入力して読み込まれたか確認します。

詳細

カタログアイテムの生成

概要

このスキルを使用すると、自然言語による説明から、完全なサービスカタログアイテムを生成できます。対象となる内容は次のとおりです。

  • プレーンテキストの説明から、必要なすべてのフィールドを含む sc_cat_item のカタログアイテムを作成する
  • アイテムの要件に基づいて、item_option_new にカタログ変数(質問/フィールド)を生成する
  • sc_category と sc_cat_item_category を使用して、アイテムをカテゴリに割り当てる
  • アイテムの承認ルールとワークフローを設定する
  • 動的なフォームの動作に必要な変数セット、UI ポリシー、クライアントスクリプトを設定する
  • エンドユーザーが利用できるよう、特定のカタログとカテゴリにアイテムを公開する

使用する場面: サービスオーナーが新しいカタログの提供内容を平易な言葉で説明し、それを変数、承認、フルフィルメントルールを含む、完全に設定された ServiceNow カタログアイテムに変換する必要がある場合です。

価値: カタログアイテムの作成時間を数時間から数分に短縮し、一貫性のある変数名と設定を確保して、組織の承認およびフルフィルメント標準を自動的に適用します。

前提条件

  • プラグイン: com.glideapp.servicecatalog(サービスカタログ)
  • ロール: catalog_admin、catalog_manager、または admin
  • アクセス権: sc_cat_item、sc_category、sc_cat_item_category、item_option_new、およびワークフローテーブルへの読み取り/書き込みアクセス権
  • 知識: 組織のカタログ構造、承認ポリシー、フルフィルメントグループに関する理解

手順

ステップ 1:自然言語の説明を分析する

ユーザーの説明を解析し、カタログアイテムの構成要素を特定します。

構成要素抽出する内容例
アイテム名簡潔で説明的なタイトル"新しいノートパソコンのリクエスト"
説明提供内容の詳細な説明"仕様を指定して新しいノートパソコンをリクエストする"
カテゴリカタログ内の配置先"ハードウェアのリクエスト"
変数申請者が入力する質問/フィールドモデル、RAM、ストレージ、業務上の必要性
承認承認が必要な担当者マネージャー、2000 ドル超の場合は IT ディレクター
フルフィルメントリクエストを処理する担当者割り当てグループ "ハードウェアチーム"
価格費用または価格モデル基本価格 1200 ドル、モデルによって変動
ステップ 2:対象カテゴリを検索または作成する

既存のカテゴリを検索し、アイテムを適切な場所に配置します。

MCP を使用する(Claude Code/Desktop):

Tool: SN-Query-Table
Parameters:
  table_name: sc_category
  query: active=true^titleLIKEHardware
  fields: sys_id,title,description,parent,sc_catalog,active,icon
  limit: 10

REST API を使用する:

GET /api/now/table/sc_category?sysparm_query=active=true^titleLIKEHardware&sysparm_fields=sys_id,title,description,parent,sc_catalog,active,icon&sysparm_limit=10&sysparm_display_value=true

必要に応じて新しいカテゴリを作成する:

Tool: SN-Create-Record
Parameters:
  table_name: sc_category
  fields:
    title: "Hardware Requests"
    description: "Request new hardware including laptops, monitors, peripherals, and accessories"
    sc_catalog: [catalog_sys_id]
    parent: [parent_category_sys_id]
    active: true
    icon: "hardware-laptop"
ステップ 3:カタログアイテムを作成する

すべての基本フィールドを含むカタログアイテムレコードを生成します。

MCP を使用する:

Tool: SN-Create-Record
Parameters:
  table_name: sc_cat_item
  fields:
    name: "New Laptop Request"
    short_description: "Request a new laptop with your preferred specifications"
    description: |
      Use this form to request a new laptop computer. Select your preferred model,
      specifications, and provide business justification. Requests over $2,000 require
      IT Director approval.

      **Included with all laptops:**
      - Standard software image
      - 3-year warranty
      - Docking station and power adapter

      **Expected delivery:** 5-10 business days after approval
    category: [category_sys_id]
    sc_catalogs: [catalog_sys_id]
    active: true
    availability: on_desktop
    type: item
    fulfillment_group: [hardware_team_sys_id]
    delivery_time: "2026-03-19 08:00:00"
    price: 1200
    recurring_price: 0
    order: 100
    icon: "hardware-laptop"
    mandatory_attachment: false
    request_method: order_guide

REST API を使用する:

POST /api/now/table/sc_cat_item
Content-Type: application/json

{
  "name": "New Laptop Request",
  "short_description": "Request a new laptop with your preferred specifications",
  "description": "Use this form to request a new laptop computer...",
  "category": "[category_sys_id]",
  "sc_catalogs": "[catalog_sys_id]",
  "active": "true",
  "type": "item",
  "fulfillment_group": "[hardware_team_sys_id]",
  "price": "1200",
  "order": "100"
}
ステップ 4:カタログ変数を生成する

申請者が入力するフォーム変数(質問)を作成します。

MCP を使用する:

Tool: SN-Create-Record
Parameters:
  table_name: item_option_new
  fields:
    cat_item: [cat_item_sys_id]
    name: "laptop_model"
    question_text: "Laptop Model"
    type: 3
    choice_table: ""
    default_value: "standard"
    mandatory: true
    order: 100
    tooltip: "Select the laptop model that best fits your work requirements"

変数タイプのリファレンス:

タイプコードタイプ名用途
1はい/いいえブール値の選択
2複数行テキスト長い説明、理由
3複数選択ドロップダウンでの選択
5選択ボックス複数選択オプション
61 行テキスト短いテキスト入力
7チェックボックスオプションの切り替え
8参照別のテーブルレコードへのリンク
9日付日付ピッカー
10日付/時刻日付と時刻のピッカー
14マクロ表示専用情報
21リストコレクター複数の参照先を選択
24マスク機密情報の入力

フォーム全体に必要な複数の変数を作成する:

Tool: SN-Execute-Background-Script
Parameters:
  description: Create catalog item variables for laptop request
  script: |
    var itemId = '[cat_item_sys_id]';
    var variables = [
      { name: 'laptop_model', question_text: 'Laptop Model', type: 3, mandatory: true, order: 100, tooltip: 'Select your preferred model' },
      { name: 'ram_size', question_text: 'RAM (Memory)', type: 3, mandatory: true, order: 200, default_value: '16gb' },
      { name: 'storage_size', question_text: 'Storage', type: 3, mandatory: true, order: 300, default_value: '512gb' },
      { name: 'additional_software', question_text: 'Additional Software Required', type: 2, mandatory: false, order: 400 },
      { name: 'business_justification', question_text: 'Business Justification', type: 2, mandatory: true, order: 500, tooltip: 'Explain why this laptop is needed' },
      { name: 'needed_by_date', question_text: 'Date Needed By', type: 9, mandatory: false, order: 600 },
      { name: 'replace_existing', question_text: 'Is this replacing an existing laptop?', type: 1, mandatory: true, order: 700, default_value: 'false' },
      { name: 'existing_asset_tag', question_text: 'Existing Asset Tag', type: 6, mandatory: false, order: 800, tooltip: 'Enter asset tag of laptop being replaced' }
    ];

    variables.forEach(function(v) {
      var gr = new GlideRecord('item_option_new');
      gr.initialize();
      gr.cat_item = itemId;
      gr.name = v.name;
      gr.question_text = v.question_text;
      gr.type = v.type;
      gr.mandatory = v.mandatory || false;
      gr.order = v.order;
      if (v.default_value) gr.default_value = v.default_value;
      if (v.tooltip) gr.tooltip = v.tooltip;
      gr.active = true;
      gr.insert();
    });

    gs.info('Created ' + variables.length + ' variables for catalog item');

複数選択変数に選択肢を追加する:

Tool: SN-Execute-Background-Script
Parameters:
  description: Create choices for laptop model variable
  script: |
    var choices = [
      { text: 'Standard (Dell Latitude 5540)', value: 'standard', price: 1200, order: 100 },
      { text: 'Performance (Dell Latitude 7640)', value: 'performance', price: 1800, order: 200 },
      { text: 'Developer (MacBook Pro 14")', value: 'developer', price: 2400, order: 300 },
      { text: 'Executive (MacBook Pro 16")', value: 'executive', price: 3200, order: 400 }
    ];

    choices.forEach(function(c) {
      var gr = new GlideRecord('question_choice');
      gr.initialize();
      gr.question = '[laptop_model_var_sys_id]';
      gr.text = c.text;
      gr.value = c.value;
      gr.price = c.price || 0;
      gr.order = c.order;
      gr.inactive = false;
      gr.insert();
    });

    gs.info('Created ' + choices.length + ' choices for laptop model');
ステップ 5:承認ルールを設定する

アイテムの費用やその他の条件に基づいて、承認要件を設定します。

MCP を使用する:

Tool: SN-Create-Record
Parameters:
  table_name: sysapproval_group
  fields:
    document_id: [cat_item_sys_id]
    assignment_group: [manager_approval_group_sys_id]
    approval_column: approval
    condition: "price>0"
    order: 100
    approval: requested

REST API を使用する:

POST /api/now/table/sysapproval_group
Content-Type: application/json

{
  "document_id": "[cat_item_sys_id]",
  "assignment_group": "[manager_approval_group_sys_id]",
  "approval_column": "approval",
  "condition": "price>0",
  "order": "100"
}
ステップ 6:アイテムをカテゴリにリンクする

カタログ内を移動できるよう、アイテムとカテゴリの関連付けを作成します。

MCP を使用する:

Tool: SN-Create-Record
Parameters:
  table_name: sc_cat_item_category
  fields:
    sc_cat_item: [cat_item_sys_id]
    sc_category: [category_sys_id]

REST API を使用する:

POST /api/now/table/sc_cat_item_category
Content-Type: application/json

{
  "sc_cat_item": "[cat_item_sys_id]",
  "sc_category": "[category_sys_id]"
}
ステップ 7:検証して有効化する

公開前に、アイテムの設定がすべて完了していることを確認します。

MCP を使用する:

Tool: SN-Query-Table
Parameters:
  table_name: item_option_new
  query: cat_item=[cat_item_sys_id]^active=true
  fields: name,question_text,type,mandatory,order,default_value
  limit: 30
  order_by: order

カタログ API でアイテムを確認する:

GET /api/sn_sc/servicecatalog/items/[cat_item_sys_id]?sysparm_display_value=true

アイテムを有効化する:

Tool: SN-Update-Record
Parameters:
  table_name: sc_cat_item
  sys_id: [cat_item_sys_id]
  fields:
    active: true
    visible_standalone: true

ツールの使用方法

MCP ツールのリファレンス
ツール使用するタイミング
SN-Query-Table既存のカテゴリ、アイテム、変数、承認を照会する
SN-Create-Record新しいアイテム、変数、選択肢、カテゴリ、承認ルールを作成する
SN-Update-Recordアイテムを有効化し、設定を更新する
SN-Natural-Language-Search説明を基に、類似する既存のアイテムやカテゴリを検索する
SN-Discover-Table-Schemaカタログテーブルのフィールド定義を確認する
SN-Execute-Background-Script変数、選択肢、複雑な設定を一括作成する
REST API リファレンス
エンドポイントメソッド用途
/api/now/table/sc_cat_itemGET/POST/PATCHカタログアイテムを管理する
/api/now/table/sc_categoryGET/POSTカタログカテゴリを管理する
/api/now/table/sc_cat_item_categoryPOSTアイテムをカテゴリに紐付ける
/api/now/table/item_option_newGET/POSTカタログ変数を作成、照会する
/api/now/table/question_choicePOST選択式変数に選択肢を追加する
/api/sn_sc/servicecatalog/itemsGETService Catalog API を使用してアイテムを検証する

ベストプラクティス

  • 一貫性のある命名: すべてのアイテムで、変数名には命名規則(snake_case)、質問文にはタイトルケースを使用します
  • 必須の理由説明: コストのしきい値を超えるアイテムには、必ず業務上の理由を入力する変数を含めます
  • 変数数を制限: フォームの変数は12個未満にし、関連フィールドのグループ化には変数セットを使用します
  • デフォルト値を設定: よく選択される項目を事前に入力し、依頼者の手間を減らします
  • 参照変数を使用: フリーテキストではなく、既存のテーブル(オフィスの場所にはcmn_locationなど)にリンクします
  • 公開前にテスト: 表示可能にする前に、非本番カタログまたはactive=falseでアイテムを検証します
  • 対応方法を記載: 担当グループ向けに、アイテムの説明へ明確な対応手順を記載します
  • カタログアイテムをバージョン管理: 設定変更を記録するには、アイテムのmetaフィールドまたは作業メモを使用します

トラブルシューティング

アイテムフォームに変数が表示されない

原因: 変数のcat_item参照がアイテムのsys_idと一致していないか、変数が無効になっています
解決方法: cat_item=[sys_id]を指定してitem_option_newを照会し、関連付けを確認します。各変数のactive=trueを確認します。

カタログにアイテムが表示されない

原因: アイテムが無効になっている、カタログにリンクされていない、またはユーザーに表示に必要なロールやグループがありません
解決方法: active=trueであることと、sc_catalogsが設定されていることを確認し、sc_cat_item_user_criteriaでアクセス制限を確認します。

承認が実行されない

原因: 承認ルールの条件に一致しないか、アイテムに承認グループが設定されていません
解決方法: アイテムのsysapproval_groupレコードを確認します。条件式がリクエストに対してtrueと評価されることを確認します。

ドロップダウンに選択肢が表示されない

原因: question_choiceレコードが正しい変数のsys_idにリンクされていません
解決方法: question=[variable_sys_id]を指定してquestion_choiceを照会し、inactive=falseであることを確認します。

例

例1:説明からアイテムを生成する

入力: 「駐車許可証を申請するカタログアイテムを作成してください。従業員はオフィスの場所、駐車タイプ(屋内/屋外)、車両のナンバープレート、開始日を選択します。マネージャーの承認が必要です。」

生成されたアイテム:

  • 名前:「駐車許可証の申請」
  • カテゴリ:「施設」
  • 変数:オフィスの場所(参照)、駐車タイプ(ドロップダウン)、ナンバープレート(テキスト)、開始日(日付)
  • 承認:マネージャーの承認
例2:ソフトウェアライセンスの申請

入力: 「ソフトウェアライセンスを申請するフォームが必要です。ユーザーは一覧からソフトウェアを選び、ライセンス数を入力し、理由を記入します。ライセンス数が10を超える場合は、ITディレクターの承認が必要です。」

Tool: SN-Create-Record
Parameters:
  table_name: sc_cat_item
  fields:
    name: "Software License Request"
    short_description: "Request new or additional software licenses"
    category: [software_category_sys_id]
    sc_catalogs: [catalog_sys_id]
    active: true
    type: item
    fulfillment_group: [software_team_sys_id]
    order: 200
例3:複数アイテムの一括作成

入力:「HR カテゴリーに、バッジの交換($25)、デスクの移動(無料)、人間工学的評価(無料)の3つのアイテムを作成してください」

ステップ4の一括バックグラウンドスクリプト方式を使用し、1回のスクリプト実行ですべてのアイテムとその変数を作成します。

関連スキル

  • catalog/variable-management - 高度な変数設定と変数セット
  • catalog/ui-policies - 変数値に基づく動的なフォーム動作
  • catalog/approval-workflows - 複雑な承認ルーティングとエスカレーション
  • catalog/item-creation - 標準的なアイテム作成手順
  • catalog/request-fulfillment - フルフィルメントワークフローの設定
  • catalog/multi-turn-ordering - Virtual Agent による対話型注文

コメント