PG_MCP_SERVER
Custom Implementation for PostgreSQL + PostGIS Support
引言
一个通用的PostgreSQL MCP服务器。MCP部分使用 去mcp,支持Stdio和SSE传输。
PostGIS和PgVector的描述来自另一个开源项目:https://github.com/stuzero/pg-mcp-server 🙏🙏🙏 这种提供上下文的方法令人耳目一新。
⚠️ 数据库需要定义角色以防止SQL注入。授予SELECT允许public防止敏感数据暴露的模式。 ⚠️ 为新角色授予所有权限temp模式,以确保数据隔离。
特性
在本地部署LLM时,需要高效地管理上下文。在每次调用时读取数据库模式会消耗时间和重要的令牌上下文。本项目采用预处理方法。它本机支持从数据库中获取表结构,并向LLM提供描述性信息:
- 利用工具描述和输入模式隐式或显式地传达模式信息。
- 在初始化过程中利用MCP资源读取表名、列、约束、外键、索引、几何图形类型和EPSG代码,为大型模型创建基本理解。
安装
在……里面 main.go:
// Here you can set the connection string for database interaction
schemaLoadConnID, err := dbService.RegisterConnection(tempCtx, "postgres://mcp_user:mcp123456@192.168.2.19:5432/postgres")格式为 postgres://user:pass@host:port/db\ 或者,您可以通过.env进行配置,取消注释并设置 SCHEMA_LOAD_DB_URL 变量。 在这里,RegisterConnection为服务器提供了一个初始连接字符串来缓存数据库表信息。\ 🏁 建议创建专用服务器角色。SQL如下:
-- Create a new role and set a password
CREATE ROLE mcp_user WITH LOGIN PASSWORD 'mcp123456';
-- Set basic permissions for mcp_user
GRANT CONNECT ON DATABASE postgres TO mcp_user;
GRANT USAGE ON SCHEMA public TO mcp_user;
-- Grant SELECT permission on all existing tables in the public schema
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_user;
-- Automatically grant SELECT on future tables in public schema to mcp_user
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO mcp_user;
-- Create a temp schema
CREATE SCHEMA temp;
-- Grant all privileges on the temp schema to mcp_user
GRANT USAGE, CREATE ON SCHEMA temp TO mcp_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA temp TO mcp_user;
-- Grant all privileges on future tables in temp schema to mcp_user
ALTER DEFAULT PRIVILEGES IN SCHEMA temp
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO mcp_user;
Use code with caution.跑步
- 🐋 使用Docker运行
git clone https://github.com/cbc3929/pg_mcp_server.git
cd pg_mcp_server
docker build -t pg-mcp-server:latest .
docker run -d -p 8181:8181 --name my-mcp-server pg-mcp-server:latest- 🀄 直接运行
- 克隆项目
git clone https://github.com/cbc3929/pg_mcp_server.git
cd pg_mcp_server- 安装依赖项
go mod tidy或
go mod download- 直接运行\
确保设置了必要的环境变量或存在.env文件
go run ./cmd/server/main.go- 构建(可选)
go build -o pg_mcp_server ./cmd/server/main.go
./pg_mcp_server扩展支持
PostGIS✅\ Pg矢量✅\ Pg路由⭕
全部/未完成
- 临时模式中的表管理:应实现表清理/回收机制。
- 单元测试。
