F

FocusSQL

@FocusSearch/focus_mcp_sql
2 Stars 706 次浏览 FocusSearch 更新于 2026-08-23

基于FocusSearch关键词解析的NL2SQL插件,提供更高的准确性、更快的速度和更可靠的性能!

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

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

该服务需要配置环境变量:BEARER_TOKEN

服务介绍

FOCUS DATA MCP Server [中文]

Model Context Protocol (MCP) 服务器使人工智能助手能够将自然语言转换为 SQL 语句。

已经有这么多的 Text-to-SQL 框架了,为什么还需要另一个?

简单来说,focus_mcp_sql 采用了一个两步的 SQL 生成解决方案,这使得可以控制大模型的幻觉问题,并真正建立起非技术用户对生成的 SQL 结果的信任。

下面是 focus_mcp_sql 与其他框架之间的比较表:

对比分析表

这里是一个并排比较,展示了 focus_mcp_sql 与其它基于大模型的框架之间的差异:

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

功能

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

前提条件

  • jdk 23 或更高版本。下载 jdk
  • gradle 8.12 或更高版本。下载 gradle
  • 注册 Datafocus 获取承载令牌:
    1. Datafocus 注册一个账户
    2. 创建一个应用
    3. 进入该应用
    4. 管理员 -> 接口认证 -> 承载令牌 -> 新建承载令牌
      bearer token

安装

  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 (可选): 语言 ['english','chinese']

示例:

{
  "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 参数说明:

名称 位置 类型 必选 说明
model body object 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(必填):bearer token

示例:

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

响应格式

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

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

Visual Studio Code Cline 示例

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

联系方式:

https://discord.gg/mFa3yeq9
Datafocus

相关 MCP 服务