MCP(Multi-Connection Proxy)服务器是一款代理服务,支持多种数据库协议,还提供了丰富工具与资源,可用于管理数据库连接。本文档将详细介绍如何使用 MCP 服务器与 PostgreSQL 数据库进行交互。
MCP 服务器可助力您高效地与 PostgreSQL 数据库交互。以下将为您介绍安装、配置、启动服务的具体步骤。
使用以下命令快速安装 mcp-server-postgres
:
npm install mcp-server-postgres --save
config.json
文件。{
"database": {
"connections": {
"main": {
"type": "postgres",
"host": "localhost",
"port": 5432,
"username": "db_user",
"password": "db_password"
}
},
"defaultConnection": "main"
},
"authentication": {
"secretKey": "your_secret_key_here",
"enableSSL": true
}
}
- 将 `config.json` 添加到 `.env` 文件中:
echo "MCP_CONFIG=path/to/config.json" >> .gitignore
使用以下命令启动服务:
node index.js --config config.json
DBConnectionFactory
类初始化 PostgreSQL 连接池。const connectionFactory = new DBConnectionFactory({
host: 'localhost',
port: 5432,
username: 'db_user',
password: 'db_password'
});
const connection = await connectionFactory.getConnection('main');
const query = new QueryBuilder('users')
.select(['id', 'username'])
.where('active = true');
const result = await connection.query(query);
const params = {
"username": "john_doe",
"status": "active"
};
const query = new QueryBuilder('users')
.select(['id', 'email'])
.where('username = :username AND status = :status', params);
const result = await connection.query(query);
await connection.beginTransaction();
try {
// 执行多个 SQL 操作
await connection.execute("UPDATE orders SET status = 'processing'");
await connection.execute("INSERT INTO order_items SELECT * FROM temp_order_items");
} catch (error) {
await connection.rollback();
throw error;
}
QueryTool
const queryTool = new QueryTool(connection);
const result = await queryTool.query("SELECT * FROM users WHERE id = $1", [123]);
const results = await queryTool.execute([
"DELETE FROM sessions WHERE expires_at < NOW()",
"UPDATE users SET last_login = NOW() WHERE username = 'admin'"
]);
TransactionTool
const transactionTool = new TransactionTool(connection);
await transactionTool.run(operations => {
return Promise.all([
connection.execute("INSERT INTO orders (user_id, order_date) VALUES ($1, NOW())", [userId]),
connection.execute("UPDATE users SET last_order = NOW() WHERE id = $1", [userId])
]);
});
const queryTemplate = new QueryTemplate({
"name": "getUsers",
"text": "SELECT * FROM users WHERE active = true",
"parameters": []
});
await queryTemplate.execute(connection);
string_agg
或 array_agg
等聚合函数,以防注入风险。SSL
模式为 require
或更严格。winston
或其他日志库,输出到文件或集中式日志服务(如 ELK)。npm update mcp-server-postgres --save
config.json
文件。通过以上指南,您可以顺利部署并使用 MCP 服务器与 PostgreSQL 数据库进行高效交互。