SQL生成服务

一个将自然语言转换为SQL语句的人工智能助手服务,采用两步生成方案降低幻觉风险并提高非技术用户的可信度。

  • by FocusSearch
  • Java
  • 本地部署
  • 38 星标
  • 更新于
在 GitHub 查看 FocusSearch/focus_mcp_sql

使用说明

FOCUS数据MCP服务器[中文]

模型上下文协议(MCP)服务器使人工智能助手能够将自然语言转换为SQL语句。

已经有很多文本到SQL框架了。为什么我们还需要另一个?

简而言之,focus_mcp_sql采用两步sql生成解决方案,可以控制LLM的幻觉,并真正建立非技术用户对生成的sql结果的信任。

下面是focus_mcp_sql和其他的比较表:

对比分析表

以下是focus_mcp_sql与其他基于LLM的框架的并排比较:

功能 传统LLM框架 focus_mcp_sql
生成过程 黑盒,直接SQL生成 透明,两步(关键字+SQL)
幻觉风险 高,取决于模型质量 低,可控(关键字验证)
速度 缓慢,依赖于大型模型推理 快速,确定性关键字到SQL
成本 高,需要高级型号 低,减少对大型型号的依赖
非技术用户友好度 低,难以验证结果 高,易于关键字检查

特性

-初始化模型 -将自然语言转换为SQL语句

先决条件

  • jdk 23或更高。下载 的安装
  • 8.12级或更高。下载 Gradle
  • 注册 数据焦点 要获得承载令牌,请执行以下操作:
    1. 在中注册帐户 数据焦点
    2. 创建应用程序
    3. 输入应用程序
    4. 管理员->接口认证->承载令牌->新承载令牌

安装

  1. 克隆此存储库:
git clone https://github.com/FocusSearch/focus_mcp_sql.git
cd focus_mcp_sql
  1. 构建服务器:
gradle clean
gradle bootJar

The jar path: build/libs/focus_mcp_sql.jar

MCP配置

将服务器添加到MCP设置文件中:

{
  "mcpServers": {
    "focus_mcp_data": {
      "command": "java",
      "args": [
        "-jar",
        "path/to/focus_mcp_sql/focus_mcp_sql.jar"
      ],
      "autoApprove": [
        "gptText2sqlStart",
        "gptText2sqlChat"
      ]
    }
  }
}

可用工具

1.gptText2sqlStart

初始模型。

参数:

  • model (必填):表格模型
  • bearer (必填):无记名代币
  • language (可选):语言[“英语”、“中文”]

例子:

{
  "model": {
    "tables": [
      {
        "columns": [
          {
            "columnDisplayName": "name",
            "dataType": "string",
            "aggregation": "",
            "columnName": "name"
          },
          {
            "columnDisplayName": "address",
            "dataType": "string",
            "aggregation": "",
            "columnName": "address"
          },
          {
            "columnDisplayName": "age",
            "dataType": "int",
            "aggregation": "SUM",
            "columnName": "age"
          },
          {
            "columnDisplayName": "date",
            "dataType": "timestamp",
            "aggregation": "",
            "columnName": "date"
          }
        ],
        "tableDisplayName": "test",
        "tableName": "test"
      }
    ],
    "relations": [

    ],
    "type": "mysql",
    "version": "8.0"
  },
  "bearer": "ZTllYzAzZjM2YzA3NDA0ZGE3ZjguNDJhNDjNGU4NzkyYjY1OTY0YzUxYWU5NmU="
}

model 参数说明:

名称 位置 类型 必选 说明
模型 主体 对象 是 none
» type body string 是 数据库类型
» version body string 是 数据库版本
» tables body [object] 是 表结构列表
»» tableDisplayName body string 否 表显示名
»» tableName body string 否 表原始名
»» columns body [object] 否 表列列表
»»» columnDisplayName body string 是 列显示名
»»» columnName body string 是 列原始名
»»» dataType body string 是 列数据类型
»»» aggregation body string 是 列聚合方式
» relations body [object] 是 表关联关系列表
»» conditions body [object] 否 关联条件
»»» dstColName body string 否 dimension 表关联列原始名
»»» srcColName body string 否 fact 表关联列原始名
»» dimensionTable body string 否 dimension 表原始名
»» factTable body string 否 fact 表原始名
»» joinType body string 否 关联类型

2.gptText2sqlChat

将自然语言转换为SQL。

参数:

  • chatId (必填):聊天id
  • input (必填):自然语言
  • bearer (必填):无记名代币

例子:

{
  "chatId": "03975af5de4b4562938a985403f206d4",
  "input": "what is the max age",
  "bearer": "ZTllYzAzZjM2YzA3NDA0ZGE3ZjguNDJhNDjNGU4NzkyYjY1OTY0YzUxYWU5NmU="
}

响应格式

所有工具都以以下格式返回响应:

{
  "errCode": 0,
  "exception": "",
  "msgParams": null,
  "promptMsg": null,
  "success": true,
  "data": {
  }
}

Visual Studio代码临床示例

  1. vsCode安装cline插件
  2. mcp服务器配置
  3. 使用
    1. 初始模型
    2. 转移:最大年龄是多少

联系人:

https://discord.gg/mFa3yeq9