简单的 PostgreSQL MCP 服务器
这是一个用于构建MCP(模型上下文协议)服务器的模板项目,特别设计为简单且易于适应。它包括运行SQL查询的工具、访问数据库模式信息的资源以及生成一致LLM指令的提示。
服务介绍
简单的 PostgreSQL MCP 服务器
这是一个模板项目,适用于那些希望构建自己的 MCP 服务器的人。我设计它的目的是使其易于理解和适应——代码非常直接,并附有 MCP 文档,以便您可以快速上手。
什么是 MCP?
TL;DR - 它是一种为 AI 编写插件的方法
模型上下文协议 (MCP) 是 LLM 与外部工具和数据交互的标准方式。简而言之:
- 工具 允许 LLM 执行命令(如运行数据库查询)
- 资源 是可以附加到对话中的数据(如将文件附加到提示中)
- 提示 是生成一致 LLM 指令的模板
功能
这个 PostgreSQL MCP 服务器实现了以下功能:
-
工具
execute_query- 对您的数据库执行 SQL 查询test_connection- 验证数据库连接是否正常工作
-
资源
db://tables- 架构中所有表的列表db://tables/{table_name}- 特定表的架构信息db://schema- 数据库中所有表的完整架构信息
-
提示
- 查询生成模板
- 分析查询构建器
- 基于此仓库中的模板
前提条件
- Python 3.8+
- uv - 现代 Python 包管理器和安装程序
- npx(包含在 Node.js 中)
- 可以连接的 PostgreSQL 数据库
快速设置
-
创建虚拟环境并安装依赖项:
# Create a virtual environment with uv uv venv # Activate the virtual environment source .venv/bin/activate # On Windows: .venv\Scripts\activate # Install dependencies uv pip install -r requirements.txt -
使用 MCP Inspector 运行服务器:
# Replace with YOUR actual database credentials npx @modelcontextprotocol/inspector uv --directory . run postgres -e DSN=postgresql://username:password@hostname:port/database -e SCHEMA=public注意:如果您是第一次运行 npx,系统会提示您批准安装。输入 'y' 继续。
运行此命令后,您将在浏览器中看到 MCP Inspector 界面启动。您应该会看到类似以下的消息:
MCP Inspector is up and running at http://localhost:5173如果浏览器没有自动打开,请将 URL 复制并粘贴到浏览器中。您应该会看到类似以下的内容:

-
使用 Inspector:
- 单击界面中的“连接”按钮(除非左下角控制台中有错误消息)
- 探索“工具”、“资源”和“提示”选项卡以查看可用功能
- 尝试单击列出的命令或键入资源名称以检索资源和提示
- 该界面允许您测试查询并查看 MCP 服务器如何响应
-
查看官方文档
官方服务器开发者指南: https://modelcontextprotocol.io/quickstart/server
关于 Inspector 的更多信息: https://modelcontextprotocol.io/docs/tools/inspector
将您的 AI 工具连接到服务器
您可以通过创建 MCP 配置文件来配置您的 AI 助手的 MCP 服务器:
{
"mcpServers": {
"postgres": {
"command": "/path/to/uv",
"args": [
"--directory",
"/path/to/simple-psql-mcp",
"run",
"postgres"
],
"env": {
"DSN": "postgresql://username:password@localhost:5432/my-db",
"SCHEMA": "public"
}
}
}
}
或者,您可以使用包含的脚本来生成此配置文件:
# Make the script executable
chmod +x generate_mcp_config.sh
# Run the configuration generator
./generate_mcp_config.sh
当提示时,输入您的 PostgreSQL DSN 和架构名称。
如何使用它
现在,您可以用自然语言询问 LLM 关于您的数据的问题:
- “我的数据库中有哪些表?”
- “按创建日期显示前 5 名用户”
- “按州统计地址数量”
对于测试,Claude Desktop 本机支持 MCP,并且开箱即用支持所有功能(工具、资源和提示)。
示例数据库(可选)
如果您还没有准备好数据库或遇到连接问题,可以使用包含的示例数据库:
# Make the script executable
chmod +x example-db/create-db.sh
# Run the database setup script
./example-db/create-db.sh
此脚本创建一个带有预填充样本用户和地址表的 PostgreSQL 数据库的 Docker 容器。运行后,您可以使用以下方式连接:
npx @modelcontextprotocol/inspector uv --directory . run postgres -e DSN=postgresql://postgres:postgres@localhost:5432/user_database -e SCHEMA=public
后续步骤
要扩展此项目并添加您自己的 MCP 服务器:
- 在
/src下创建一个新目录(例如/src/my-new-mcp) - 按照 PostgreSQL 示例实现您的 MCP 服务器
- 将您的新 MCP 添加到
pyproject.toml中:
[project.scripts]
postgres = "src.postgres:main"
my-new-mcp = "src.my-new-mcp:main"
然后,您可以运行您的新 MCP:
npx @modelcontextprotocol/inspector uv --directory . run my-new-mcp
文档
- 包含 MCP 文档,方便 LLM 开发- 基于以下方法:https://modelcontextprotocol.io/tutorials/building-mcp-with-llms
安全性
这是一个实验性项目,旨在帮助开发者创建自己的MCP服务器。我做了最小限度的处理以确保你在尝试时它不会立即崩溃,但请小心——使用这个工具非常容易执行SQL注入攻击。服务器会检查查询是否以SELECT开头,但除此之外没有任何保证。简而言之——除非你是创始人且没有付费客户,否则不要在生产环境中运行。
许可证
MIT