O MCP-PostgreSQL-Ops é uma ferramenta profissional de operações e monitoramento projetada para bancos de dados PostgreSQL. Ela permite que modelos de linguagem grande (LLMs) ou agentes de IA interajam com o banco de dados por meio de um servidor MCP (Model Context Protocol) seguro. O recurso mais importante dessa ferramenta é que todas as operações são somente de leitura, o que garante que as análises de desempenho, as verificações de configuração e a navegação estrutural sejam realizadas sem causar modificações não intencionais no banco de dados on-line, garantindo a segurança absoluta dos dados. O projeto aproveita as vantagens do pg_stat_statements
responder cantando pg_stat_monitor
Plug-in de extensão que fornece insights profundos sobre o desempenho para ajudar os administradores de banco de dados (DBAs) e desenvolvedores a localizar rapidamente consultas lentas, analisar a eficiência do uso de índices e gerenciar a capacidade do banco de dados. Os usuários podem fazer perguntas em linguagem natural para executar vários comandos de operação e manutenção, como "consultar os 10 SQL mais lentos" ou "verificar o número de conexões com o banco de dados", tornando o gerenciamento complexo do banco de dados mais fácil e intuitivo.
Lista de funções
- Informações e status do servidor:
get_server_info
Obtenha informações sobre a versão do servidor PostgreSQL, o status operacional e os plug-ins de extensões instalados.get_active_connections
Conexões ativas: Visualize o número de conexões ativas e os detalhes da sessão do banco de dados atual.get_postgresql_config
Pesquisa e obtenção de parâmetros de configuração do PostgreSQL com base em palavras-chave.
- Visualização da estrutura do banco de dados:
get_database_list
Banco de dados: lista todos os bancos de dados e seus tamanhos.get_table_list
Tabela: Exibe informações sobre todas as tabelas do banco de dados especificado e seus tamanhos.get_user_list
Usuário: Lista todos os usuários do banco de dados e suas permissões.
- Monitoramento e análise de desempenho:
get_pg_stat_statements_top_queries
Análise e identificação de consultas de execução lenta (consultas lentas) com base em estatísticas de desempenho.get_pg_stat_monitor_recent_queries
Monitoramento em tempo real de consultas executadas recentemente.get_index_usage_stats
Análise da frequência e da eficiência do uso de índices para ajudar a identificar índices não utilizados ou ineficientes.
- gerenciamento de capacidade:
get_database_size_info
Análise e exibição do tamanho da capacidade de cada banco de dados: Analise e mostre o tamanho da capacidade de cada banco de dados.get_table_size_info
Análise e exibição do tamanho das tabelas de dados e índicesget_vacuum_analyze_stats
Exibir a tabela do banco de dadosVACUUM
(coleta de lixo) eANALYZE
(Atualização de informações estatísticas) status e histórico.
Usando a Ajuda
O processo de instalação e uso do MCP-PostgreSQL-Ops é muito simples e está dividido em três etapas principais: preparação do ambiente, instalação de dependências e inicialização do serviço.
Etapa 1: Preparação e configuração do ambiente
Antes de começar, você precisa se certificar de que seu sistema tenha instalado oPython 3.11
ou superior, euv
Essa ferramenta de gerenciamento de pacotes Python.
- Download do código do projeto
Primeiro, clone o projeto do GitHub em seu computador local.git clone https://github.com/call518/MCP-PostgreSQL-Ops.git cd MCP-PostgreSQL-Ops
- Configuração de conexões de banco de dados
O projeto contém um arquivo chamado.env.example
do modelo do arquivo de configuração. Você precisa copiar esse arquivo e renomeá-lo.env
e, em seguida, modifique as informações de conexão do banco de dados de acordo com sua situação real.cp .env.example .env
Em seguida, use um editor de texto para abrir o arquivo
.env
preencha as informações do seu banco de dados PostgreSQL:# 数据库服务器的主机名或IP地址 POSTGRES_HOST=localhost # 数据库服务器的端口 POSTGRES_PORT=5432 # 连接数据库的用户名 POSTGRES_USER=postgres # 连接数据库的密码 POSTGRES_PASSWORD=your-secret-password # 默认连接的数据库名称 POSTGRES_DB=postgres
Etapa 2: Instale as extensões necessárias do PostgreSQL
Para usar o recurso completo de monitoramento de desempenho, seu banco de dados PostgreSQL deve ter a opçãopg_stat_statements
Extensão. Essa é uma extensão oficial que geralmente é instalada por padrão, mas não é ativada.
- modificações
postgresql.conf
Localizar seu arquivo de configuração do PostgreSQLpostgresql.conf
emshared_preload_libraries
Item de configuração para adicionar opg_stat_statements
.shared_preload_libraries = 'pg_stat_statements'
Se você também quiser usar o recurso de monitoramento de consultas em tempo real, poderá adicioná-lo junto com a opção
pg_stat_monitor
.shared_preload_libraries = 'pg_stat_statements,pg_stat_monitor'
- Reiniciar os serviços de banco de dados
Após modificar a configuração, o serviço PostgreSQL deve ser reiniciado para que as alterações tenham efeito. - Criação de extensões no banco de dados
Usando um cliente de banco de dados (como opsql
) Conecte-se ao seu banco de dados e execute o seguinte comando SQL para criar a extensão.CREATE EXTENSION IF NOT EXISTS pg_stat_statements; -- 如果需要,也创建pg_stat_monitor CREATE EXTENSION IF NOT EXISTS pg_stat_monitor;
Você pode fazer isso por meio do
get_server_info
para verificar se a extensão foi instalada com êxito.
Etapa 3: Instale as dependências do Python e inicie o serviço
- Criação de um ambiente virtual e instalação de dependências
Recomendado para projetosuv
para gerenciar o ambiente e as dependências do Python, que podem ser instalados rapidamente.# 创建一个基于Python 3.11的虚拟环境 uv venv --python 3.11 # 激活虚拟环境 (在Linux/macOS下) source .venv/bin/activate # 安装所有依赖 uv sync
- Início do serviço MCP
O projeto oferece várias maneiras de começar, sendo a mais comum o modo de desenvolver e testar localmente.- Modelo de desenvolvimento (recomendado)
Executando scripts diretamente, esse modo inicia um inspetor MCP local, facilitando a interação direta com a ferramenta../scripts/run-mcp-inspector-local.sh
- modo de depuração
Se precisar ver uma saída de registro mais detalhada, você pode iniciá-lo diretamente com o comando Python e definir o nível de registro comoDEBUG
.python -m src.mcp_postgresql_ops.mcp_main --log-level DEBUG
- Modelo de serviço HTTP
Você também pode executar o serviço como um servidor HTTP para que outros aplicativos possam invocar sua funcionalidade por meio de solicitações de rede.python -m src.mcp_postgresql_ops.mcp_main \ --type streamable-http \ --host 127.0.0.1 \ --port 8080 \ --log-level DEBUG
Depois que o serviço for iniciado, você poderá interagir com ele por meio do agente de IA ou de outros clientes MCP, enviando comandos de linguagem natural para gerenciar e monitorar seu banco de dados. Por exemplo, você pode solicitar: "Mostrar as 10 consultas mais lentas" ou "Verificar todos os tamanhos de banco de dados".
- Modelo de desenvolvimento (recomendado)
cenário do aplicativo
- Localização do gargalo de desempenho do banco de dados
Quando um aplicativo on-line demora a responder, os DBAs ou desenvolvedores podem usar imediatamente essa ferramenta para consultar o status atual do desempenho do banco de dados. Ao perguntar "Analyse the most resource-intensive SQL queries" ou "Show the most recent slow queries", é possível identificar rapidamente as instruções SQL específicas que estão causando o problema de desempenho, para que você possa otimizá-las sem se preocupar com a possibilidade de qualquer erro afetar o ambiente de produção. - Patrulhas diárias de saúde do banco de dados
Os DBAs podem usar essa ferramenta para realizar verificações de rotina diariamente. Ao consultar "Quantas conexões ativas existem?", "Verificar o tamanho de todos os bancos de dados" e "Quais tabelas precisam de VACUUM? Ao consultar "How active connections there", "Check the size of all databases" e "Which tables need to perform VACUUM?", você pode ter uma compreensão abrangente do status operacional do banco de dados, do uso da capacidade e das necessidades de manutenção, para obter operação e manutenção proativas e evitar problemas antes que eles ocorram. - Integração de agentes de IA e operações automatizadas
Essa ferramenta pode ser integrada ao agente de IA ou ao processo automatizado de operação e manutenção. Por exemplo, defina uma tarefa automatizada para permitir que o agente de IA consulte regularmente todos os dias para "verificar se há índices não utilizados" e, se encontrar índices inúteis, ele gerará automaticamente relatórios ou alertas para ajudar os DBAs a otimizar continuamente a estrutura do banco de dados e reduzir os custos de manutenção. - Arquitetura de dados e planejamento de recursos
Ao projetar a arquitetura do sistema ou o planejamento de capacidade, as equipes de desenvolvimento e manutenção de operações podem usar essa ferramenta para entender a estrutura do banco de dados existente e o uso de recursos. Consultas como "List size of all tables and indexes" (Listar o tamanho de todas as tabelas e índices) e "View user privilege list" (Exibir lista de privilégios do usuário) podem fornecer dados precisos para apoiar o desenvolvimento de novos recursos e futuras compras de recursos de servidor.
QA
- Essa ferramenta modificará meu banco de dados?
Um dos princípios de design mais importantes do MCP-PostgreSQL-Ops é a segurança. Todas as operações são somente leitura. Ele consulta apenas o catálogo do sistema e as exibições de estatísticas de desempenho do banco de dados e não executa nenhuma operação.UPDATE
eDELETE
talvezINSERT
e outras operações de gravação, e pode ser usado em ambientes de produção com confiança. - O que preciso fazer para preparar meu banco de dados antes de usar essa ferramenta?
Você precisa se certificar de que a versão do banco de dados seja PostgreSQL 12 ou superior. A preparação mais importante é habilitar a funçãopg_stat_statements
pois ela é a base do recurso de análise de desempenho. Para ativá-la, é necessário modificar o arquivopostgresql.conf
e reinicie o serviço de banco de dados, conforme descrito em detalhes na seção Ajuda. - O que é MCP e como essa ferramenta é diferente?
O MCP (Model Context Protocol) é um protocolo que permite que os modelos de IA interajam de forma segura com ferramentas externas, como bancos de dados. Ele define um conjunto de regras que permite que a IA saiba quais funções a ferramenta tem e como invocá-las. Ao contrário de outras ferramentas que podem permitir que a IA execute consultas SQL diretamente, essa ferramenta encapsula todas as operações em funções seguras e predefinidas somente para leitura, que só podem ser invocadas pela IA e não executam código arbitrário, evitando, assim, riscos de segurança como a injeção de SQL. - Posso usar essa ferramenta em vários servidores de banco de dados?
É possível. Você só precisa modificar o.env
As informações de conexão do banco de dados no arquivo de configuração apontam para um servidor de banco de dados diferente e, em seguida, basta reiniciar o serviço. Se desejar monitorar vários servidores ao mesmo tempo, você poderá iniciar uma instância separada do serviço MCP-PostgreSQL-Ops para cada servidor.