本文へ移動
hs-sql-agent
2.0.2
ドキュメント 2.0.2
ドキュメント MCP

MCP ツールリファレンス

hs-sql-agent 2.0.2 の組み込み MCP ツールについて、正式な契約、引数、レスポンス、認可、リスク境界を説明します。

低リスク
スキーマ探索 get_schemas、get_tables、get_columns で、SQL 生成前にキーへ紐付いたデータベース構造を確認します。
読み取り
Query SQL execute_query_sql は統制された単一の SELECT を受け取り、結果行をシリアライズして返します。
承認
Safe DML execute_dml_sql は preview、Elicitation、コミット時再検証を通過した対応済み更新だけを実行します。

MCP キーで管理される 2.0.2 の正式な組み込みツールサーフェスには、次の 5 つのツール名だけが含まれます。

ツール公開入力結果形式リスク
get_schemasなしカンマ区切りのスキーマ名メタデータ読み取り
get_tablesschemaName: stringカンマ区切りのテーブル説明メタデータ読み取り
get_columnsschemaName: string, tableName: stringカラムオブジェクトの JSON 配列メタデータ読み取り
execute_query_sqlsql: string結果行の JSON 配列、または実行エラー文字列データ読み取り
execute_dml_sqlsql: string承認/実行結果のテキストデータ変更

公開済み Custom Tool は、紐付け先データベースのツール一覧を拡張できますが、組み込みツールが増えるわけではありません。

推奨する探索フロー

01 get_schemas
02 get_tables
03 get_columns
04 execute_query_sql
モデルに SQL を生成させる前に、物理構造を探索します。DML は既定の読み取りフローには意図的に含めていません。

クライアント側に信頼できるデータベース構造がない場合は、メタデータ探索を利用してください。スキーマツールは、クライアントから接続文字列を受け取るのではなく、認証済みキーのデータベースコンテキスト内で動作します。

get_schemas

MCP キーに紐付いたデータベースについて、provider metadata runtime が報告するスキーマ一覧を返します。

引数: なし。

成功時: スキーマ名をカンマ区切りの文字列として返します。

認可と制限:

  • 明示的な tool allowlist がある場合、キーに get_schemas の利用権限が必要です。
  • データベースの provider/connection は認証済みキーから解決されている必要があります。
  • 操作時には共有 SQL concurrency limiter の lease を取得します。
  • 成功/失敗は mcp.get_schemas として監査経路へ記録されます。

モデルから database ID や connection string を受け取ることはありません。

get_tables

get_tables(schemaName: string)

指定したスキーマについて provider が報告するテーブルを返し、MCP キーにテーブルホワイトリストが設定されている場合はその範囲に絞り込みます。

紐付け先 Database Management エントリにセマンティックメタデータがある場合、表示可能な各テーブルには次の情報も含められます。

  • 表示名
  • 説明
  • 同義語
  • そのテーブルにスコープされたメトリクスの説明

成功時: カンマ区切り文字列を返します。そのため、各項目は物理テーブル名だけより豊富な説明を含む場合があります。

監査 action: mcp.get_tables

get_columns

get_columns(schemaName: string, tableName: string)

サーバーはまず、指定された完全修飾テーブルが MCP キーで許可されていることを確認します。その後 provider のカラムメタデータを読み取り、JSON 配列へシリアライズします。

2.0.2 の各 ColumnInfo オブジェクトは次のプロパティを公開します。

プロパティ意味
Name物理カラム名
Column同じカラム名を示す alias
Typeprovider が報告したカラム型
Description利用可能な場合のセマンティック補足
IsPrimaryKeyprovider metadata 上で primary key の一部かどうか
PrimaryKeyOrdinal複合 primary key 内での nullable な位置

セマンティック補足により、表示名、説明、同義語、リレーション説明を Description に追加できます。リレーションのコンテキストが含まれるのは、関係する両テーブルがキーのテーブルホワイトリストで許可されている場合だけです。

監査 action: mcp.get_columns

execute_query_sql

execute_query_sql(sql: string)

単一の SELECT SQL 文を受け取ります。2.0.2 の公開ツール契約では、JOIN、WHERE、GROUP BY、HAVING、ORDER BY、LIMIT/OFFSET、DISTINCT、CTE、サブクエリ、UNION/INTERSECT/EXCEPT など一般的な Query 形式が明示されています。

01 Parse
02 Bind
03 テーブルを認可
04 ポリシー検証
05 immutable command を compile
06 実行
Raw SQL がそのまま provider に渡ることはありません。

リクエストは F# の typed-query runtime を通じて実行されます。ランタイム capability に応じて、参照テーブル、CTE の有無、サブクエリの有無などの Query facts も同じ統制経路で収集され、監査 evidence に利用されます。

成功時: 返却行コレクションを JSON へシリアライズします。

失敗時: Execution failed: で始まるテキストと失敗メッセージを返します。呼び出し元からの cancellation は通常の結果文字列へ変換せず、そのまま伝播します。

ランタイム境界:

  • MCP tool allowlist
  • MCP キーのデータベース紐付け
  • テーブルホワイトリスト
  • 現在の security/query policy
  • SQL concurrency limiter
  • source / target SQL capability check
  • operation、duration、returned rows、compiler 由来の definition facts を含む監査イベント mcp.query.executed

人が読める capability の概要は SQL サポートリファレンス を参照してください。

execute_dml_sql

execute_dml_sql(sql: string)

MCP から公開される入力は SQL です。.NET メソッドが利用する McpServer と cancellation token はランタイムが注入するインフラであり、エージェントが指定するフィールドではありません。

2.0.2 の MCP DML 経路で扱う文種は次のとおりです。

状態
UPDATEparse、capability、policy、approval の各要件を満たす場合に対応
DELETEparse、capability、policy、approval の各要件を満たす場合に対応
INSERT ... VALUESimmutable payload を承認対象として対応
INSERT ... SELECT2.0.2 では fail-closed で拒否
01 Parse + profile 検証
02 Mutation を compile
03 正確な影響を preview
04 人による Elicitation
05 transaction 内で再検証
06 Commit
承認は元の SQL 文字列だけではなく、検証済み mutation context に結び付けられます。

UPDATE と DELETE では、承認を正確な primary-key row set に結び付け、コミット時に transaction 内で行 identity を再検証します。INSERT VALUES では、承認を immutable literal payload と正確な compiled command に結び付け、コミット時に承認済み payload の行数を検証します。

人が拒否した場合、または検証を完了できない場合、変更はコミットされません。監査イベントには mcp.dml.executed を使用し、operation、processing duration、affected rows、approval status、必要に応じて error category を記録します。

プロトコル全体は Safe DML を参照してください。

組み込みツール共通のエラー

代表的な失敗原因は次のとおりです。

  • MCP authorization context がない
  • キーの明示的な tool allowlist に対象ツールが含まれていない
  • database provider または connection 設定が無効
  • SQL concurrency limit から lease を取得できない(Server busy
  • 指定テーブルがキーのホワイトリスト外
  • SQL が空、未対応、policy で拒否、または capability boundary で拒否
  • provider 実行に失敗

ツールは無制限の provider 実行へ fallback せず、境界を設けたエラー情報を返します。

Custom Tools

公開済み Custom Tool は、MCP キーに紐付いた Database Management エントリ向けに読み込まれ、名前で同じ AllowedTools セットへ追加できます。呼び出し時には引き続き runtime database binding、table whitelist、security policy、concurrency control、audit path が適用され、DML の Custom Tool であれば approval pipeline も通過します。

詳しくは カスタムツール を参照してください。

セマンティックメタデータを 6 個目の組み込みツールとしては扱いません

2.0.2 のリポジトリにはセマンティック管理の実装がありますが、正式な MCP key built-in registry と Admin key-management surface が認識する組み込みツールは、このページに記載した 5 つです。そのため 2.0.2 の正式ドキュメントでは、セマンティックメタデータを管理/コントロールプレーンの capability であり、スキーマ探索から利用されるものとして扱い、追加の正式な組み込み MCP 契約とはしません。

詳しくは セマンティックメタデータ を参照してください。