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 服务