Redshift Utils MCP Server
Realizar ações de banco de dados no Amazon Redshift por meio de sua API de Dados.
Documentação
Redshift Utils MCP Server
Visão Geral
Este projeto implementa um servidor Model Context Protocol (MCP) projetado especificamente para interagir com bancos de dados Amazon Redshift.
Ele preenche a lacuna entre Modelos de Linguagem de Grande Porte (LLMs) ou assistentes de IA (como os do Claude, Cursor ou aplicativos personalizados) e seu data warehouse Redshift, permitindo acesso e interação de dados seguros e padronizados. Isso permite que os usuários consultem dados, entendam a estrutura do banco de dados e realizem operações de monitoramento/diagnóstico usando linguagem natural ou prompts orientados por IA.
Este servidor é para desenvolvedores, analistas de dados ou equipes que buscam integrar capacidades de LLM diretamente com seu ambiente de dados Amazon Redshift de maneira estruturada e segura.
Sumário
- Redshift Utils MCP Server
Recursos
- ✨ Conexão Segura com Redshift (via Data API): Conecta-se ao seu cluster Amazon Redshift usando a AWS Redshift Data API via Boto3, utilizando o AWS Secrets Manager para credenciais gerenciadas com segurança por meio de variáveis de ambiente.
- 🔍 Descoberta de Esquemas: Expõe recursos MCP para listar esquemas e tabelas dentro de um esquema especificado.
- 📊 Metadados e Estatísticas: Fornece uma ferramenta (
handle_inspect_table) para coletar metadados detalhados da tabela, estatísticas (como tamanho, contagens de linhas, skew, obsolescência de estatísticas) e status de manutenção. - 📝 Execução de Consultas Somente Leitura: Oferece uma ferramenta MCP segura (
handle_execute_ad_hoc_query) para executar consultas SELECT arbitrárias no banco de dados Redshift, permitindo a recuperação de dados com base em solicitações do LLM. - 📈 Análise de Desempenho de Consultas: Inclui uma ferramenta (
handle_diagnose_query_performance) para recuperar e analisar o plano de execução, métricas e dados históricos de um ID de consulta específico. - 🔍 Inspeção de Tabelas: Fornece uma ferramenta (
handle_inspect_table) para realizar uma inspeção abrangente de uma tabela, incluindo design, armazenamento, saúde e uso. - 🩺 Verificação de Saúde do Cluster: Oferece uma ferramenta (
handle_check_cluster_health) para realizar uma avaliação de saúde básica ou completa do cluster usando várias consultas de diagnóstico. - 🔒 Diagnóstico de Locks: Fornece uma ferramenta (
handle_diagnose_locks) para identificar e relatar contenção de locks e sessões bloqueadas atuais. - 📊 Monitoramento de Carga de Trabalho: Inclui uma ferramenta (
handle_monitor_workload) para analisar padrões de carga de trabalho do cluster em uma janela de tempo, cobrindo WLM, consultas mais pesadas e uso de recursos. - 📝 Recuperação de DDL: Oferece uma ferramenta (
handle_get_table_definition) para recuperar a saída doSHOW TABLE(DDL) para uma tabela especificada. - 🛡️ Sanitização de Entrada: Utiliza consultas parametrizadas por meio do cliente Boto3 Redshift Data API quando aplicável para mitigar riscos de injeção de SQL.
- 🧩 Interface MCP Padronizada: Segue a especificação Model Context Protocol para integração perfeita com clientes compatíveis (ex.: Claude Desktop, Cursor IDE, aplicativos personalizados).
Pré-requisitos
Software:
- Python 3.10+
uv(gerenciador de pacotes recomendado) oupip
Infraestrutura e Acesso:
- Acesso a um cluster Amazon Redshift.
- Uma conta AWS com permissões para usar a Redshift Data API (
redshift-data:*) e acessar o segredo especificado no Secrets Manager (secretsmanager:GetSecretValue). - Uma conta de usuário do Redshift cujas credenciais estejam armazenadas no AWS Secrets Manager. Esse usuário precisa das permissões necessárias dentro do Redshift para executar as ações habilitadas por este servidor (ex.:
CONNECTno banco de dados,SELECTnas tabelas de destino,SELECTnas visualizações de sistema relevantes, comopg_class,pg_namespace,svv_all_schemas,svv_tables, `svv_table_info``). Recomenda-se fortemente o uso de uma função com o princípio do menor privilégio. Consulte Considerações de Segurança.
Credenciais:
Os detalhes de conexão do seu Redshift são gerenciados via AWS Secrets Manager, e o servidor se conecta usando a Redshift Data API. Você precisa de:
- O identificador do cluster Redshift.
- O nome do banco de dados dentro do cluster.
- O ARN do segredo no AWS Secrets Manager contendo as credenciais do banco de dados (nome de usuário e senha).
- A região AWS onde o cluster e o segredo estão localizados.
- Opcionalmente, um nome de perfil AWS se você não estiver usando credenciais/região padrão.
Esses detalhes serão configurados por meio de variáveis de ambiente, conforme detalhado na seção Configuração.
Instalação
Instalar a partir do PyPI (Recomendado)
A maneira mais fácil de instalar o Redshift Utils MCP Server é diretamente do PyPI:
# Using pip
pip install redshift-utils-mcp
# Using uv (recommended)
uv pip install redshift-utils-mcp
Instalar a partir do Código-fonte
Alternativamente, você pode instalar a partir do repositório de código-fonte:
# Clone the repository
git clone https://github.com/vinodismyname/redshift-utils-mcp.git
cd redshift-utils-mcp
# Install using uv (recommended)
uv sync
# Or install using pip
pip install -e .
Configuração
Defina as Variáveis de Ambiente:
Este servidor requer as seguintes variáveis de ambiente para se conectar ao seu cluster Redshift via AWS Data API. Você pode defini-las diretamente no seu shell, usando um arquivo de serviço do systemd, um arquivo de ambiente Docker ou criando um arquivo .env no diretório raiz do projeto (se você estiver usando uma ferramenta como uv ou python-dotenv que suporte carregamento a partir de .env).
Exemplo usando export no shell:
export REDSHIFT_CLUSTER_ID="your-cluster-id"
export REDSHIFT_DATABASE="your_database_name"
export REDSHIFT_SECRET_ARN="arn:aws:secretsmanager:us-east-1:123456789012:secret:your-redshift-secret-XXXXXX"
export AWS_REGION="us-east-1" # Or AWS_DEFAULT_REGION
# export AWS_PROFILE="your-aws-profile-name" # Optional
Exemplo de arquivo .env (consulte .env.example):
# .env file for Redshift MCP Server configuration
# Ensure this file is NOT committed to version control if it contains secrets. Add it to .gitignore.
REDSHIFT_CLUSTER_ID="your-cluster-id"
REDSHIFT_DATABASE="your_database_name"
REDSHIFT_SECRET_ARN="arn:aws:secretsmanager:us-east-1:123456789012:secret:your-redshift-secret-XXXXXX"
AWS_REGION="us-east-1" # Or AWS_DEFAULT_REGION
# AWS_PROFILE="your-aws-profile-name" # Optional
Tabela de Variáveis Obrigatórias:
| Nome da Variável | Obrigatória | Descrição | Exemplo de Valor |
|---|---|---|---|
REDSHIFT_CLUSTER_ID | Sim | Identificador do seu cluster Redshift. | my-redshift-cluster |
REDSHIFT_DATABASE | Sim | O nome do banco de dados ao qual conectar. | mydatabase |
REDSHIFT_SECRET_ARN | Sim | ARN do AWS Secrets Manager para as credenciais do Redshift. | arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret-abcdef |
AWS_REGION | Sim | Região AWS para a Data API e o Secrets Manager. | us-east-1 |
AWS_DEFAULT_REGION | Não | Alternativa ao AWS_REGION para especificar a região AWS. | us-west-2 |
AWS_PROFILE | Não | Nome do perfil AWS a ser usado a partir do seu arquivo de credenciais (~/.aws/...). | my-redshift-profile |
Nota: Certifique-se de que as credenciais AWS usadas pelo Boto3 (via ambiente, perfil ou função IAM) tenham permissões para acessar o REDSHIFT_SECRET_ARN especificado e usar a Redshift Data API (redshift-data:*).
Uso
Após a instalação, você pode executar o servidor diretamente da linha de comando:
# If installed from PyPI
redshift-utils-mcp
# Or using uvx (no installation required)
uvx redshift-utils-mcp
Conectando com o Claude Desktop / Anthropic Console:
Adicione o seguinte bloco de configuração ao seu arquivo mcp.json:
{
"mcpServers": {
"redshift-utils-mcp": {
"command": "uvx",
"args": ["redshift-utils-mcp"],
"env": {
"REDSHIFT_CLUSTER_ID":"your-cluster-id",
"REDSHIFT_DATABASE":"your_database_name",
"REDSHIFT_SECRET_ARN":"arn:aws:secretsmanager:...",
"AWS_REGION": "us-east-1"
}
}
}
Conectando com o Claude Code CLI:
Use o CLI do Claude para adicionar a configuração do servidor:
claude mcp add redshift-utils-mcp \
-e REDSHIFT_CLUSTER_ID="your-cluster-id" \
-e REDSHIFT_DATABASE="your_database_name" \
-e REDSHIFT_SECRET_ARN="arn:aws:secretsmanager:..." \
-e AWS_REGION="us-east-1" \
-- uvx redshift-utils-mcp
Conectando com o Cursor IDE:
- Inicie o servidor MCP localmente usando as instruções na seção Uso / Início Rápido.
- No Cursor, abra a Paleta de Comandos (Cmd/Ctrl + Shift + P).
- Digite "Connect to MCP Server" ou navegue até as configurações do MCP.
- Adicione uma nova conexão de servidor.
- Escolha o tipo de transporte
stdio. - Digite o comando e os argumentos necessários para iniciar o seu servidor (
uvx run redshift_utils_mcp). Certifique-se de que todas as variáveis de ambiente necessárias estejam disponíveis para o comando que será executado. - O Cursor deve detectar o servidor e suas ferramentas/recursos disponíveis.
Recursos MCP Disponíveis
| Padrão de URI do Recurso | Descrição | Exemplo de URI |
|---|---|---|
/scripts/{script_path} | Recupera o conteúdo bruto de um arquivo de script SQL do diretório sql_scripts do servidor. | /scripts/health/disk_usage.sql |
redshift://schemas | Lista todos os esquemas definidos pelo usuário acessíveis no banco de dados conectado. | redshift://schemas |
redshift://wlm/configuration | Recupera os detalhes atuais da configuração do Workload Management (WLM). | redshift://wlm/configuration |
redshift://schema/{schema_name}/tables | Lista todas as tabelas e visualizações acessíveis dentro do {schema_name} especificado. | redshift://schema/public/tables |
Substitua {script_path} e {schema_name} pelos valores reais ao fazer solicitações.
A acessibilidade de esquemas/tabelas depende das permissões concedidas ao usuário do Redshift configurado via REDSHIFT_SECRET_ARN.
Ferramentas MCP Disponíveis
| Nome da Ferramenta | Descrição | Parâmetros Chave (Obrigatório*) | Exemplo de Invocação |
|---|---|---|---|
handle_check_cluster_health | Realiza uma avaliação de saúde do cluster Redshift usando um conjunto de scripts SQL de diagnóstico. | level (opcional), time_window_days (opcional) | use_mcp_tool("redshift-admin", "handle_check_cluster_health", {"level": "full"}) |
handle_diagnose_locks | Identifica contenção de locks ativa e sessões bloqueadas no cluster. | min_wait_seconds (opcional) | use_mcp_tool("redshift-admin", "handle_diagnose_locks", {"min_wait_seconds": 10}) |
handle_diagnose_query_performance | Analisa o desempenho de execução de uma consulta específica, incluindo plano, métricas e dados históricos. | query_id* | use_mcp_tool("redshift-admin", "handle_diagnose_query_performance", {"query_id": 12345}) |
handle_execute_ad_hoc_query | Executa uma consulta SQL arbitrária fornecida pelo usuário via Redshift Data API. Projetado como uma saída de emergência. | sql_query* | use_mcp_tool("redshift-admin", "handle_execute_ad_hoc_query", {"sql_query": "SELECT ..."}) |
handle_get_table_definition | Recupera a instrução DDL (Data Definition Language) (SHOW TABLE) para uma tabela específica. | schema_name, table_name | use_mcp_tool("redshift-admin", "handle_get_table_definition", {"schema_name": "public", ...}) |
handle_inspect_table | Recupera informações detalhadas sobre uma tabela Redshift específica, cobrindo design, armazenamento, saúde e uso. | schema_name, table_name | use_mcp_tool("redshift-admin", "handle_inspect_table", {"schema_name": "analytics", ...}) |
handle_monitor_workload | Analisa padrões de carga de trabalho do cluster em um intervalo de tempo especificado usando vários scripts de diagnóstico. | time_window_days (opcional), top_n_queries (opcional) | use_mcp_tool("redshift-admin", "handle_monitor_workload", {"time_window_days": 7}) |
A FAZER
- Melhorar Opções de Prompt
- Adicionar suporte para mais métodos de credenciais
- Adicionar suporte para Redshift Serverless
Referências
- Este projeto depende fortemente da especificação do Model Context Protocol.
- Construído usando o SDK oficial do MCP fornecido pelo Model Context Protocol.
- Utiliza o AWS SDK para Python (Boto3) para interagir com a Amazon Redshift Data API.
- Muitos dos scripts SQL de diagnóstico são adaptados do excelente repositório awslabs/amazon-redshift-utils.