MCP应用:使用MCP访问PostgreSQL数据库

部署运行你感兴趣的模型镜像

MCP应用:使用MCP访问PostgreSQL数据库

简介

上一篇文章《MCP: 什么是MCP》已经介绍了MCP的基本概念,下面来实操一个MCP服务的使用。

PostgreMCP 这个服务可以使大语言模型能够检查数据库模式并执行只读查询。下面开始实验一下。

环境准备

安装过程会自动从网络拉包,例如:

npx -y @modelcontextprotocol/server-postgres postgresql://username:password@IP:5432/dbname

如果使用的是docker也是同理,所以国内网络不好的话有可能一次装不成功,多试几次即可。

Windsurf

如果使用的是Windsurf中可以在如下界面中安装:

Plugin Store / PostgreSQL / Install

配置:点击PostgreSQL,或者在对话框的MCP中找到PostgreSQL,点击Configure,粘贴配置(会自动生成)

{
"mcpServers": {
"postgresql": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://username:password@IP:5432/dbname"
],
"env": {}
}
}
}

配置格式的说明来自于:

https://github.com/modelcontextprotocol/servers/tree/main/src/postgres

cursor

cursor用户可以在如下界面上安装:

cursor / Setting / MCP / Add new global MCP Server

填写上面的json配置即可

使用方法

配置好Postgre MCP,就可以使用自然语言对PostgreSQL数据库进行查询操作了。

用法举例:询问系统登录情况

Prompt

帮我看下数据库记录,今天都有哪些用户登录了系统?

AI自动调用MCP执行数据库查询

我需要查找用户登录记录。首先,我需要找到存储登录记录的表。让我查询数据库中可能包含登录信息的表。
MCP Tool: postgresql / query
Ran with these arguments:
{
"sql": "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND (table_name LIKE '%login%' OR table_name LIKE '%log%' OR table_name LIKE '%user%' OR table_name LIKE '%auth%');"
}
[
{
"table_name": "log"
},
{
"table_name": "user_role"
},
{
"table_name": "user"
}
]
我找到了几个可能包含登录信息的表:log、user_role 和 user。其中 log 表最可能包含登录记录,让我查询今天的登录记录。
首先,我需要查看 log 表的结构,以确定它包含哪些字段:
MCP Tool: postgresql / query
Ran with these arguments:
{
"sql": "SELECT column_name FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'log';"
}
Output
[
{
"column_name": "log_id"
},
{
"column_name": "log_title"
},
{
"column_name": "log_content"
},
{
"column_name": "log_type"
},
{
"column_name": "created_at"
},
{
"column_name": "log_user"
},
{
"column_name": "log_ip"
}
]
现在我了解了 log 表的结构,它包含了用户登录所需的字段,如 log_user(用户)、log_ip(IP地址)、created_at(创建时间)等。让我查询今天的登录记录。
今天是 2025-05-29,我需要查找今天的登录记录。我将使用 UNIX 时间戳来过滤今天的记录:
{
"sql": "SELECT log_id, log_title, log_content, log_type, log_user, log_ip, to_timestamp(created_at) as login_time \nFROM log \nWHERE log_title LIKE '%登录%' \nAND created_at >= extract(epoch from date_trunc('day', current_date))\nORDER BY created_at DESC;"
}
Output
[]
看起来今天(2025-05-29)还没有用户登录记录。让我尝试查看最近几天的登录记录,以便为您提供更有用的信息:
{
"sql": "SELECT log_id, log_title, log_content, log_type, log_user, log_ip, to_timestamp(created_at) as login_time \nFROM log \nWHERE log_title LIKE '%登录%' \nORDER BY created_at DESC\nLIMIT 10;"
}
Output
[
{
"log_id": "160867d60986804408259a32a3935817",
"log_title": "用户登录",
"log_content": "用户(admin)登录",
"log_type": "3",
"log_user": "admin",
"log_ip": "192.168.0.2",
"login_time": "2025-05-28T05:41:47.000Z"
},
{
"log_id": "38c1b815a6ba3979920039df787ccfbb",
"log_title": "用户登录",
"log_content": "用户(admin)登录",
"log_type": "3",
"log_user": "admin",
"log_ip": "192.168.0.2",
"login_time": "2025-05-28T05:22:57.000Z"
},
{
"log_id": "ec4b34e46106fb1b2a826e0c6f224595",
"log_title": "用户登录",
"log_content": "用户(admin)登录",
"log_type": "3",
"log_user": "admin",
"log_ip": "192.168.0.2",
"login_time": "2025-05-28T01:20:25.000Z"
}
]
用户登录记录查询结果
根据查询结果,今天(2025-05-29)暂时没有用户登录系统的记录。
最近的登录记录是在昨天(2025-05-28):
登录时间	用户名	IP地址	操作内容
2025-05-28 13:41:47	admin	192.168.0.2	用户登录
2025-05-28 13:22:57	admin	192.168.0.2	用户登录
2025-05-28 09:20:25	admin	192.168.0.2	用户登录
所有最近的登录都是由超级管理员(admin)账户从同一个IP地址(192.168.0.2)进行的。
需要我查询更早的登录记录或其他类型的系统操作记录吗?
Credits spent: 1 credit
Tool calls: 4 calls
Files changed: 0 files changed
Terminals created: 0 processes run

那么问题来了

AI是如何知道什么问题需要使用MCP协议,什么问题不使用的?

其实也好理解,用户在和AI在IDE中沟通的时候,IDE已经把环境信息作为参数传递给了大语言模型,比如当前打开的窗口、光标位置、项目路径、MCP配置信息等,大语言模型理解环境信息,并根据沟通内容判断用户的需求,例如是否谈到了数据库、表、字段等,从而选择是否调用MCP协议获取信息。

一句话来说就是:大语言模型可以根据用户需求,调用MCP等外部工具来获取信息。

结论

PostgreMCP实现了自然语言访问数据库,虽然直接让AI调用终端工具也可以实现数据库访问,但是通过MCP协议来实现,整个过程更简单,而且这个MCP是只读数据访问,不用担心不小心破坏数据内容。对于产品经理、数据分析师、产品运营等非技术类角色来说,这个工具非常实用。

最近这几年,经济形式下行,IT行业面临经济周期波动与AI产业结构调整的双重压力,很多人都迫于无奈,要么被裁,要么被降薪苦不堪言。但我想说的是一个行业下行那必然会有上行行业,目前AI大模型的趋势就很不错,大家应该也经常听说大模型,也知道这是趋势,但苦于没有入门的契机,现在他来了,我在本平台找到了一个非常适合新手学习大模型的资源。大家想学习和了解大模型的,可以**点击这里前往查看**

您可能感兴趣的与本文相关的镜像

Qwen3-VL-30B

Qwen3-VL-30B

图文对话
Qwen3-VL

Qwen3-VL是迄今为止 Qwen 系列中最强大的视觉-语言模型,这一代在各个方面都进行了全面升级:更优秀的文本理解和生成、更深入的视觉感知和推理、扩展的上下文长度、增强的空间和视频动态理解能力,以及更强的代理交互能力

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值