pi-use-db-helper1.0.0
pi 扩展:注入数据库连接上下文到系统提示词,并提供连接/database 选择器(pi-use-db-helper)
Untested on omp
This is a pi package. No one has reported whether it works on omp yet. If you try it, add your result below.
Reports 0
No reports yet.
Readme
pi-use-db-helper
一个用于 pi 的数据库连接上下文扩展:在每轮系统提示词中注入当前 MCP、数据库连接和 database,并提供两层交互式选择器。
功能
- 自动甄别可提供连接列表和 database 列表的数据库类 MCP。
- 通过
/pudh-set手动选择连接与 database。 - HTTP MCP 支持 OAuth 浏览器授权、loopback 回调、令牌持久化与自动刷新。
- 通过
pudh_setup_connection工具让 agent 引导用户完成选择。 - 选择结果按会话保存,恢复会话后自动还原。
- 在状态栏显示当前连接与 database。
环境要求
- pi 1.4.0 或兼容版本。
- Node.js 22.19.0 或更高版本(与当前 pi 运行时要求一致)。
- 至少配置一个数据库类 MCP,并提供“列出连接”和“列出 database”两个工具。
使用 pi 命令行安装
从本地目录安装
在本项目目录执行:
npm install
pi install .
也可以从其他目录传入本项目的绝对路径:
pi install /absolute/path/to/pi-use-db-helper
本地目录会以原路径加载,不会复制到 pi 的 npm 包目录;本地安装前需要自行执行 npm install 安装依赖。
从 Git 安装
将仓库推送到 Git 托管服务并创建版本标签后执行(替换为实际仓库地址和标签):
pi install git:github.com/taoke01/pi-use-db-helper@v1.0.0
pi 会克隆仓库、安装运行时依赖并加载清单中声明的扩展。
从 npm 安装
本项目已包含 npm 发布所需的 pi 清单和运行时依赖声明。发布到 npm 后执行:
pi install npm:pi-use-db-helper@1.0.0
上述 npm 命令需要先由维护者执行
npm publish;这里不表示该包已经发布。
临时试用(不写入配置)
pi -e /absolute/path/to/pi-use-db-helper
安装后确认
pi list
重新启动 pi,或在已打开的交互会话中执行 /reload。也可以使用 pi config 检查扩展资源是否启用。
首次会话会在以下位置生成配置:
~/.pi/agent/pi-use-db-helper/pudh.json
随后扩展会甄别数据库类 MCP 并回填配置。配置完成后,在交互会话中执行:
/pudh-set
依次选择连接和 database,并确认。agent 执行数据库任务时,也会根据提示词引导调用 pudh_setup_connection。
HTTP + OAuth 直连
对于未配置静态 Authorization header 的 HTTP MCP,/pudh-set 会在服务器返回 401 后直接启动 OAuth,无需经过 agent:
- 发现受保护资源和授权服务器元数据。
- 使用动态客户端注册,或
mcp.json中预注册的clientId/clientSecret。 - 启动 loopback 回调服务并打开系统浏览器;终端同时显示授权 URL,便于手动打开。
- 使用 PKCE 完成授权码交换,保存令牌并重连 MCP。
- 后续连接遇到令牌失效时自动使用 refresh token;刷新失败时可重新授权。
支持 pi 的 oauth 配置字段:clientId、clientSecret、callbackPort、callbackUrl、scope、clientName 和 authServerMetadataUrl。例如:
{
"mcpServers": {
"dbx": {
"type": "http",
"url": "https://example.com/mcp",
"oauth": {
"clientId": "my-client",
"clientSecret": "${MCP_OAUTH_CLIENT_SECRET}",
"callbackUrl": "http://127.0.0.1:8765/callback",
"scope": "mcp.read"
}
}
}
}
凭证独立保存在:
~/.pi/agent/pi-use-db-helper/oauth.json
扩展不读取或修改 pi 内部的 mcp-auth.json,避免两个客户端竞争刷新同一组旋转令牌。因此,即使已经执行过 /mcp login,首次通过本扩展直连时仍需单独授权一次。
当前不支持 oauth.clientRegistration: "cimd";请使用默认的 dcr 或预注册 clientId。显式配置了 Authorization header 的 HTTP MCP 会继续使用该静态认证,不进入 OAuth。
更新与卸载
pi update --extensions
pi remove /absolute/path/to/pi-use-db-helper
pi remove 的 source 应与安装时使用的包来源一致;npm 和 Git 安装分别使用对应的 npm 或 Git source。
开发
npm install
npm test
npm run typecheck
npm pack --dry-run
扩展入口为 src/index.ts,由 package.json 中的 pi.extensions 显式声明。pi 通过 jiti 直接加载 TypeScript,无需构建。
宿主提供的 @earendil-works/pi-coding-agent、@earendil-works/pi-tui 和 typebox 声明为 peerDependencies;@modelcontextprotocol/sdk 用于 stdio 直连,@earendil-works/pi-mcp 用于 HTTP 传输与 OAuth 流程。