alitrack

pglite-mcp:PGlite × MCP,3MB Postgres 随身带

pglite-mcp:PGlite × MCP,3MB Postgres 随身带

给 AI Agent 配个数据库,听起来简单,做起来烦。
装 Docker、拉 Postgres 镜像、配 pgvector 扩展、搞用户认证——一套下来半小时没了。有时候你只是想写个 demo,或者 Agent 只是想存几条数据然后做向量搜索,结果被环境配置劝退。
SQLite 倒是快,但它没有 pgvector。没有图数据库。没有 PostGIS。
有没有办法让 Agent 得到 Postgres 的全部能力,但和 SQLite 一样轻?
pglite-mcp。一句命令搞定。

1npx pglite-mcp --extensions vector

3MB,零 Docker,零配置。Agent 通过 MCP 协议直接操作这个 Postgres 数据库——读写都行。

怎么做到的

以前的做法是开个 Docker Postgres,再挂个 MCP Server 桥接。但 pglite-mcp 不是桥接器——它本身就是 MCP Server。

1Agent ──stdio (MCP)──→ pglite-mcp ──JS API──→ PGlite (WASM Postgres 17)
2      tools: query,          ↑
3      list_tables,           │ 直接操作,不走 TCP socket
4      describe_table,        │ 零延迟,零认证
5      execute (可写)         │

核心是 PGlite(Electric SQL 出品,GitHub 15K+ Stars)。整个 PostgreSQL 17.5 编译成 WebAssembly,3MB gzip,跑在 Node.js 里。它不是"类 Postgres 的简化版"——就是真正的 Postgres,支持标准 SQL、存储过程、触发器,以及 pgvector、PostGIS、Apache AGE 等扩展。
v0.2.0 用 MCP SDK 自建 server。Agent 的 tool call 直接变成 JS API 调用,不再经过中间层。读、写、建表、建索引——全通过 MCP 完成。

读完再写

默认只读模式,Agent 只能 SELECT。配置 --allow-writes 后,多一个 execute 工具——Agent 可以 CREATE TABLE、INSERT 数据、建向量索引。

1# 只读(默认)
2npx pglite-mcp --db ./data --extensions vector
3
4# 读写
5npx pglite-mcp --db ./data --extensions vector --allow-writes

为什么设计成这样?因为 Agent 需要写入能力才能真正使用数据库。gbrain(YC 总裁 Garry Tan 的个人知识大脑)也用 PGlite,Agent 通过 CLI 命令随意读写——验证了写入的必要性。但我们选择默认只读 + 显式开启,安全第一。

实测

完整的 TDD 测试套件(15 个用例,全部通过):
只读模式:SELECT ✓、拒绝 CREATE TABLE ✓、拒绝 DROP ✓、describe_table ✓、自动发现 schema 资源 ✓
写入模式:CREATE TABLE ✓、INSERT ✓、SELECT 验证数据 ✓、pgvector 建表/插入/查询 ✓
实测 vector 相似度搜索:

1| id | embedding | distance         |
2|----|-----------|------------------|
3|  1 | [1,2,3]   | 0                |  ← 完全匹配
4|  2 | [3,2,1]   | 2.828            |  ← 较近
5|  3 | [10,10,10]| 13.928           |  ← 较远

在 Agent 中配置

Claude Desktop / Cursor(mcpServers 配置):

1{
2  "pglite": {
3    "command": "npx",
4    "args": ["-y", "pglite-mcp", "--db", "./data",
5             "--extensions", "vector", "--allow-writes"]
6  }
7}

Hermes Agent:

1hermes config set mcp_servers.pglite.command "npx"
2hermes config set mcp_servers.pglite.args '["-y", "pglite-mcp", "--db", "./data", "--extensions", "vector", "--allow-writes"]'
3hermes config set mcp_servers.pglite.enabled true

配置完 Agent 就有四个 MCP 工具:query、list_tables、describe_table、execute(写模式)。

支持的扩展

扩展用途
vectorpgvector 向量搜索(L2/余弦/内积/HNSW)
ageApache AGE 图数据库(OpenCypher)
postgis地理空间计算
pgcrypto加密、哈希
pg_trgm三元组模糊搜索
uuid-osspUUID 生成
hstore键值对存储
ltree树形结构

更多:citext、unaccent、earthdistance、tablefunc、fuzzystrmatch 等。

对比

pglite-mcpDocker PGSQLite MCP
安装npx 一行docker-composepip
体积3MB300MB+1MB
pgvector✅需手动装❌
图数据库✅ AGE✅ AGE❌
PostGIS✅✅❌
Agent 写入✅ --allow-writes✅✅
MCP 原生✅❌ 需桥接✅

pglite-mcp 是唯一同时做到零 Docker + pgvector + 图数据库 + PostGIS + MCP 原生的方案。

局限

  1. 单连接——PGlite 是单用户 WASM,不适合多 Agent 并发
  2. 不能替代生产 PG——Agent 本地状态、原型验证、测试用
  3. 首次 npx 下载可能超时——npm install -g pglite-mcp 先装好

安装

1npm install -g pglite-mcp
2npx pglite-mcp --extensions vector --allow-writes
  • GitHub: github.com/alitrack/pglite-mcp
  • npm: npmjs.com/package/pglite-mcp

PGlite × MCP。3MB。零配置。Agent 数据库就这。