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 Config | Environment Variable | Default | Descrição |
|---|---|---|---|
| ENABLED | False | Habilitar ferramenta | |
| ENABLE_RAG | True | Usar IA para sintetizar uma resposta usando os dados coletados. | |
| ENABLE_MARKDOWN | False | Formatar resposta em Markdown | |
| ENABLE_PANDAS | True | Usar pandas para executar e analisar consultas SQL; caso contrário, usar llama_index | |
| ENABLE_TABLE_INDEXING | True | Usar 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_REINDEXING | False | Forçar a ferramenta a regenerar índices vetoriais para tabelas e dados de amostra | |
| DATABASE_CONFIG | DB_CONFIG | Configuração de banco padrão | Configuração da ferramenta em formato JSON com string de conexão do banco de dados, tabelas, contexto e prompts |
| IGNORE_SCHEMA | Tabelas padrão do sistema | Lista separada por vírgulas de esquemas a ignorar | |
| CREDENTIAL_SERVICE | CREDENTIAL_SERVICE | Selecionar tipo de autenticação (Azure, AWS, Google, Nenhum) | |
| MODEL_API_TYPE / MODEL_TYPE | MODEL_TYPE | OpenAI | Selecionar tipo de API do modelo (OpenAI, Azure OpenAI, Bedrock, Ollama) |
| API_ENDPOINT | OPENAI_ENDPOINT | http://litellm-proxy:4000 | Endpoint da API OpenAI |
| API_ID | API_ACCESS_ID | ID da chave de acesso | |
| API_KEY | OPENAI_API_KEY | Chave da API OpenAI | |
| API_REGION | AWS_REGION | us-east-1 | Região para modelos hospedados na nuvem |
| API_VERSION | 2025-01-01-preview | Versão da API OpenAI | |
| LLM_MODEL_NAME | gpt-4.1-mini | Modelo de texto para SQL | |
| EMBED_MODEL_NAME | text-embedding-3-small | Modelo de embedding | |
| MAX_RETRY | 3 | Número máximo de tentativas para consultas com falha | |
| MAX_RESULTS | 200 | Número máximo de linhas em uma resposta | |
| MAX_DATAFRAME | 1000 | Número máximo de linhas em um dataframe enviado ao LLM para sintetizar uma resposta | |
| SAMPLE_RATIO | 0.0001 | Porcentagem do conjunto de dados a indexar. Valores mais altos levarão mais tempo para indexar, mas darão melhores resultados. | |
| SAMPLE_MAX_SIZE | 50 | Número máximo de linhas a amostrar. Substitui SAMPLE_RATIO | |
| DEBUG | False | Modo de depuração | |
| MODE | MODE | stdio | Modo no qual o servidor MCP deve operar. Use shttp para HTTP Streamable. |
| AUTH_ENABLED | AUTH_ENABLED | false | Se os clientes MCP devem ou não ser autenticados. |
| AUTH_ISSUER | AUTH_ISSUER | Obrigatório se AUTH_ENABLED for true. | |
| AUTH_JWKS_URI | AUTH_JWKS_URI | Obrigatório se AUTH_ENABLED for true. | |
| AWS_ACCESS_KEY_ID | AWS_ACCESS_KEY_ID | Obrigatório se estiver usando AWS Bedrock para embeddings | |
| AWS_SECRET_ACCESS_KEY | AWS_SECRET_ACCESS_KEY | Obrigatório se estiver usando AWS Bedrock para embeddings | |
| LOG_LEVEL | LOG_LEVEL | INFO | Nível de registro (DEBUG, INFO, WARNING, ERROR). |
| MCP_SERVER_API_KEY | MCP_SERVER_API_KEY | Chave de API para acesso a LLM / Embeddings. Configure com AWS_SECRET_ACCESS_KEY, chave LiteLLM ou chave da API OpenAI. | |
| MCP_SERVER_DATA | MCP_SERVER_DATA | data | Diretório para arquivos de dados temporários |
| TEXT2SQL_VALVES_JSON | TEXT2SQL_VALVES_JSON | valves.json | Caminho 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ção | Padrão | Descrição |
|---|---|---|
JWT_ACCESS_TOKEN | false | Token usado para autenticar o cliente com o servidor se o servidor tiver AUTH_ENABLED verdadeiro |
MCP_SERVER_HOST | Host para o servidor MCP. Para um servidor rodando em Docker no mesmo host, use host.docker.internal | |
MCP_SERVER_PORT | 8000 | Porta para o servidor MCP. |
BEDROCK_MODEL_ID | Obrigatório se usar AWS Bedrock, ex.: us.anthropic.claude-3-7-sonnet-20250219-v1:0 | |
BEDROCK_API_VERSION | Obrigatório se usar AWS Bedrock, ex.: 2023-06-01-preview | |
AWS_PROFILE | Obrigatório se usar AWS Bedrock, ex.: default | |
AZURE_DEPLOYMENT_MODEL | Obrigatório se usar Azure OpenAI. Ignorado se BEDROCK_MODEL_ID estiver definido. Para autenticação Azure, veja DefaultAzureCredential. | |
AZURE_API_VERSION | Obrigatório se usar Azure OpenAI. Ignorado se BEDROCK_MODEL_ID estiver definido. | |
OTEL_SDK_DISABLED | false | Habilita telemetria para o cliente Crew.AI. |
CREWAI_DISABLE_TELEMETRY | false | Habilita 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
- Parâmetros:
Licença
Este projeto está licenciado sob a Licença MIT.