Focus_mcp_sql について
focus_mcp_sql は、FocusSearch のキーワード解析に基づく NL2SQL の MCP サーバーで、自然言語を SQL 文に変換します。キーワードから SQL へ至る二段階の生成方式により、非技術者でも結果の根拠を確認しやすくなっています。
主な機能
- 01二段階生成:キーワードを生成してから SQL に変換
- 02キーワードによる確認で幻覚のリスクを抑制
- 03gptText2sqlStart と gptText2sqlChat のツール
- 04英語と中国語の言語設定に対応
活用シーン
- 01非技術者による自然言語でのデータベース検索
- 02AI アシスタントを通じたデータに関する質疑応答
- 03テーブル構造とリレーションからのクエリ生成
MCP 対応
本プロジェクトは MCP サーバーであり、AI アシスタントにモデルの初期化と自然言語から SQL への変換ツールを提供します。利用には DataFocus の Bearer トークンが必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
FOCUS DATA MCP サーバー [中文]
Model Context Protocol(MCP)サーバーを使用すると、AI アシスタントは自然言語を SQL 文に変換できます。
Text-to-SQL フレームワークはすでに数多くあります。なぜ、さらに別のものが必要なのでしょうか?
簡単に言うと、focus_mcp_sql は2段階の SQL 生成方式を採用しており、LLM のハルシネーションを制御できるため、技術に詳しくないユーザーが生成された SQL の結果を信頼できるようになります。
以下は、focus_mcp_sql と他のフレームワークの比較表です。
比較分析表
以下では、focus_mcp_sql と他の LLM ベースのフレームワークを並べて比較しています。
| 特徴 | 従来の LLM フレームワーク | focus_mcp_sql |
|---|---|---|
| 生成プロセス | ブラックボックス、SQL を直接生成 | 透明性のある2段階方式(キーワード+SQL) |
| ハルシネーションのリスク | 高い。モデルの品質に依存 | 低い。制御可能(キーワード検証) |
| 速度 | 遅い。大規模モデルの推論に依存 | 速い。キーワードから SQL への変換は決定的 |
| コスト | 高い。高度なモデルが必要 | 低い。大規模モデルへの依存を軽減 |
| 技術に詳しくないユーザーにとっての使いやすさ | 低い。結果の検証が難しい | 高い。キーワードを簡単に確認できる |
機能
-モデルを初期化 -自然言語を SQL 文に変換
前提条件
- jdk 23 以上。jdk をダウンロード
- gradle 8.12 以上。gradle をダウンロード
- Datafocus に登録して bearer token を取得します:
- Datafocus にアカウントを登録します
- アプリケーションを作成します
- アプリケーションを開きます
- Admin -> Interface authentication -> Bearer Token -> New Bearer Token

インストール
- このリポジトリをクローンします:
git clone https://github.com/FocusSearch/focus_mcp_sql.git
cd focus_mcp_sql
- サーバーをビルドします:
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(必須):チャット IDinput(必須):自然言語bearer(必須):ベアラートークン
例:
{
"chatId": "03975af5de4b4562938a985403f206d4",
"input": "what is the max age",
"bearer": "ZTllYzAzZjM2YzA3NDA0ZGE3ZjguNDJhNDjNGU4NzkyYjY1OTY0YzUxYWU5NmU="
}
応答形式
すべてのツールは、以下の形式で応答を返します。
{
"errCode": 0,
"exception": "",
"msgParams": null,
"promptMsg": null,
"success": true,
"data": {
}
}
Visual Studio Code Cline のサンプル
- VS Code に cline プラグインをインストールします
- MCP サーバーを設定します

- 使用方法
- モデルを初期化します

- 入力:what is the max age

- モデルを初期化します
お問い合わせ:
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
