mcpField
N
natural-language-queries

natural-language-queries

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

natural-language-queries について

Happy Platform MCP 5.1向けのServiceNow自然言語クエリスキルです。定型フレーズがエンコード条件に変換される仕組みと解析結果の検証方法を説明し、複雑で正確さが必要な検索にはSN-Query-Tableを案内します。

主な機能

  1. 01パーサー検証済みクエリフレーズの一覧
  2. 02フレーズからエンコード条件への対応
  3. 03未一致テキストと解析結果の確認
  4. 04テーブルとフィールドによる検索範囲指定
  5. 05複雑な条件でのエンコードクエリ利用

活用シーン

  1. 01範囲を限定してインシデントを探索
  2. 02フレーズから生成される条件を検証
  3. 03本番自動化向けに正確なクエリを実行

MCP 対応

Happy Platform MCP 5.1でSN-Natural-Language-SearchとSN-Query-Tableを使う方法を説明し、解析結果の検証と検索範囲の制限を推奨します。

インストール

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

$npx skills add https://github.com/happy-technologies-llc/happy-platform-skills --skill natural-language-queries

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

詳細

自然言語クエリ

概要

Happy Platform MCP 5.1 は、自然言語のフレーズのうち、限定されたセットを ServiceNow のエンコード条件に変換します。以下のパーサー検証済みパターンを個別に使用する場合は、SN-Natural-Language-Search を使用してください。正確な演算子、複数の分岐、除外、フィールド固有のテキスト処理、または決定論的な並べ替えが必要な場合は、SN-Query-Table を使用してください。

正規のフィクスチャは contracts/happy-platform-mcp-5.1.0-natural-language.json に含まれており、同階層の MCP ソースと照合するには npm run contract:nl-check を実行します。

前提条件

  • 対象インスタンス用に Happy Platform MCP 5.1.0 が設定されていること
  • 対象テーブルへの読み取りアクセス権があること
  • 正確なテーブル名が分かっていること
  • 調査目的の検索では、少数の結果上限と明示的な返却フィールドを指定すること

手順

1. パーサー検証済みのフレーズを1つ選択する

次の個別フレーズは、MCP 5.1.0 で完全に解析されます。

意図対応フレーズ生成されるエンコード条件
優先度ラベルhigh prioritypriority=2
優先度番号P1 または priority 2priority=1 または priority=2
影響度high impactimpact=1
緊急度medium urgencyurgency=2
現在のユーザーassigned to meassigned_to=javascript:gs.getUserID()
担当者なしunassignedassigned_toISEMPTY
指定した担当者assigned to John Smithassigned_to.nameLIKEJohn Smith
今日起票opened todaysys_created_on>javascript:gs.daysAgoStart(0)
過去7日以内に起票opened in the last 7 dayssys_created_on>javascript:gs.daysAgo(7)
最近のレコードrecentsys_created_on>javascript:gs.daysAgo(7)
アクティブなレコードactiveactive=true
説明文のテキストdescription contains authenticationdescriptionLIKEauthentication
全般的な内容about SAPshort_descriptionLIKESAP^ORdescriptionLIKESAP
完全一致する番号number is INC0012345number=INC0012345
発信者caller is John Smithcaller_id.nameLIKEJohn Smith
カテゴリcategory is SoftwarecategoryLIKESoftware
割り当てグループassignment group is Network Teamassignment_group.nameLIKENetwork Team

上記の対応関係は、v5.1 パーサーの実際の出力です。たとえば、「high」は優先度の値 2 に、「critical」は値 1 に対応します。

2. 範囲を限定して検索を実行する

必ず table を指定してください。v5.1 では引数名は table_name ではありません。実際のデータに対する作業や並行作業では、対象インスタンスを指定してください。

Tool: SN-Natural-Language-Search
Parameters:
  table: incident
  query: P1
  fields: sys_id,number,short_description,priority
  limit: 10
  instance: dev

encodedQuery、matchedPatterns、unmatchedText、および返されたレコードを確認します。ツールがエンコード条件も返している場合でも、unmatchedText が空でなければ検証失敗として扱ってください。

3. 調査目的の呼び出しは個別に行う

独立した質問ごとに、範囲を限定した呼び出しを個別に行ってください。

Tool: SN-Natural-Language-Search
Parameters:
  table: incident
  query: unassigned
  fields: sys_id,number,assigned_to
  limit: 10
  instance: dev
Tool: SN-Natural-Language-Search
Parameters:
  table: incident
  query: opened in the last 7 days
  fields: sys_id,number,sys_created_on
  limit: 10
  instance: dev

個別に対応している2つのフレーズを自由に組み合わせられるとは考えないでください。v5.1 パーサーは各パターンを最大1回処理し、残った単語によって結果が変わったり、条件が緩くなったりすることがあります。

4. 正確さが必要な場合はエンコードクエリを使用する

正確な比較、除外、複数の値、フィールド固有のテキスト演算子、または決定論的な並べ替えが必要な場合は、エンコードクエリを作成して確認し、SN-Query-Table を使用してください。

Tool: SN-Query-Table
Parameters:
  table_name: incident
  query: priority=1^state!=7^assigned_toISEMPTY^ORDERBYDESCsys_created_on
  fields: sys_id,number,short_description,priority,state,assigned_to,sys_created_on
  limit: 25
  instance: dev

エンコードクエリを使う方法は、自動化にも適しています。意味が自由形式のテキストからのパターン抽出に左右されないためです。

5. インシデント以外の対象は明示的に検証する

自然言語の解析では、テーブルに依存する処理に、指定されたテーブルが使用されます。別のテーブルを検索する場合、デフォルトに頼らないでください。

Tool: SN-Natural-Language-Search
Parameters:
  table: change_request
  query: recent
  fields: sys_id,number,short_description,sys_created_on
  limit: 10
  instance: dev

不慣れなテーブルでは、自然言語の検索結果を既知のレコードと照合して検証するまでは、エンコードした SN-Query-Table クエリを使用してください。

ツールの使用方法

ツール用途
SN-Natural-Language-Searchパーサー検証済みのフレーズを1つ使用した、範囲を限定した調査
SN-Query-Table正確で繰り返し可能なエンコードクエリの実行

ベストプラクティス

  • table、fields、limit、instance を明示的に指定します。
  • パッケージに含まれるフィクスチャの契約にある、単一の原子的なフレーズから始めます。
  • パーサーの結果を信頼する前に、unmatchedText が空であることを確認します。
  • limit を増やす前に、探索的な結果を既知のレコードと比較します。
  • 本番環境での自動化や複雑な条件には、エンコード済みクエリを使用します。
  • ペイロードと意図しないデータ露出を抑えるため、フィールドの選択は最小限にします。

トラブルシューティング

エンコード済み条件が返されない

フレーズが v5.1 のパターンに一致しませんでした。フィクスチャで確認済みの原子的なフレーズを1つ使うか、レビュー済みのエンコード済みクエリを使用して SN-Query-Table に切り替えてください。

条件は返されるが、テキストが残っている

パーサーはリクエストの一部だけに一致しました。結果を同等のクエリとして扱わないでください。リクエストを検証済みのフレーズ1つに絞るか、エンコード済みクエリを使用してください。

返された条件の意味が異なる

そのフレーズの使用を中止してください。自然言語のマッチングでは、意図しないパターンの単語が受け入れられることがあります。要件をエンコード済みクエリとして直接表現し、少数の結果セットで検証してください。

インシデント以外の検索で、インシデント形式の結果が返される

呼び出しで古い引数名ではなく table が使われていること、および明示的に指定したテーブルの値が正しいことを確認してください。

関連スキル

  • itsm/incident-triage
  • itsm/quick-reference
  • admin/generic-crud-operations

コメント