[OPS REPORT] gbrain 深度研究 — 接入方案全览
环境确认
| 项目 | 状态 |
|---|---|
| gbrain 版本 | v0.42.42(最新) |
| 数据库 | PGLite(文件级) |
| 运行模式 | serve --http --port 8920(单实例) |
| MCP 端点 | http://${LOCALIP}:8920/mcp ✅ 活(返回 401 invalid_token) |
| 鉴权需求 | Bearer token |
gbrain HTTP MCP 的 4 种鉴权路径
① OAuth 2.1 Client Credentials(✅ PGLite 可用,推荐)
标准 OAuth 流程,PGLite 支持。流程:
1. Register OAuth client → 获取 client_id + client_secret
2. POST /token → 换取 Bearer access_token
3. 每次 MCP 调用带上 Authorization: Bearer ***
token TTL: 默认 1 小时,可在注册时指定 tokenTtl(秒),或服务启动时 --token-ttl N
注册方式有两种:
| 方式 | 优点 | 缺点 |
|---|---|---|
CLI gbrain auth register-client anchor | 离线操作,简单 | ❗PGLite 锁冲突 — 需先 kill 运行中的 gbrain |
Admin API POST /admin/api/register-client | 在线操作,不停服 | 需要 bootstrap token 登录 |
② Admin Bootstrap Token(入口凭证)
serve 启动时自动生成,打印到 stderr,或设 env var GBRAIN_ADMIN_BOOTSTRAP_TOKEN。
用途:
POST /admin/login→ cookie session(24h)POST /admin/api/register-client→ 注册 OAuth clientPOST /admin/api/issue-magic-link→ 生成一次性 magic link
当前状态: bootstrap token 未知(未设 env var,新进程已替换旧进程,stderr 不可追回)
③ Legacy Bearer Token(❌ PGLite 不支持)
gbrain auth create <name> → 传统 bearer token
access_tokens 表仅 Postgres 有,PGLite 会崩溃
④ Stdio MCP(最简单,但只在 WSL 内部)
gbrain serve → stdio 模式,无鉴权
适用于 Hermes MCP transport stdio,但不跨机器
推荐方案
方案 A(推荐)— Admin API 在线注册,零停机
- Kill gbrain (释放 PGLite 锁)
- 设 GBRAIN_ADMIN_BOOTSTRAP_TOKEN=*** 重启 gbrain serve
- curl POST /admin/login → cookie
- curl POST /admin/api/register-client → client_id + client_secret
- curl POST /token (client_credentials) → access_token
- hermes config set mcp_servers.gbrain
- Restart gateway
方案 B — CLI 离线注册,最硬核
- Kill gbrain
- gbrain auth register-client anchor —grant-types client_credentials —scopes “read write” → client_id + client_secret
- Restart gbrain serve
- curl POST /token → access_token
- 配置 anchor
方案 C — Admin API + token-ttl 延长,最小维护
同方案 A,但在注册时设 tokenTtl: 2592000(30天),token 到期前轮换一次即可,不需要 cron 定时刷新。
额外发现
| 特性 | 说明 |
|---|---|
--token-ttl | serve 启动参数,全局 token 有效期 |
--suppress-bootstrap-token | 抑制 stderr 输出 bootstrap token(设 env var 时使用) |
--enable-dcr | 开启动态客户端注册(RFC 7591)— 当前未启用 |
--bind | 控制监听地址(默认 ${LOCALIP}) |
| Admin dashboard | /admin 下的 React SPA,可可视化注册 client、查看活动 |
| GBRAIN_ADMIN_BOOTSTRAP_TOKEN | env var,需 ≥32 字符 [A-Za-z0-9_-] |