MCP SQL 读取器

为 contacts.query 与 trade.query 编写只读 SQL:允许的视图、列、语法、分页与错误处理。

dureach.contacts.query 和 dureach.trade.query 接受针对已文档化的联系人和装运数据集的只读 SQL。使用单个 SELECT 和获准字段;不支持连接和写入。

允许哪些视图和列?

工具视图列
dureach.contacts.querycontactsid、full_name、job_title、company_name、company_domain、city、country
dureach.trade.querybol_shipmentsid、source_type、trade_flow、bol_number、actual_arrival_date、shipper_name、consignee_name、product_desc

仅查询这些列。未知表、列或数据库前缀将返回校验错误。结果中 product_desc 截断为 300 个字符。

接受什么 SQL 形态?

  • 单个 SELECT,可带可选 WHERE、GROUP BY、HAVING 与 ORDER BY。允许别名。
  • 支持比较、布尔运算符、算术、字面量 IN 与 LIKE。
  • 聚合与标量函数:count、sum、avg、min、max、uniqExact、lower、upper、length、coalesce、toDate、toYear、toMonth。
  • 拒绝:连接、子查询、CTE、窗口函数、SETTINGS、FORMAT、SQL LIMIT/OFFSET、SELECT SETTINGS、GROUP BY WITH TOTALS、全局 IN 与位置 ORDER BY。
  • SQL 至多为 16 KiB UTF-8。更大的语句在执行前返回校验错误。
{
  "sql": "SELECT company_name, city, country FROM contacts WHERE country = 'DE' AND company_domain LIKE '%gmbh%' ORDER BY company_name, city",
  "page": 1,
  "limit": 25
}

第 2 页及以后需要 ORDER BY。使用工具结构支持的排序,并在可用时添加获准的同值排序字段。同值和源数据更新可能使记录在页面之间移动;有界结果并非完整导出。

分页如何运作?

使用 page(1–20)与 limit(1–50)。请勿附加 SQL LIMIT/OFFSET。结果返回列名、ClickHouse 类型与有序行数组,不含总数:

{
  "columns": [{"name": "company_name", "type": "String"}],
  "rows": [["Example GmbH"]],
  "page": 1,
  "limit": 25
}

UUID、日期、十进制以及超出 JSON 安全范围的整数以字符串形式返回;非有限浮点数以字符串形式返回。传输结果大于 1 MiB 时返回 result_too_large;请减少所选列或收窄筛选条件后重试。

应如何处理错误?

代码含义修复方法
validation error on sql不允许的关键词、表、列或结构。在所列视图与列范围内仅使用单个 SELECT;移除连接、子查询、CTE、SETTINGS、FORMAT 与 SQL LIMIT。
SQL exceeds 16 KiB语句过大。缩短谓词,或将问题拆分为更小的查询。
missing ORDER BY on page 2+偏移页不确定。添加带唯一辅助排序键的 ORDER BY。
quota_exceeded (contacts_daily)每日联系人预算已用完。等待重置,或向管理员咨询套餐限额。
result_too_large传输结果超过 1 MiB。选择更少的列、添加筛选,或降低 limit。

请记录 request_id 与错误代码。切勿将含客户标识的完整 SQL 与令牌一并记录。

相关页面