跳至主要內容
hs-sql-agent

SQL Server · MCP

給 AI Agent 使用的 SQL Server MCP Server。

透過 hs-sql-agent 的 MCP surface、typed SQL compiler、access policy、Safe DML 與 audit boundary,安全連接 AI client 與 SQL Server。

01

單一受治理 MCP surface

讓模型使用 SQL Server,但不直接交出 unrestricted database connection。

02

Dialect-aware compiler

SQL Server 專屬 SQL 語意留在明確的 source / target capability boundary 裡。

03

Execution 前先過 Policy

Database scope、table policy、tool restriction、rate limit、Safe DML 與 audit 都先於 commit。

SQL Server 仍然位於 compiler boundary 後面

即使 SQL Server 本身能執行某段 SQL,也不代表 model-generated statement 就應該被信任。SQL 會先進入 typed validation 與 capability pipeline。

Provider support 代表 runtime 能連線、讀取 metadata、compile 已支援 statement,並在 policy 下執行;不代表所有 vendor-specific syntax 都自動放行。

先用 Metadata,不要讓模型猜 Schema

MCP client 可以先透過 built-in metadata tools 取得 schemas、tables 與 columns,再產生 SQL Server SQL,降低盲猜 schema,同時維持在相同 authenticated database scope 裡。

  • get_schemas
  • get_tables
  • get_columns
  • execute_query_sql
  • execute_dml_sql

語意無法證明就 Fail Closed

SQL Server 與其他 provider 遵守同一規則:不支援的 syntax 或無法證明的 cross-provider semantics 會在正確的 validation / capability boundary 被拒絕,不會偷偷改寫成行為不同的 SQL。

為什麼不直接把 SQL Server 帳號交給 AI?

若 MCP 用戶端直接持有資料庫帳密,模型能做什麼往往只剩資料庫帳號權限這一道邊界。hs-sql-agent 把真正的 SQL Server 連線保留在伺服器端,SQL 執行前還會經過編譯器、MCP 金鑰範圍、資料表政策、工具限制與執行期限制。

因此 Agent 仍可使用支援範圍內的原始 SQL,不必把「能產生 SQL」等同於「擁有不受限制的資料庫權限」。

  • 支援範圍內仍可使用原始 SQL
  • 資料庫帳密保留在伺服器邊界內
  • 無法證明安全語意時先拒絕再執行
  • 資料修改可以要求真人明確核准