项目简介
PostgreSQL Analyzer MCP 是一个基于 Model Context Protocol (MCP) 构建的后端应用,专注于 PostgreSQL 数据库的性能分析和优化。它作为一个远程 MCP 服务器运行,通过标准化接口向 AI 客户端(如 LLM)提供访问数据库上下文信息和执行分析功能的能力。
主要功能点
- 数据库结构分析: 分析表、列、索引和外键,提供结构上的优化建议。
- 查询性能分析: 分析 SQL 查询的执行计划,识别性能瓶颈。
- 索引推荐: 根据查询模式和数据库结构,智能推荐合适的索引。
- 查询优化建议: 提供 SQL 查询的重写或改进建议,提升执行效率。
- 慢查询识别: 查找并分析数据库中的慢查询。
- 只读查询执行: 提供安全执行只读 SQL 查询(SELECT, EXPLAIN, SHOW)并返回结果的功能。
本工具默认以只读模式运行,通过 'SET TRANSACTION READ ONLY' 确保数据库安全,不会进行任何修改操作。
安装步骤
本服务器需要 Python 3.12+ 或 Docker 环境。
-
克隆仓库:
git clone https://github.com/rameshv29/postgreSQL-analyzer-mcp.git cd postgreSQL-analyzer-mcp -
环境设置 (选择其一):
- 本地 Python:
python -m venv venv source venv/bin/activate pip install -r requirements.txt - Docker:
docker build -t postgres-analyzer-mcp .
- 本地 Python:
-
数据库凭证配置: 推荐使用 AWS Secrets Manager 存储数据库凭证。在 Secrets Manager 中创建一个 Secret,包含 'host', 'port', 'dbname', 'username', 'password' 等键。
MCP客户端配置
这是一个远程 MCP 服务器,客户端通过 HTTP 连接。在您的 MCP 客户端中配置连接信息,例如:
- 服务器地址 (Server URL): 'http://[您的服务器地址或IP]:8000/mcp'
- 传输协议 (Transport): 'Streamable HTTP'
具体的配置界面和方式取决于您使用的 MCP 客户端。
服务器启动
- 本地 Python:
python src/main.py --host 0.0.0.0 --port 8000 - Docker:
# 启动容器,服务器会自动运行并监听 8000 端口 docker run -p 8000:8000 postgres-analyzer-mcp # 如果使用 AWS Secrets Manager,需要提供 AWS 凭证环境变量 # docker run -p 8000:8000 -e AWS_ACCESS_KEY_ID=... -e AWS_SECRET_ACCESS_KEY=... -e AWS_DEFAULT_REGION=... postgres-analyzer-mcp
基本使用方法
连接 MCP 客户端到运行中的服务器后,您可以通过调用服务器提供的工具来执行任务。大多数工具都需要提供 AWS Secrets Manager 的 Secret 名称和所在的 AWS Region 来连接数据库。
例如,调用 'analyze_database_structure' 工具:
analyze_database_structure(secret_name="[您的Secret名称]", region_name="[您的AWS Region]")
调用 'analyze_query' 工具:
analyze_query(query="SELECT * FROM your_table WHERE id = 1;", secret_name="[您的Secret名称]", region_name="[您的AWS Region]")
调用 'execute_read_only_query' 工具:
execute_read_only_query(query="SELECT current_setting('server_version');", secret_name="[您的Secret名称]", region_name="[您的AWS Region]")
具体的工具列表和参数请参考服务器声明的能力或使用客户端的帮助功能。
数据库配置建议
为了充分利用慢查询分析等功能,建议在 PostgreSQL 数据库中安装并启用 'pg_stat_statements' 扩展,并在 'postgresql.conf' 中进行相应配置。
信息
分类
数据库与文件