Synechron Text2SQL MCP Server

Proporciona acceso en lenguaje natural a bases de datos relacionales utilizando modelos de lenguaje avanzados, con soporte para múltiples tipos de bases de datos.

Documentación

Servidor MCP Synechron Text2SQL

El Servidor MCP Text2SQL de Synechron es un servidor del Protocolo de Contexto de Modelos (MCP). Proporciona a clientes MCP como Cursor, VSCode y Claude Desktop acceso en lenguaje natural a bases de datos relacionales de diversos tipos, lo que permite a los usuarios hacer preguntas sobre sus datos utilizando capacidades de lenguaje natural.

El servidor optimiza la calidad de los resultados que genera mediante una combinación de búsqueda semántica consciente del esquema y de las filas. Los esquemas y una muestra de filas se indexan, lo que permite al servidor generar consultas adecuadas de manera más efectiva.

Características y Capacidades

El servidor MCP Text2SQL proporciona las siguientes capacidades:

  • Lenguaje Natural a SQL: Las preguntas en lenguaje natural se convierten en consultas SQL optimizadas utilizando modelos de lenguaje avanzados.
  • Soporte Multi-Base de Datos: Compatibilidad con bases de datos PostgreSQL, MySQL, SQLite y Microsoft Fabric.
  • Generación Aumentada por Recuperación (RAG): Generación de consultas mejorada al combinar metadatos de esquema y contenido de filas muestreadas.
  • Indexación de Tablas: Habilita la incrustación de esquemas de bases de datos y datos de muestra, mejorando la relevancia de las consultas.
  • Síntesis de Respuestas: Genera resúmenes en lenguaje natural de los resultados de las consultas.
  • Formato Markdown: Crea respuestas más legibles.
  • Soporte de Múltiples Modelos: Funciona con modelos de OpenAI, Azure OpenAI, AWS Bedrock y Ollama.

Datos de Muestra

El servidor incluye dos conjuntos de datos de ejemplo.

  • Amenazas Cibernéticas
  • Calificaciones ESG

Cliente de Muestra

También se incluye un REPL de muestra.


Inicio Rápido con Docker

Nota: Para usar sus propias bases de datos, se requiere configuración adicional; consulte la sección Configuración a continuación.

Ejecutar el Servidor con Docker

docker run -it -p8000:8000 \
  -v ~/.aws:/home/appuser/.aws:ro \
  -e MODEL_API_TYPE=Bedrock \
  -e AWS_PROFILE=AWSAdministratorAccess-880502554482 \
  -e FASTMCP_HOST=0.0.0.0 \
  709825985650.dkr.ecr.us-east-1.amazonaws.com/synechron/mcp-text2sql:0.0.10-2025.07.04-rc3 server

Running the Sample Client with Docker

docker run -it \
    -v ~/.aws:/home/appuser/.aws:ro \
    -e AWS_PROFILE=AWSAdministratorAccess-880502554482 \
    -e BEDROCK_MODEL_ID=us.anthropic.claude-3-7-sonnet-20250219-v1:0 \
    -e BEDROCK_API_VERSION=2025-01-01-preview \
    -e MCP_SERVER_HOST=host.docker.internal \
     709825985650.dkr.ecr.us-east-1.amazonaws.com/synechron/mcp-text2sql:0.0.10-2025.07.04-rc3 client

Ejemplo de Uso del Cliente

Connected to server with tools: ['Text2Sql_Cyber_Threats', 'Text2Sql_ESG_Ratings']

MCP Client Started!
Type your queries or 'quit' to exit.

Query: What kind of data is in the Cyber Threat datasource?

The Cyber Threat datasource contains comprehensive information about cybersecurity incidents with the following data fields:

1. country - The country where the cyber attack took place
2. year - The year when the cyber attack occurred
3. attack_type - The type of cyber attack (e.g., Phishing, Ransomware, DDoS, Man-in-the-Middle, SQL Injection)
4. target_industry - The industry that was targeted (e.g., Education, Retail, IT, Telecommunications, Healthcare, Government, Banking)
5. financial_loss_(in_million_$) - The financial impact of the attack in millions of dollars
6. number_of_affected_users - How many users were affected by the attack
7. attack_source - Where the attack originated from (e.g., Hacker Group, Nation-state, Insider, Unknown)
8. security_vulnerability_type - The type of security vulnerability exploited (e.g., Unpatched Software, Weak Passwords, Social Engineering)
9. defense_mechanism_used - What defense was in place (e.g., VPN, Firewall, Antivirus, AI-based Detection)
10. incident_resolution_time_(in_hours) - How long it took to resolve the incident in hours

The database tracks cybersecurity incidents across different countries, industries, and years, including details about attack methods, financial impact, affected users, vulnerabilities exploited, and resolution times.

Usar el Servidor con un Cliente MCP Existente

El servidor debe ejecutarse con Docker. Use cualquiera de las siguientes configuraciones para agregarlo a un cliente MCP:

{
  "servers": {
    "text2sql": {
      "type": "streamable-http",
      "url": "http://localhost:8000/mcp"
    }
  }
}
{
  "mcpServers": {
    "text2sql": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--env-file",
        ".env",
        "709825985650.dkr.ecr.us-east-1.amazonaws.com/synechron/mcp-text2sql:0.0.10-2025.07.04-rc3",
        "server"
      ]
    }
  }
}

Configuración

El servidor MCP Text2SQL se puede configurar con una combinación de variables de entorno y configuración JSON.

Configuración del Servidor

Configuración de VálvulasVariable de EntornoPredeterminadoDescripción
ENABLEDFalseHabilitar herramienta
ENABLE_RAGTrueUsar IA para sintetizar una respuesta utilizando los datos recopilados.
ENABLE_MARKDOWNFalseFormatear respuesta en Markdown
ENABLE_PANDASTrueUsar pandas para ejecutar y analizar consultas SQL; de lo contrario, usar llama_index
ENABLE_TABLE_INDEXINGTrueUsar recuperador de tablas para crear incrustaciones del esquema de la base de datos y datos de muestra para optimizar el contexto para el LLM
FORCE_REINDEXINGFalseForzar a la herramienta a regenerar índices vectoriales para tablas y datos de muestra
DATABASE_CONFIGDB_CONFIGConfiguración de db predeterminadaConfiguración de herramienta en formato JSON con cadena de conexión de base de datos, tablas, contexto y avisos
IGNORE_SCHEMATablas del sistema predeterminadasLista separada por comas de esquemas a ignorar
CREDENTIAL_SERVICECREDENTIAL_SERVICESeleccionar tipo de autenticación (Azure, AWS, Google, None)
MODEL_API_TYPE / MODEL_TYPEMODEL_TYPEOpenAISeleccionar tipo de API de modelo (OpenAI, Azure OpenAI, Bedrock, Ollama)
API_ENDPOINTOPENAI_ENDPOINThttp://litellm-proxy:4000Punto de conexión de la API de OpenAI
API_IDAPI_ACCESS_IDID de clave de acceso
API_KEYOPENAI_API_KEYClave de API de OpenAI
API_REGIONAWS_REGIONus-east-1Región para modelos alojados en la nube
API_VERSION2025-01-01-previewVersión de la API de OpenAI
LLM_MODEL_NAMEgpt-4.1-miniModelo de texto a SQL
EMBED_MODEL_NAMEtext-embedding-3-smallModelo de incrustación
MAX_RETRY3Número máximo de reintentos para consultas fallidas
MAX_RESULTS200Número máximo de filas en una respuesta
MAX_DATAFRAME1000Número máximo de filas en un dataframe enviado al LLM para sintetizar una respuesta
SAMPLE_RATIO0.0001Porcentaje del conjunto de datos a indexar. Valores más altos tardarán más en indexarse pero darán mejores resultados.
SAMPLE_MAX_SIZE50Número máximo de filas a muestrear. Reemplaza a SAMPLE_RATIO
DEBUGFalseModo de depuración
MODEMODEstdioModo en el que debe operar el servidor MCP. Use shttp para HTTP Streamable.
AUTH_ENABLEDAUTH_ENABLEDfalseSi se requiere o no que los clientes MCP estén autenticados.
AUTH_ISSUERAUTH_ISSUERRequerido si AUTH_ENABLED es true.
AUTH_JWKS_URIAUTH_JWKS_URIRequerido si AUTH_ENABLED es true.
AWS_ACCESS_KEY_IDAWS_ACCESS_KEY_IDRequerido si se usa AWS Bedrock para incrustaciones
AWS_SECRET_ACCESS_KEYAWS_SECRET_ACCESS_KEYRequerido si se usa AWS Bedrock para incrustaciones
LOG_LEVELLOG_LEVELINFONivel de registro (DEBUG, INFO, WARNING, ERROR).
MCP_SERVER_API_KEYMCP_SERVER_API_KEYClave de API para acceso a LLM / Incrustaciones. Configurar con AWS_SECRET_ACCESS_KEY, clave LiteLLM o clave de API de OpenAI.
MCP_SERVER_DATAMCP_SERVER_DATAdataDirectorio para archivos de datos temporales
TEXT2SQL_VALVES_JSONTEXT2SQL_VALVES_JSONvalves.jsonRuta completa al JSON de configuración; ver ejemplo arriba.

Ejemplo de Archivo .env

LOG_LEVEL=INFO
PYTHONUNBUFFERED=1
TEXT2SQL_VALVES_JSON=/home/appuser/config/config.json

MODE=shttp
FASTMCP_HOST=0.0.0.0
FASTMCP_PORT=8000

AUTH_ENABLED=true
AUTH_JWKS_URI=https://cognito-idp.us-east-1.amazonaws.com/us-east-1_/.well-known/jwks.json
AUTH_ISSUER=https://cognito-idp.us-east-1.amazonaws.com/us-east-1_

AWS_PROFILE=default

Ejemplo de TEXT2SQL_VALVES_JSON (valves.json)

El servidor MCP Text2SQL debe configurarse utilizando un archivo JSON que especifique conexiones de base de datos, configuraciones de modelo y otros parámetros. Aquí hay un ejemplo de configuración:

{
  "ENABLED": true,
  "ENABLE_RAG": false,
  "ENABLE_MARKDOWN": true,
  "ENABLE_PANDAS": true,
  "ENABLE_TABLE_INDEXING": true,
  "FORCE_REINDEXING": false,
  "DATABASE_CONFIG": {
    "Cyber_Threats": {
      "description": "A comprehensive dataset tracking cybersecurity incidents, attack vectors, threat types, and affected countries.",
      "topics": [
        "Cyber Threats",
        "Attacks",
        "Targets"
      ],
      "url": "sqlite:///file:/home/appuser/config/cyber_threats.db?uri=true",
      "tables": {
        "cyber_threats": "The Global Cybersecurity Threats Dataset (2015-2024) provides extensive data on cyberattacks, malware types, targeted industries, and affected countries."
      },
      "prompts": [
        {
          "name": "biggest_cyber_threat",
          "description": "Which type of cyber threat has caused the biggest financial loss?"
        }
      ]
    },
    "ESG_Ratings": {
      "description": "S&P 500 Companies ESG Insights & Risk Scores for Informed Decisions.",
      "topics": [
        "ESG Ratings",
        "ESG Risk",
        "Sustainability"
      ],
      "url": "sqlite:///file:/home/appuser/config/esg_ratings.db?uri=true",
      "tables": {
        "esg_ratings": "A comprehensive dataset tracking ESG ratings for S&P 500 companies."
      }
    }
  },
  "IGNORE_SCHEMA": "information_schema, INFORMATION_SCHEMA, _rsc, db_accessadmin, db_backupoperator, db_datareader, db_datawriter, db_ddladmin, db_denydatareader, db_denydatawriter, db_owner, db_securityadmin, guest, queryinsights, sys, pg_catalog",
  "MODEL_API_TYPE": "Bedrock",
  "AWS_PROFILE": "default",
  "API_VERSION": "2025-01-01-preview",
  "LLM_MODEL_NAME": "us.anthropic.claude-3-7-sonnet-20250219-v1:0",
  "EMBED_MODEL_NAME": "amazon.titan-embed-text-v2:0",
  "MAX_RETRY": 3,
  "MAX_RESULTS": 100,
  "MAX_DATAFRAME": 2000,
  "LOG_LEVEL": "INFO"
}

Configuración del Cliente

Las siguientes variables de entorno se pueden proporcionar al cliente MCP de muestra:

OpciónPredeterminadoDescripción
JWT_ACCESS_TOKENfalseToken utilizado para autenticar al cliente con el servidor si el servidor tiene AUTH_ENABLED true
MCP_SERVER_HOSTHost para el servidor MCP. Para un servidor que se ejecuta en Docker en el mismo host, use host.docker.internal
MCP_SERVER_PORT8000Puerto para el servidor MCP.
BEDROCK_MODEL_IDRequerido si se usa AWS Bedrock, p. ej. us.anthropic.claude-3-7-sonnet-20250219-v1:0
BEDROCK_API_VERSIONRequerido si se usa AWS Bedrock, p. ej. 2023-06-01-preview
AWS_PROFILERequerido si se usa AWS Bedrock, p. ej. default
AZURE_DEPLOYMENT_MODELRequerido si se usa Azure OpenAI. Se ignora si BEDROCK_MODEL_ID está configurado. Para la autenticación de Azure, consulte DefaultAzureCredential.
AZURE_API_VERSIONRequerido si se usa Azure OpenAI. Se ignora si BEDROCK_MODEL_ID está configurado.
OTEL_SDK_DISABLEDfalseHabilitar telemetría para el cliente de Crew.AI.
CREWAI_DISABLE_TELEMETRYfalseHabilitar telemetría para el cliente de Crew.AI.

Herramientas

El servidor MCP Text2SQL crea dinámicamente herramientas y prompts de MCP para las bases de datos configuradas en el siguiente formato:

  • Text2Sql_DatabaseName: Consultar una base de datos específica usando lenguaje natural
    • Parámetros:
      • query: Consulta en lenguaje natural para ejecutar contra la base de datos

Licencia

Este proyecto está licenciado bajo la Licencia MIT.