Pg_mcp_server

Pg_mcp_server

🚀 PG_MCP服务器

PG_MCP服务器是一款通用的PostgreSQL MCP服务器,基于PostgreSQL + PostGIS实现,支持Stdio和SSE传输,在本地部署大语言模型时,能高效进行上下文管理。

🚀 快速开始

安装

main.go中:

// 这里可以设置数据库交互的连接字符串
schemaLoadConnID, err := dbService.RegisterConnection(tempCtx, "postgres://mcp_user:mcp123456@192.168.2.19:5432/postgres")

格式为postgres://user:pass@host:port/db ,或者可以通过.env文件配置,只需uncomment并设置SCHEMA_LOAD_DB_URL变量即可。这里,RegisterConnection给服务器一个初始连接字符串以缓存数据库表信息。
🏁 建议为服务器创建专用角色。以下是SQL语句:

-- 创建新角色并设置密码
CREATE ROLE mcp_user WITH LOGIN PASSWORD 'mcp123456';

-- 设置mcp_user的基本权限
GRANT CONNECT ON DATABASE postgres TO mcp_user;
GRANT USAGE ON SCHEMA public TO mcp_user;

-- 授予public模式下所有现有表的SELECT权限
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_user;

-- 自动授予public模式下新表的SELECT权限给mcp_user
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO mcp_user;

-- 创建temp模式
CREATE SCHEMA temp;

-- 授予temp模式上的所有权限给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;

-- 自动授予temp模式下新表的SELECT、INSERT、UPDATE和DELETE权限给mcp_user
ALTER DEFAULT PRIVILEGES IN SCHEMA temp
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO mcp_user;

运行

使用Docker运行

  1. 确保您已安装Docker
  2. 在项目目录下执行以下命令:
docker-compose up --build

这将构建并启动服务。

直接运行

要直接运行,请确保您已经安装了所有依赖项。在终端中导航到项目根目录并运行:

go run main.go

✨ 主要特性

在本地部署大语言模型时,上下文管理需要高效。每次调用时读取数据库架构会消耗时间和宝贵的上下文令牌。该项目采用了预处理方法。它原生支持从数据库获取表结构,并为LLM提供描述性信息:

  • 利用工具描述和输入模式隐式或显式地传达架构信息。
  • 在初始化时利用MCP资源读取表名、列、约束、外键、索引、几何类型和EPSG代码,为大型模型建立基础理解。

🔧 技术细节

扩展支持

  • PostGIS: 已实现
  • PgVector: 已实现
  • PgRouting: 进行中

待办事项

  • 温表管理机制
    • 实现表结构缓存
    • 增加表结构变化检测
    • 制定失效策略
  • 单元测试
    • 表结构读取与解析的单元测试
    • SQL注入和XSS防护测试

📄 许可证

PostGIS和PgVector的相关描述引用自另一个开源项目:https://github.com/stuzero/pg-mcp-server 🙏🙏paginator
这种提供上下文的思路令人耳目一新。

📚 详细文档

中文文档

📌 重要提示

⚠️ 重要提示

数据库需要定义角色以防止SQL注入。授予public模式上的SELECT权限,以避免敏感数据泄露。授予新角色对temp模式下所有表的SELECTINSERTUPDATEDELETE权限,以确保数据隔离。

  • 0 关注
  • 0 收藏,8 浏览
  • system 提出于 2025-09-23 15:54

相似服务问题