MCP PostgreSQL Demo
Postgres MCP 服务器
Tibiritabara
README
MCP PostgreSQL 演示
一个 FastMCP 服务器,使 LLM 能够连接并与 PostgreSQL 数据库交互。 本项目演示了如何使用模型上下文协议 (MCP) 允许语言模型查询和探索数据库模式和表。
特性
- 模式探索: 检索有关数据库模式的元数据
- 表检查: 获取有关表结构的详细信息
- 数据库查询: 对数据库执行 SQL 查询
- YAML 格式: 结果以 YAML 格式返回,方便 LLM 使用
资源
服务器公开以下 MCP 资源:
database://{schema}
- 获取有关模式中所有表的信息database://{schema}/tables/{table}
- 获取有关特定表的详细信息
工具
query_database
- 对数据库执行 SQL 查询(仅限 SELECT 查询)
提示
服务器包含以下预定义的提示:
prompt_schema_description
- 请求数据库模式的描述prompt_table_description
- 请求特定表的描述prompt_query_database
- 请求来自特定表的数据
前提条件
- Python 3.12 或更高版本
- PostgreSQL 数据库
- UV 包管理器(推荐)
安装
-
克隆存储库:
git clone <repository-url> cd mcp-demo
-
创建一个虚拟环境:
python -m venv .venv source .venv/bin/activate # 在 Windows 上:.venv\Scripts\activate
-
安装 UV(如果尚未安装):
pip install uv
-
使用 UV 安装依赖项:
uv sync
-
配置环境变量:
- 将
.env.example
复制到.env
- 根据您的 PostgreSQL 配置更新值
- 将
配置
应用程序使用环境变量进行配置:
变量 | 描述 | 默认值 |
---|---|---|
APP_NAME | 应用程序名称 | mcp-demo |
DB_HOST | PostgreSQL 主机 | localhost |
DB_PORT | PostgreSQL 端口 | 5432 |
DB_USER | PostgreSQL 用户名 | postgres |
DB_PASSWORD | PostgreSQL 密码 | postgres |
DB_NAME | PostgreSQL 数据库名称 | postgres |
用法
-
首先,通过删除文件底部这些行的注释来取消注释
src/main.py
中的 run 函数:# if __name__ == "__main__": # print("Starting FastMCP server...") # mcp.run()
-
启动 FastMCP 服务器:
python -m src.main
-
服务器将可供 LLM 连接并查询您的 PostgreSQL 数据库。 运行服务器后,可以将 MCP 加载到客户端应用程序中以进行交互。
客户端配置
要在客户端应用程序中使用此 MCP,请将以下配置添加到客户端的 MCP 配置文件(例如,.cursor/mcp.json
):
{
"mcpServers": {
"postgres-mcp-server": {
"command": "/path/to/your/venv/bin/mcp",
"args": ["run", "/path/to/your/postgres-mcp/src/main.py"],
"env": {
"APP_NAME": "mcp-demo",
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_USER": "postgres",
"DB_PASSWORD": "postgres",
"DB_NAME": "postgres"
}
}
}
}
请务必将路径替换为虚拟环境和项目目录的实际路径,并更新环境变量以匹配您的 PostgreSQL 配置。
开发
使用 UV 安装开发依赖项:
uv pip install -e ".[dev]"
包含的开发工具:
- JupyterLab 用于笔记本
- Pyright 用于类型检查
- Ruff 用于代码检查
Docker
要使用 Docker 运行应用程序:
-
构建 Docker 镜像:
docker build -t mcp-demo .
-
运行容器:
docker run --env-file .env.docker -p 8000:8000 mcp-demo
使用示例
获取模式信息
from mcp.client import get_client
client = get_client("http://localhost:8000")
schema_info = client.get_resource("database://public")
print(schema_info)
获取表详细信息
table_info = client.get_resource("database://public/tables/users")
print(table_info)
执行查询
result = client.invoke_tool("query_database", {"query": "SELECT * FROM users LIMIT 10"})
print(result)
许可证
[在此处添加您的许可证信息]
贡献者
- Ricardo Santos ricardo.santos.diaz@gmail.com
推荐服务器
Crypto Price & Market Analysis MCP Server
一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。
MCP PubMed Search
用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。
mixpanel
连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

Nefino MCP Server
为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。
Vectorize
将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。
Mathematica Documentation MCP server
一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。
kb-mcp-server
一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。
Research MCP Server
这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

Cryo MCP Server
一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。