FOCUS数据MCP服务器\[中文\]
模型上下文协议(MCP)服务器使人工智能助手能够将自然语言转换为SQL语句。
已经有很多文本到SQL框架了。为什么我们还需要另一个?
简而言之,focus_mcp_sql采用两步sql生成解决方案,可以控制LLM的幻觉,并真正建立非技术用户对生成的sql结果的信任。
下面是focus_mcp_sql和其他的比较表:
对比分析表
以下是focus_mcp_sql与其他基于LLM的框架的并排比较:
| 功能 | 传统LLM框架 | focus_mcp_sql |
|---|---|---|
| 生成过程 | 黑盒,直接SQL生成 | 透明,两步(关键字+SQL) |
| 幻觉风险 | 高,取决于模型质量 | 低,可控(关键字验证) |
| 速度 | 缓慢,依赖于大型模型推理 | 快速,确定性关键字到SQL |
| 成本 | 高,需要高级型号 | 低,减少对大型型号的依赖 |
| 非技术用户友好度 | 低,难以验证结果 | 高,易于关键字检查 |
特性
-初始化模型 -将自然语言转换为SQL语句
先决条件
1. 在中注册帐户 数据焦点 1. 创建应用程序 1. 输入应用程序 1. 管理员->接口认证->承载令牌->新承载令牌 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.jarMCP配置
将服务器添加到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(可选):语言\[“英语”、“中文”\]
例子:
{
"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 参数说明:
| 名称 | 位置 | 类型 | 必选 | 说明 |
|---|---|---|---|---|
| 模型 | 主体 | 对象 | 是 | 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代码临床示例
- vsCode安装cline插件
- mcp服务器配置
- 使用
1. 初始模型 initial model1 initial model2 1. 转移:最大年龄是多少 chat
