天工 LCA MCP(远程)
通过标准 MCP OAuth 2.1 浏览器授权连接天工 LCA 远程工具。
远程入口是 https://lcamcp.tiangong.earth/mcp。请使用支持 Streamable HTTP、OAuth 2.1、PKCE 和 Protected Resource Metadata 的 MCP host。
浏览器授权
- 在 MCP host 中选择 Streamable HTTP,填写远程入口。
- 首次连接会收到带
resource_metadata的401。host 自动读取/.well-known/oauth-protected-resource/mcp和授权服务器元数据。 - host 使用预注册的 public client ID 和 S256 PKCE 打开浏览器。首个生产版本关闭 Dynamic Client Registration;未登记的 client/回调无法连接。
- 用户在 天工生命周期数据平台登录,并在授权页核对应用、账号和权限后选择允许或拒绝。
- 浏览器回到 host 的精确回调地址;host 直接与 Supabase 交换 code,并把 rotating refresh token 保存在自己的本地受保护凭据存储中。用户不复制 authorization code,也不查看或粘贴 token。
Supabase 签发标准的短期 Supabase access JWT。MCP resource server 通过 Supabase JWKS 验证 ES256 签名,并校验 iss、aud、exp、iat、sub、session_id、role 和精确准入的 client_id。随后它把同一个 JWT 转交给 Edge Functions 或 PostgREST;Edge 独立执行 getClaims(),数据库 RLS 同时使用 auth.uid() 和 auth.jwt() ->> 'client_id'。MCP 服务不保存 OAuth session 或 refresh token,认证也不使用 Redis。
不要把用户名、密码、authorization code、access token 或 refresh token 交给 AI、聊天窗口、命令参数或手工 Header。远程服务只支持 Authorization Code + S256 PKCE 与 refresh,不支持 password 或 client-credentials grant。
Claude Code
使用运维为 Claude Code 登记的 public client ID 与固定 callback:
claude mcp add --transport http --scope user \
--client-id "<registered-claude-code-client-id>" \
--callback-port 49192 \
tiangong-lca https://lcamcp.tiangong.earth/mcp打开 Claude Code,在 /mcp 中选择 tiangong-lca,并在浏览器完成授权。Claude Code 在本地保存 refresh token;不要添加 Authorization Header 或 client secret。
Codex
登录前,把运维登记的 public client ID、全局 loopback callback base 与固定监听端口写入 ~/.codex/config.toml:
mcp_oauth_callback_url = "http://127.0.0.1:49193/callback"
mcp_oauth_callback_port = 49193
[mcp_servers.tiangong_lca]
url = "https://lcamcp.tiangong.earth/mcp"
oauth_resource = "https://lcamcp.tiangong.earth/mcp"
[mcp_servers.tiangong_lca.oauth]
client_id = "<registered-codex-client-id>"codex mcp login tiangong_lca --scopes openid,email,profileCodex 会把这个 base 与该 MCP URL 的稳定 callback ID 组合成 http://127.0.0.1:49193/callback/sB-dwg9ebTQE;这是 Supabase 中逐字登记的最终 redirect URI。显式 URL 端口不会自动设置监听器,因此 mcp_oauth_callback_port 也必须保持为 49193。Codex 会打开浏览器,并把 rotating refresh token 保存在本地凭据存储中。不要开启 DCR,不要添加 client secret,也不要粘贴 bearer token。
MCP Inspector
npx @modelcontextprotocol/inspector- 选择 Streamable HTTP。
- URL 填写
https://lcamcp.tiangong.earth/mcp。 - 使用运维提供的预注册 client ID;不要自行生成 client 或粘贴 Bearer token。
- 点击连接并在打开的浏览器中完成授权。
- 连接后打开 Tools → List Tools,运行搜索等工具。
初始固定 client rollout 只保证登记过的 host。若 Cherry Studio、Dify 或其他 host 只能手工填写 Authorization Header,或强制使用 Dynamic Client Registration,则暂不属于受支持路径;不要用复制 token 的方式绕过。
Session、刷新与撤销
- access token 是短期凭据;host 使用 rotating refresh token 自动续期。
- host 本地“断开/登出”应删除自己的客户端本地 OAuth 凭据,但不会替代账号侧撤销。
- 在账号页 已连接应用 中撤销对应的 Claude Code、Codex 或 Inspector client,会立即使其 Supabase session 和 refresh token 失效。服务只做本地 JWKS 验证时,已签发的短期 access JWT 在密码学上仍可能有效到到期;敏感操作按自身契约执行在线校验。
- 撤销、refresh replay、client/回调不匹配或账号 grant 失效后,重新连接并在浏览器中授权。
Headless 与服务身份
Supabase OAuth 只支持 Authorization Code + PKCE 与 refresh。无人值守任务必须先由人类为固定 client 授权,再把 refresh session 存入批准的 secret store;或者由 orchestrator 注入一个短期 actor token。不要让 AI 收集账号密码。真正无用户的服务调用使用单独审计的 service capability,不伪装成用户 OAuth。
工具与数据边界
工具列表通常包含 Flow、Process、LifecycleModel 搜索和受 RLS 保护的数据操作。若部署启用了 GLAD,还会出现 Search_GLAD_Datasets_Tool 与 Get_GLAD_Dataset_Tool;GLAD API Key 只在远程服务端配置。GLAD 工具只查询外部数据集元数据,不会自动写入天工 LCA。