跳至主要內容
hs-sql-agent
2.0.3
文件 2.0.3
文件 MCP

MCP Tools 參考

hs-sql-agent 的 built-in MCP Tool 契約,包含原子 multi-statement DML。

Built-in MCP Surface 刻意維持精簡。hs-sql-agent 仍只有五個由 MCP Key Scope 管理的 built-in Tool 名稱。

Tool公開輸入用途
get_schemas探索 Schemas
get_tablesschemaName: string探索可見 Tables
get_columnsschemaName: string, tableName: string探索 Columns 與 Key Metadata
execute_query_sqlsql: string執行一個受治理的 SELECT Query
execute_dml_sqlsql: string原子執行一個或多個已核准 DML

Published Custom Tools 可以擴充特定資料庫的 Tool Collection,但不算新的 built-in Tools。

授權先於 Discovery

MCP Session 會在 MCP Key 驗證後建立。明確設定的 AllowedTools 會限制可見的 built-in 與 Published Custom Tool 名稱。Database Binding、Table Allowlist、Rate Limit、SQL Concurrency、Policy 與 Audit 仍全部由伺服器控制。

Metadata Tools 不接受模型傳入 Connection String。

execute_query_sql

execute_query_sql(sql: string)

只接受一個受支援的 SELECT,並走 Typed Query Pipeline:Parse、Bind、Table Authorization、Policy 與來源語意驗證、Target Capability 證明、Compile immutable Provider Command,最後才執行。

不支援的 SQL 會 fail closed,不會退回 Raw SQL 直接執行。

execute_dml_sql

execute_dml_sql(sql: string)

同一個 Tool 現在可接受一個或多個以分號分隔的受支援 DML。這是擴充既有 Tool,而不是新增 execute_dml_sql_batch

Statement狀態
UPDATECapability、Policy、核准與重新驗證全部通過時支援
DELETECapability、Policy、核准與重新驗證全部通過時支援
INSERT ... VALUES使用 immutable-payload approval semantics
INSERT ... SELECT在 source-rowset approval semantics 完成前 fail closed

Multi-statement Request 會先驗證整個 Batch、建立每個 Statement 的 Evidence、只請求一次 Atomic Transaction 核准,再由伺服器開啟單一 Transaction。每個 Statement 在修改前重新驗證並依原始順序執行;任何一個 Statement 失敗或 stale,整個 Transaction 都 rollback。

Client-supplied Transaction-control SQL 會被拒絕。

核准 Transport

MCP Elicitation 是第一方預設,但 DML 架構不再綁死 Elicitation。Standard Hosting 可選官方 Webhook adapter;Modular Host 可註冊 HsSqlAgent.Approvals.Webhook 或自己的 IDmlApprovalProvider

非同步 Provider 可回傳 Pending。Durable Completion 仍由伺服器掌握,任何後續 commit 前都會重新驗證目前授權、設定、Policy、Plan、Row Set 與 affected-row Evidence。

另見 Safe DML