Blast-Radius Aware AI Code Review for Business-Critical Systems
LiveReview LiveReview Explore LiveReview

focus_mcp_sql

Converts natural language into SQL statements using a two-step generation process to minimize inaccuracies and ensure reliability for non-technical users.

Author

focus_mcp_sql logo

FocusSearch

Apache License 2.0

Quick Info

GitHub GitHub Stars 33
NPM Weekly Downloads 0
Tools 1
Last Updated 2026-02-19

Tags

focus_mcp_sqlfocussearchsqlfocus_mcp_sql convertsfocussearch focus_mcp_sqlanalytics focussearch

FOCUS DATA MCP Server [中文]

A Model Context Protocol (MCP) server enables artificial intelligence assistants to convert natural language into SQL statements.

There are already so many Text-to-SQL frameworks. Why do we still need another one?

In simple terms, focus_mcp_sql adopts a two-step SQL generation solution, which enables control over the hallucinations of LLM and truly builds the trust of non-technical users in the generated SQL results.

Below is the comparison table between focus_mcp_sql and others:

Comparison Analysis Table

Here’s a side-by-side comparison of focus_mcp_sql with other LLM-based frameworks:

Feature Traditional LLM Frameworks focus_mcp_sql
Generation Process Black box, direct SQL generation Transparent, two-step (keywords + SQL)
Hallucination Risk High, depends on model quality Low, controllable (keyword verification)
Speed Slow, relies on large model inference Fast, deterministic keyword-to-SQL
Cost High, requires advanced models Low, reduces reliance on large models
Non-Technical User Friendliness Low, hard to verify results High, easy keyword checking

Features

-Initialize the model -Convert natural language to SQL statements

Prerequisites

  • jdk 23 or higher. Download jdk
  • gradle 8.12 or higher. Download gradle
  • register Datafocus to obtain bearer token:
    1. Register an account in Datafocus
    2. Create an application
    3. Enter the application
    4. Admin -> Interface authentication -> Bearer Token -> New Bearer Token

Installation

  1. Clone this repository:
git clone https://github.com/FocusSearch/focus_mcp_sql.git
cd focus_mcp_sql
  1. Build the server:
gradle clean
gradle bootJar

The jar path: build/libs/focus_mcp_sql.jar

MCP Configuration

Add the server to your MCP settings file:

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

Available Tools

1. gptText2sqlStart

initial model.

Parameters:

  • model (required): table model
  • bearer (required): bearer token
  • language (optional): language ['english','chinese']

Example:

{
  "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

Convert natural language to SQL.

Parameters:

  • chatId (required): chat id
  • input (required): Natural language
  • bearer (required): bearer token

Example:

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

Response Format

All tools return responses in the following format:

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

Visual Studio Code Cline Sample

  1. vsCode install cline plugin
  2. mcp server config

  3. use

    1. initial model

    2. transfer: what is the max age

Contact:

https://discord.gg/mFa3yeq9

See Also

`