返回市场
焦点_mcp_数据库

焦点_mcp_数据库

作者:FocusSearch35 星标更新:2025-04-14

项目介绍

FOCUS DATA MCP Server [中文]

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

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

简单来说,focus_mcp_sql采用两步SQL生成解决方案,可以控制大型语言模型(LLM)的幻觉,并真正建立非技术人员对生成的SQL结果的信任。

以下是focus_mcp_sql与其他框架的比较表:

比较分析表

这是focus_mcp_sql与其它基于LLM框架的并排比较:

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

功能

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

先决条件

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

安装

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

jar路径: 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 (必需): Bearer Token
  • 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 参数说明:

名称位置类型必选说明
modelbodyobjectnone
» typebodystring数据库类型
» versionbodystring数据库版本
» tablesbody[object]表结构列表
»» tableDisplayNamebodystring表显示名
»» tableNamebodystring表原始名
»» columnsbody[object]表列列表
»»» columnDisplayNamebodystring列显示名
»»» columnNamebodystring列原始名
»»» dataTypebodystring列数据类型
»»» aggregationbodystring列聚合方式
» relationsbody[object]表关联关系列表
»» conditionsbody[object]关联条件
»»» dstColNamebodystringdimension 表关联列原始名
»»» srcColNamebodystringfact 表关联列原始名
»» dimensionTablebodystringdimension 表原始名
»» factTablebodystringfact 表原始名
»» joinTypebodystring关联类型

2. gptText2sqlChat

将自然语言转换为SQL。

参数:

  • chatId (必需): 聊天ID
  • input (必需): 自然语言
  • bearer (必需): Bearer Token

示例:

{
  "chatId": "03975af5de4b4562938a985403f206d4",
  "input": "最大年龄是多少",
  "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