使用说明
PostgreSQL MCP服务器
通过 BINATI A分析
MCP(模型上下文协议)服务器,通过资源、工具和数据分析提示提供对PostgreSQL数据库的访问。
屏幕截图
特性
资源
- postgres://info -服务器信息和快速参考
工具
- list_tables -列出数据库中的所有表
- get_table_schema -获取特定表的详细架构
- execute_query -执行只读SQL查询(SELECT、WITH、SHOW)
- get_table_stats -获取表的统计信息(行数、大小、索引)
提示
- 分析表 -为特定表生成全面的分析提示
- 查找关系 -分析数据库以查找表之间的关系
- 数据质量检查 -进行全面的数据质量检查
安装
此项目使用 紫外线 用于包管理。
# Install dependencies
uv sync
配置
创建一个 .env 使用您的数据库凭据创建文件。您可以:
选项1:单个组件(推荐)
DATABASE_HOST=localhost
DATABASE_USER=postgres
DATABASE_PASSWORD=your_password
DATABASE_PORT=5432
DATABASE_NAME=your_database
选项2:完整连接URL
DATABASE_URL=postgresql://postgres:password@localhost:5432/mydb
注意:如果使用SQLAlchemy格式 postgresql+psycopg://,它将自动转换为psycopg格式 postgresql://.
如果未提供DATABASE_URL,服务器将自动从各个组件构建连接URL。
用法
发展模式
使用MCP检查器测试服务器:
uv run mcp dev main.py
这将在您的浏览器中启动MCP检查器,您可以在其中:
- 浏览可用资源
- 具有不同参数的测试工具
- 尝试提示
安装到Claude桌面
要将此服务器与Claude Desktop一起使用,请执行以下操作:
uv run mcp install main.py --name "PostgreSQL Server"
直接执行
直接运行服务器:
uv run python main.py
示例用法
使用资源
- 获取服务器信息:
- 资源URI:
postgres://info - 返回:服务器信息和可用操作
- 资源URI:
使用工具
-
列出所有表格:
Tool: list_tables Returns: {"tables": [...], "count": 4} -
获取表架构:
{ "table_name": "users" } Returns: {"table_name": "users", "columns": [...], "column_count": 5} -
执行查询:
{ "query": "SELECT * FROM users LIMIT 10" }返回:包含行、行计数和列的JSON
-
获取表格统计信息:
{ "table_name": "users" }返回:包含row_count、total_size、table_size和indexes_size的JSON
使用提示
-
分析表:
- 为特定表生成全面的分析工作流
- 参数:
table_name
-
查找关系:
- 生成提示以分析和记录表关系
-
数据质量检查:
- 生成全面数据质量分析提示
安全
- 只读查询:The
execute_query该工具仅允许SELECT、WITH和SHOW语句 - SQL注入保护:所有查询在适用的情况下都使用参数化语句
- 连接管理:数据库连接通过生命周期上下文进行管理
发展
代码质量
该项目遵循严格的开发准则:
# Format code
uv run --frozen ruff format .
# Check linting
uv run --frozen ruff check .
# Fix linting issues
uv run --frozen ruff check . --fix
# Type checking
uv run --frozen pyright
测试
# Run tests
uv run --frozen pytest
建筑
服务器使用:
- FastMCP:高级MCP服务器框架
- psycopg:Python异步PostgreSQL适配器
- 寿命管理:数据库连接在服务器启动时建立,在关闭时关闭
- 类型安全性:整个代码库中的完整类型提示
许可证
麻省理工学院