PostgreSQL MCP 服务器(增强版)
提供对 PostgreSQL 数据库的读写访问权限的模型上下文协议 (MLM) 服务器。该服务器使 LLM 能够检查数据库架构、执行查询、修改数据以及创建/修改数据库架构对象。
**注意:**这是 Anthropic 原版PostgreSQL MCP 服务器的增强版。原版服务器提供只读访问权限,而增强版则增加了写入功能和架构管理。
成分
工具
数据查询
询问
对连接的数据库执行只读 SQL 查询
输入:
sql(字符串):要执行的 SQL 查询所有查询都在只读事务中执行
数据修改
执行
执行修改数据的 SQL 语句(INSERT、UPDATE、DELETE)
输入:
sql(字符串):要执行的 SQL 语句在具有正确 COMMIT/ROLLBACK 处理的事务内执行
插入
在表中插入一条新记录
输入:
table(字符串):表名称data(对象):键值对,其中键是列名,值是要插入的数据
更新
更新表中的记录
输入:
table(字符串):表名称data(对象):要更新的字段的键值对where(字符串):用于识别要更新的记录的 WHERE 条件
删除
从表中删除记录
输入:
table(字符串):表名称where(字符串):用于标识要删除的记录的 WHERE 条件
模式管理
创建表
创建具有指定列和约束的新表
输入:
tableName(字符串):表名称columns(数组):具有名称、类型和可选约束的列定义数组constraints(数组):表级约束的可选数组
创建函数
创建 PostgreSQL 函数/过程
输入:
name(字符串):函数名称parameters(字符串):函数参数returnType(字符串):返回类型language(字符串):语言(plpgsql、sql 等)body(字符串):函数主体options(字符串):可选的附加功能选项
创建触发器
在表上创建触发器
输入:
name(字符串):触发器名称tableName(字符串):应用触发器的表functionName(字符串):要调用的函数when(字符串):BEFORE、AFTER 或 INSTEAD OFevents(数组):事件数组(插入、更新、删除)forEach(字符串):ROW 或 STATEMENTcondition(字符串):可选的 WHEN 条件
创建索引
在表上创建索引
输入:
tableName(字符串):表名称indexName(字符串):索引名称columns(数组):要索引的列unique(布尔值):索引是否唯一type(字符串):可选索引类型(BTREE、HASH、GIN、GIST 等)where(字符串):可选条件
修改表
更改表结构
输入:
tableName(字符串):表名称operation(字符串):操作(添加列、删除列等)details(字符串):操作详细信息
资源
服务器为数据库中的每个表提供架构信息:
表模式(
postgres://<host>/<table>/schema)每个表的 JSON 架构信息
包括列名和数据类型
从数据库元数据中自动发现
Related MCP server: PostgreSQL MCP Server
与 Claude Desktop 一起使用
要将此服务器与 Claude Desktop 应用程序一起使用,请将以下配置添加到claude_desktop_config.json的“mcpServers”部分:
Docker
在 macos 上运行 docker 时,如果服务器在主机网络上运行(例如 localhost),请使用 host.docker.internal
可以将用户名/密码添加到 postgresql url,格式为
postgresql://user:password@host:port/db-name如果需要绕过 SSL 证书验证,请添加
?sslmode=no-verify
{
"mcpServers": {
"postgres": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"mcp/postgres",
"postgresql://host.docker.internal:5432/mydb"]
}
}
}NPX
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://localhost/mydb"
]
}
}
}将/mydb替换为您的数据库名称。
示例用法
查询数据
/query SELECT * FROM users LIMIT 5插入数据
/insert table="users", data={"name": "John Doe", "email": "john@example.com"}更新数据
/update table="users", data={"status": "inactive"}, where="id='123'"创建表
/createTable tableName="tasks", columns=[
{"name": "id", "type": "SERIAL", "constraints": "PRIMARY KEY"},
{"name": "title", "type": "VARCHAR(100)", "constraints": "NOT NULL"},
{"name": "created_at", "type": "TIMESTAMP", "constraints": "DEFAULT CURRENT_TIMESTAMP"}
]创建函数和触发器
/createFunction name="update_timestamp", parameters="", returnType="TRIGGER", language="plpgsql", body="BEGIN NEW.updated_at = NOW(); RETURN NEW; END;"
/createTrigger name="set_timestamp", tableName="tasks", functionName="update_timestamp", when="BEFORE", events=["UPDATE"], forEach="ROW"建筑
Docker:
docker build -t mcp/postgres -f Dockerfile . 安全注意事项
所有数据修改操作都使用具有适当 COMMIT/ROLLBACK 处理的事务
每个操作都会返回执行的 SQL,以实现透明度
服务器使用参数化查询进行插入/更新操作,以防止 SQL 注入
执照
此 MCP 服务器采用 MIT 许可证。这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。
This server cannot be installed
Maintenance
Appeared in Searches
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/GarethCott/enhanced-postgres-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
