Skip to content

Foggy Data MCPAI 原生语义层框架

让 AI 助手通过 MCP 协议安全、准确地查询业务数据 —— 无需暴露数据库结构

54+内置函数
20+查询操作符
5数据库方言
2语言实现

为什么需要语义层?

让 AI 直接写 SQL 查询数据库,存在严重的安全和准确性风险

❌ AI 直接写 SQL

  • AI 可能生成 DELETE / UPDATE 语句
  • 必须将完整 Schema 暴露给 AI
  • order_status=3 是什么意思?AI 不知道
  • 多表 JOIN 容易出错,调试成本高
  • 不同数据库方言需要不同 SQL

✅ 语义层 + DSL 查询

  • DSL 只读设计,杜绝危险操作
  • AI 只接触业务语义,不知道表结构
  • 语义层定义字段含义和关联
  • 引擎自动处理 JOIN 和聚合
  • 一套 DSL 适配所有数据库方言
              AI 助手 (Claude / Cursor / Trae)

                   MCP 协议调用


┌─────────────────────────────────────────────┐
│            Foggy MCP Server                 │
│  ┌───────────┐  ┌──────────┐  ┌──────────┐ │
│  │ 元数据工具 │  │ 查询工具  │  │ 图表工具  │ │
│  └───────────┘  └──────────┘  └──────────┘ │
└─────────────────────┬───────────────────────┘


┌─────────────────────────────────────────────┐
│           语义层引擎 (Semantic Layer)         │
│                                             │
│  TM 表模型 ──→ 维度/度量/关联 ──→ QM 查询模型 │
│                                             │
│  ┌──────────┐ ┌──────────┐ ┌─────────────┐ │
│  │ DSL 解析  │ │ 权限注入  │ │ 方言 SQL 生成│ │
│  └──────────┘ └──────────┘ └─────────────┘ │
└─────────────────────┬───────────────────────┘

         ┌────────────┼────────────┐
         ▼            ▼            ▼
      MySQL      PostgreSQL    SQL Server ...

三大核心能力

SEMANTIC LAYER

🧠 语义建模

QUERY DSL

🔍 DSL 查询

  • JSON Query DSL — 声明式查询语法
  • 20+ 操作符(含 NOT LIKE、层级)
  • 54+ 内置函数(数学、日期、字符串)
  • 窗口函数(ROW_NUMBER、LAG 等)
  • 多方言 SQL 生成
MCP TOOLS

🤖 MCP 工具

DSL 查询示例

AI 助手发送 JSON DSL → 语义层翻译为安全 SQL

JSON DSL 输入
json
{
  "model": "FactSalesQueryModel",
  "columns": [
    "customer$name",
    "product$categoryName",
    "sum(totalAmount)"
  ],
  "filters": [
    { "field": "orderDate", "op": ">=",
      "value": "2024-01-01" },
    { "field": "product$categoryName",
      "op": "in",
      "value": ["Electronics", "Books"] }
  ],
  "orderBy": [
    { "field": "totalAmount", "dir": "DESC" }
  ],
  "limit": 10
}
生成的 SQL(MySQL 方言)
sql
SELECT
  c.name         AS `customer$name`,
  p.category_name AS `product$categoryName`,
  SUM(f.total_amount) AS `totalAmount`
FROM fact_sales f
  JOIN dim_customer c
    ON f.customer_id = c.id
  JOIN dim_product p
    ON f.product_id = p.id
WHERE f.order_date >= '2024-01-01'
  AND p.category_name IN
      ('Electronics', 'Books')
GROUP BY c.name, p.category_name
ORDER BY SUM(f.total_amount) DESC
LIMIT 10

3 步快速开始

1

启动服务

docker compose up -d
一键启动 MySQL + Foggy MCP Server + 演示数据

2

配置 AI 工具

在 Claude Desktop / Cursor 中添加 MCP Server 地址:
http://localhost:7108/mcp/analyst/rpc

3

开始查询

用自然语言提问:
"显示上周各品牌的销售额趋势"

多语言实现

Java 和 Python 双引擎,同一套语义层标准

开始构建 AI 数据查询

5 分钟部署语义层,让 AI 安全地查询你的业务数据