article
README
🚀 PostgreSQL MCP 服务器
PostgreSQL MCP 服务器是一个用于与 PostgreSQL 数据库交互的 Model Context Protocol (MCP) 服务器,支持读取查询、写入查询、创建表和列出表等功能,为数据库操作提供了便捷的解决方案。
🚀 快速开始
安装步骤
先决条件
- PostgreSQL 数据库实例
- Go 语言开发环境
- Make 工具
克隆仓库
git clone https://github.com/yourusername/pgmcp.git
cd pgmcp
安装依赖
go mod tidy
构建服务器
make build
配置说明
将以下环境变量添加到项目的 .env 文件中:
DB_NAME: PostgreSQL 数据库名称DB_USER: 连接数据库的用户名DB_PASSWORD: 用户密码DB_HOST: 数据库主机地址(默认为localhost)DB_PORT: 数据库端口号(默认为5432)
示例 .env 文件:
DB_NAME=postgres
DB_USER=pguser
DB_PASSWORD=pgpassword
DB_HOST=localhost
DB_PORT=5432
运行服务器
go run main.go
MCP 配置
在 config.json 中配置 MCP 服务参数:
{
"name": "PostgreSQL MCP Server",
"version": "1.0",
"description": "A PostgreSQL MCP server implementation.",
"tools": {
"read_query": {
"description": "Execute a SELECT query and return the results."
},
"write_query": {
"description": "Execute an INSERT, UPDATE, or DELETE statement."
},
"create_table": {
"description": "Create a new table in the database."
},
"list_tables": {
"description": "List all tables in the database."
}
}
}
✨ 主要特性
- 读取查询:执行 SELECT 类型的 SQL 查询。
- 写入查询:执行 INSERT、UPDATE 和 DELETE 类型的 SQL 操作。
- 创建表:在数据库中创建新表。
- 列出表:获取数据库中的所有表信息。
💻 使用示例
基础用法
读取查询
{
"tool": "read_query",
"params": {
"query": "SELECT * FROM users LIMIT 10;"
}
}
写入查询
{
"tool": "write_query",
"params": {
"query": "INSERT INTO users (name, email) VALUES ($1, $2);",
"args": ["John Doe", "john@example.com"]
}
}
创建表
{
"tool": "create_table",
"params": {
"table_name": "users",
"schema": "CREATE TABLE users (\n id SERIAL PRIMARY KEY,\n name VARCHAR(255) NOT NULL,\n email VARCHAR(255) UNIQUE NOT NULL\n);"
}
}
列出表
{
"tool": "list_tables",
"params": {}
}
🔧 技术细节
安全注意事项
- 服务器对查询类型进行验证,确保每个工具仅执行其允许的操作。
- 对输入的 schema 名称进行 sanitization,防止 SQL 注入攻击。
- 建议使用权限受限的专用数据库用户。
- 在生产环境中启用 SSL,设置
DB_SSLMODE为require或更高。
依赖项
- github.com/joho/godotenv - 加载
.env文件 - github.com/lib/pq - PostgreSQL 驱动程序
- github.com/mark3labs/mcp-go - MCP 协议的 Go SDK
📄 许可证
[在此处添加许可信息]
🤝 贡献指南
[在此处添加贡献指南]
Scan to join WeChat group