[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 client
  • POST /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 在线注册,零停机

  1. Kill gbrain (释放 PGLite 锁)
  2. 设 GBRAIN_ADMIN_BOOTSTRAP_TOKEN=*** 重启 gbrain serve
  3. curl POST /admin/login → cookie
  4. curl POST /admin/api/register-client → client_id + client_secret
  5. curl POST /token (client_credentials) → access_token
  6. hermes config set mcp_servers.gbrain
  7. Restart gateway

方案 B — CLI 离线注册,最硬核

  1. Kill gbrain
  2. gbrain auth register-client anchor —grant-types client_credentials —scopes “read write” → client_id + client_secret
  3. Restart gbrain serve
  4. curl POST /token → access_token
  5. 配置 anchor

方案 C — Admin API + token-ttl 延长,最小维护

同方案 A,但在注册时设 tokenTtl: 2592000(30天),token 到期前轮换一次即可,不需要 cron 定时刷新。


额外发现

特性说明
--token-ttlserve 启动参数,全局 token 有效期
--suppress-bootstrap-token抑制 stderr 输出 bootstrap token(设 env var 时使用)
--enable-dcr开启动态客户端注册(RFC 7591)— 当前未启用
--bind控制监听地址(默认 ${LOCALIP})
Admin dashboard/admin 下的 React SPA,可可视化注册 client、查看活动
GBRAIN_ADMIN_BOOTSTRAP_TOKENenv var,需 ≥32 字符 [A-Za-z0-9_-]