FOCUS DATA MCP Server

Convierte lenguaje natural en sentencias SQL con una solución de generación en dos pasos para reducir alucinaciones y mejorar la confianza.

Documentación

Servidor FOCUS DATA MCP [中文]

Un servidor del Protocolo de Contexto de Modelo (MCP) que permite a los asistentes de inteligencia artificial convertir lenguaje natural en sentencias SQL.

Ya existen tantos frameworks de Texto a SQL. ¿Por qué necesitamos otro?

En términos simples, focus_mcp_sql adopta una solución de generación de SQL en dos pasos, lo que permite controlar las alucinaciones del LLM y construir verdaderamente la confianza de los usuarios no técnicos en los resultados SQL generados.

A continuación se muestra la tabla comparativa entre focus_mcp_sql y otros:

Tabla de Análisis Comparativo

Aquí hay una comparación lado a lado de focus_mcp_sql con otros frameworks basados en LLM:

CaracterísticaFrameworks LLM Tradicionalesfocus_mcp_sql
Proceso de GeneraciónCaja negra, generación directa de SQLTransparente, dos pasos (palabras clave + SQL)
Riesgo de AlucinaciónAlto, depende de la calidad del modeloBajo, controlable (verificación de palabras clave)
VelocidadLenta, depende de la inferencia del modelo grandeRápida, conversión determinista de palabras clave a SQL
CostoAlto, requiere modelos avanzadosBajo, reduce la dependencia de modelos grandes
Amigabilidad para Usuarios No TécnicosBaja, difícil de verificar resultadosAlta, fácil verificación de palabras clave

Características

  • Inicializar el modelo
  • Convertir lenguaje natural en sentencias SQL

Requisitos Previos

  • jdk 23 o superior. Descargar jdk
  • gradle 8.12 o superior. Descargar gradle
  • Registrarse en Datafocus para obtener el bearer token:
    1. Crear una cuenta en Datafocus
    2. Crear una aplicación
    3. Entrar en la aplicación
    4. Admin -> Autenticación de interfaz -> Bearer Token -> Nuevo Bearer Token bearer token

Instalación

  1. Clonar este repositorio:
git clone https://github.com/FocusSearch/focus_mcp_sql.git
cd focus_mcp_sql
  1. Compilar el servidor:
gradle clean
gradle bootJar

The jar path: build/libs/focus_mcp_sql.jar

Configuración de MCP

Añadir el servidor al archivo de configuración de MCP:

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

Herramientas Disponibles

1. gptText2sqlStart

Modelo inicial.

Parámetros:

  • model (obligatorio): modelo de tabla
  • bearer (obligatorio): bearer token
  • language (opcional): idioma ['english','chinese']

Ejemplo:

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

Descripción del parámetro model:

NombreUbicaciónTipoObligatorioDescripción
modelbodyobject是none
» typebodystring是Tipo de base de datos
» versionbodystring是Versión de la base de datos
» tablesbody[object]是Lista de estructuras de tablas
»» tableDisplayNamebodystring否Nombre mostrado de la tabla
»» tableNamebodystring否Nombre original de la tabla
»» columnsbody[object]否Lista de columnas de la tabla
»»» columnDisplayNamebodystring是Nombre mostrado de la columna
»»» columnNamebodystring是Nombre original de la columna
»»» dataTypebodystring是Tipo de datos de la columna
»»» aggregationbodystring是Método de agregación de la columna
» relationsbody[object]是Lista de relaciones entre tablas
»» conditionsbody[object]否Condiciones de relación
»»» dstColNamebodystring否Nombre original de la columna de relación de la tabla dimension
»»» srcColNamebodystring否Nombre original de la columna de relación de la tabla fact
»» dimensionTablebodystring否Nombre original de la tabla dimension
»» factTablebodystring否Nombre original de la tabla fact
»» joinTypebodystring否Tipo de relación

2. gptText2sqlChat

Convierte lenguaje natural en SQL.

Parámetros:

  • chatId (obligatorio): id de chat
  • input (obligatorio): lenguaje natural
  • bearer (obligatorio): bearer token

Ejemplo:

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

Formato de Respuesta

Todas las herramientas devuelven respuestas en el siguiente formato:

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

Ejemplo de Visual Studio Code Cline

  1. Instalar el plugin cline en vsCode
  2. Configurar el servidor mcp config mcp server
  3. Uso
    1. Modelo inicial initial model1 initial model2
    2. Transferencia: ¿cuál es la edad máxima? chat

Contacto:

https://discord.gg/mFa3yeq9 Datafocus