MCP Postgres查询服务器
一种用于以只读模式查询PostgreSQL数据库的模型上下文协议(MCP)服务器实现,旨在与Claude Desktop和其他MCP客户端配合使用。
概述
该项目实现了一个模型上下文协议(MCP)服务器,该服务器提供:
- PostgreSQL数据库的安全只读接口
- 通过MCP协议与Claude Desktop集成
- SQL查询验证,以确保只执行SELECT查询
- 查询超时保护(10秒)
先决条件
- Node.js(v14或更高版本)
- npm(附带Node.js)
- PostgreSQL数据库(通过命令行提供连接详细信息)
安装
# Clone the repository
git clone https://github.com/RathodDarshil/mcp-postgres-query-server.git
cd mcp-postgres-query-server
# Install dependencies
npm install
# Build the project
npm run build连接到克劳德桌面
您可以将Claude Desktop配置为自动启动并连接到MCP服务器:
- 访问Claude Desktop配置文件:
- 打开克劳德桌面 - 前往“设置”>“开发人员”>“编辑配置” - 这将在默认文本编辑器中打开配置文件
- 将postgres查询服务器添加到
mcpServers你的部分claude_desktop_config.json:
{
"mcpServers": {
"postgres-query": {
"command": "node",
"args": [
"/path/to/your/mcp-postgres-query-server/dist/index.js",
"postgresql://username:password@hostname:port/database"
]
}
}
}- 替换
/path/to/your/带有项目目录的实际路径。 - 用实际的数据库凭据替换PostgreSQL连接字符串。
- 保存文件并重新启动Claude Desktop。MCP服务器现在应该出现在设置中的MCP服务器选择下拉列表中。
配置示例
下面是一个带有postgres查询的配置文件的完整示例:
{
"mcpServers": {
"postgres-query": {
"command": "node",
"args": [
"/Users/darshilrathod/mcp-servers/mcp-postgres-query-server/dist/index.js",
"postgresql://user:password@localhost:5432/mydatabase"
]
}
}
}更新配置
要更新您的Claude Desktop配置:
- 打开克劳德桌面
- 前往“设置”>“开发人员”>“编辑配置”
- 对配置文件进行更改
- 保存文件
- 重新启动Claude Desktop以使更改生效
- 如果您已经更新了MCP服务器代码,请确保使用以下命令重新构建它
npm run build重新启动之前
特性
- 只读数据库访问:出于安全考虑,只允许使用SELECT查询
- 查询验证:防止可能有害的SQL操作
- 超时保护:运行时间超过10秒的查询将自动终止
- MCP协议支持:完成模型上下文协议的实施
- JSON响应格式:查询结果以结构化JSON格式返回
API
工具
查询postgres
对配置的PostgreSQL数据库执行只读SQL查询。
参数:
query(string):要执行的SQL SELECT查询
答复:
- JSON对象包含:
- rows:结果集行 - rowCount:返回的行数 - fields:列元数据
例子:
query-postgres: SELECT * FROM users LIMIT 5发展
主服务器实现在 src/index.ts.关键部件:
- PostgreSQL连接池设置
- 查询验证逻辑
- MCP服务器配置
- 工具和资源定义
要修改服务器的行为,您可以:
- 在中编辑查询验证逻辑
isReadOnlyQuery() - 向MCP服务器添加其他工具或资源
- 修改查询超时时间(当前为10秒)
安全考虑
- 服务器验证所有查询以确保它们是只读的
- 与数据库的连接使用SSL
- 查询超时可防止资源耗尽
- 不允许进行写入操作
- 数据库凭据直接通过命令行参数传递,不存储在文件中
许可证
国际协调委员会
贡献
欢迎投稿!请随时提交拉取请求。
