Synechron Text2SQL MCP Server

Fornece acesso em linguagem natural a bancos de dados relacionais usando modelos de linguagem avançados, suportando múltiplos tipos de banco de dados.

Documentação

Synechron Text2SQL MCP Server

O Synechron Text2SQL MCP Server é um servidor Model Context Protocol (MCP). Ele fornece a clientes MCP como Cursor, VSCode e Claude Desktop acesso em linguagem natural a bancos de dados relacionais de vários tipos – permitindo que os usuários façam perguntas sobre seus dados usando capacidades de linguagem natural.

O servidor otimiza a qualidade dos resultados que gera usando uma combinação de busca semântica ciente de esquema e de linhas. Esquemas e uma amostra de linhas são indexados, permitindo que o servidor gere consultas adequadas de forma mais eficaz.

Recursos e Capacidades

O servidor Text2SQL MCP oferece os seguintes recursos:

  • Linguagem Natural para SQL: Perguntas em linguagem natural são convertidas em consultas SQL otimizadas usando modelos de linguagem avançados.
  • Suporte a Múltiplos Bancos de Dados: Compatibilidade com bancos de dados PostgreSQL, MySQL, SQLite e Microsoft Fabric.
  • Geração Aumentada por Recuperação (RAG): Geração de consultas aprimorada ao combinar metadados de esquema e conteúdo de linhas amostradas.
  • Indexação de Tabelas: Permite a criação de embeddings para esquemas de banco de dados e dados de amostra, melhorando a relevância das consultas.
  • Síntese de Respostas: Gera resumos em linguagem natural dos resultados das consultas.
  • Formatação em Markdown: Cria respostas mais legíveis.
  • Suporte a Múltiplos Modelos: Funciona com modelos OpenAI, Azure OpenAI, AWS Bedrock e Ollama.

Dados de Exemplo

O servidor inclui dois conjuntos de dados de exemplo.

  • Cyber Threats
  • ESG Ratings

Cliente de Exemplo

Um REPL de exemplo também está incluído.


Início Rápido com Docker

Nota: Para usar seus próprios bancos de dados, é necessária configuração adicional; consulte a seção Configuração abaixo.

Executando o Servidor com 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

Exemplo de Uso do 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.

Usando o Servidor com um Cliente MCP Existente

O servidor deve ser executado com Docker. Use uma das seguintes configurações para adicioná-lo a um 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"
      ]
    }
  }
}

Configuração

O servidor Text2SQL MCP pode ser configurado com uma combinação de variáveis de ambiente e configuração JSON.

Configuração do Servidor

Valves ConfigEnvironment VariableDefaultDescrição
ENABLEDFalseHabilitar ferramenta
ENABLE_RAGTrueUsar IA para sintetizar uma resposta usando os dados coletados.
ENABLE_MARKDOWNFalseFormatar resposta em Markdown
ENABLE_PANDASTrueUsar pandas para executar e analisar consultas SQL; caso contrário, usar llama_index
ENABLE_TABLE_INDEXINGTrueUsar o recuperador de tabelas para criar embeddings do esquema do banco de dados e dados de amostra para otimizar o contexto para o LLM
FORCE_REINDEXINGFalseForçar a ferramenta a regenerar índices vetoriais para tabelas e dados de amostra
DATABASE_CONFIGDB_CONFIGConfiguração de banco padrãoConfiguração da ferramenta em formato JSON com string de conexão do banco de dados, tabelas, contexto e prompts
IGNORE_SCHEMATabelas padrão do sistemaLista separada por vírgulas de esquemas a ignorar
CREDENTIAL_SERVICECREDENTIAL_SERVICESelecionar tipo de autenticação (Azure, AWS, Google, Nenhum)
MODEL_API_TYPE / MODEL_TYPEMODEL_TYPEOpenAISelecionar tipo de API do modelo (OpenAI, Azure OpenAI, Bedrock, Ollama)
API_ENDPOINTOPENAI_ENDPOINThttp://litellm-proxy:4000Endpoint da API OpenAI
API_IDAPI_ACCESS_IDID da chave de acesso
API_KEYOPENAI_API_KEYChave da API OpenAI
API_REGIONAWS_REGIONus-east-1Região para modelos hospedados na nuvem
API_VERSION2025-01-01-previewVersão da API OpenAI
LLM_MODEL_NAMEgpt-4.1-miniModelo de texto para SQL
EMBED_MODEL_NAMEtext-embedding-3-smallModelo de embedding
MAX_RETRY3Número máximo de tentativas para consultas com falha
MAX_RESULTS200Número máximo de linhas em uma resposta
MAX_DATAFRAME1000Número máximo de linhas em um dataframe enviado ao LLM para sintetizar uma resposta
SAMPLE_RATIO0.0001Porcentagem do conjunto de dados a indexar. Valores mais altos levarão mais tempo para indexar, mas darão melhores resultados.
SAMPLE_MAX_SIZE50Número máximo de linhas a amostrar. Substitui SAMPLE_RATIO
DEBUGFalseModo de depuração
MODEMODEstdioModo no qual o servidor MCP deve operar. Use shttp para HTTP Streamable.
AUTH_ENABLEDAUTH_ENABLEDfalseSe os clientes MCP devem ou não ser autenticados.
AUTH_ISSUERAUTH_ISSUERObrigatório se AUTH_ENABLED for true.
AUTH_JWKS_URIAUTH_JWKS_URIObrigatório se AUTH_ENABLED for true.
AWS_ACCESS_KEY_IDAWS_ACCESS_KEY_IDObrigatório se estiver usando AWS Bedrock para embeddings
AWS_SECRET_ACCESS_KEYAWS_SECRET_ACCESS_KEYObrigatório se estiver usando AWS Bedrock para embeddings
LOG_LEVELLOG_LEVELINFONível de registro (DEBUG, INFO, WARNING, ERROR).
MCP_SERVER_API_KEYMCP_SERVER_API_KEYChave de API para acesso a LLM / Embeddings. Configure com AWS_SECRET_ACCESS_KEY, chave LiteLLM ou chave da API OpenAI.
MCP_SERVER_DATAMCP_SERVER_DATAdataDiretório para arquivos de dados temporários
TEXT2SQL_VALVES_JSONTEXT2SQL_VALVES_JSONvalves.jsonCaminho completo para o JSON de configuração; veja o exemplo acima.

Exemplo de Arquivo .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

Exemplo de TEXT2SQL_VALVES_JSON (valves.json)

O servidor Text2SQL MCP deve ser configurado usando um arquivo JSON que especifica conexões de banco de dados, configurações de modelo e outros parâmetros. Aqui está um exemplo de configuração:

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

Configuração do Cliente

As seguintes variáveis de ambiente podem ser fornecidas ao cliente MCP de exemplo:

OpçãoPadrãoDescrição
JWT_ACCESS_TOKENfalseToken usado para autenticar o cliente com o servidor se o servidor tiver AUTH_ENABLED verdadeiro
MCP_SERVER_HOSTHost para o servidor MCP. Para um servidor rodando em Docker no mesmo host, use host.docker.internal
MCP_SERVER_PORT8000Porta para o servidor MCP.
BEDROCK_MODEL_IDObrigatório se usar AWS Bedrock, ex.: us.anthropic.claude-3-7-sonnet-20250219-v1:0
BEDROCK_API_VERSIONObrigatório se usar AWS Bedrock, ex.: 2023-06-01-preview
AWS_PROFILEObrigatório se usar AWS Bedrock, ex.: default
AZURE_DEPLOYMENT_MODELObrigatório se usar Azure OpenAI. Ignorado se BEDROCK_MODEL_ID estiver definido. Para autenticação Azure, veja DefaultAzureCredential.
AZURE_API_VERSIONObrigatório se usar Azure OpenAI. Ignorado se BEDROCK_MODEL_ID estiver definido.
OTEL_SDK_DISABLEDfalseHabilita telemetria para o cliente Crew.AI.
CREWAI_DISABLE_TELEMETRYfalseHabilita telemetria para o cliente Crew.AI.

Ferramentas

O servidor MCP Text2SQL cria dinamicamente Ferramentas e Prompts MCP para os bancos de dados configurados no seguinte formato:

  • Text2Sql_DatabaseName: Consulta um banco de dados específico usando linguagem natural
    • Parâmetros:
      • query: Consulta em linguagem natural para executar contra o banco de dados

Licença

Este projeto está licenciado sob a Licença MIT.