新闻详情

新闻详情

首页 / 资讯中心 / 详情

鉴权的 MCP 走飞书 OAuth,TaoToken 让 GPT-6 Pro 替 Codex 规划

发布时间:2026/9/18 2:27:07来源:尧图网络
鉴权的 MCP 走飞书 OAuth,TaoToken 让 GPT-6 Pro 替 Codex 规划
1. 从 Codex 的 401 到飞书 OAuthMCP 鉴权链到底卡在哪如果你在 Codex 里接入远程 MCP 时遇到401 invalid_token或403 invalid_scope先别急着换模型。很多情况下问题不在模型本身而在飞书 OAuth 的 token 没有正确透传到 MCP Server或者 MCP 工具声明的权限范围超过了飞书应用实际开通的 scope。TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentintro 可以拿到统一 API KeyBase URL 使用https://taotoken.net/api把 GPT-6 Pro、Codex 以及 MCP 调用链的模型入口收口到同一套凭证体系里排查额度与调用日志会简单很多。这套工作流的核心目标不是让 Codex 停下来而是把“规划”和“执行”拆开Codex 侧的服务端能力被封装成一个只读、最小权限、飞书 OAuth 鉴权的 MCP ServerChatGPT 网页版里的 GPT-6 Pro 以插件或连接器形式调用这个 MCP Server读取 GitHub PR 记录、CI 状态、生产侧只读指标先把方案、影响面和任务拆解做出来Codex 再根据 GPT-6 Pro 输出的计划去执行具体修改。Token 消耗方会同时出现在 GPT-6 Pro、Codex 和 MCP 调用链三处所以不能只看某一个客户端的余额必须把 Base URL、Key、模型 ID、工具调用日志统一管理。下面按可复现的顺序展开先准备 TaoToken Key 与 Base URL再走飞书 OAuth 鉴权流程然后定义 MCP 工具列表接着给出 Codexconfig.toml、Claude Codesettings.json、CC Switch 三件套配置最后用额度对照表和排障表把整条链路跑通。2. 环境准备TaoToken Key、Base URL 与三个客户端边界第一步不是写 MCP Server而是先把凭证和客户端边界分清楚。TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentenv 可以完成注册、创建 API Key、查看模型列表和用量。Key 占位符统一写成YOUR_API_KEYBase URL 固定为https://taotoken.net/api注意 Base URL 不要加 UTM 参数UTM 只用于官网入口和 deep link 追踪。客户端边界建议这样划分Codex使用config.toml配置model_provider、base_url、env_key不要在这里写ANTHROPIC_*。Claude Code使用settings.json或环境变量核心是ANTHROPIC_BASE_URL、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_MODEL。CC Switch把它当成供应商、Key、模型映射三件套管理器避免多个项目之间互相覆盖。MCP Server只读、最小权限飞书 OAuth 负责身份校验不直接连生产库。先创建 Key再在本地写入环境变量。Linux/macOS 可以这样export TAOTOKEN_API_KEYYOUR_API_KEY export TAOTOKEN_BASE_URLhttps://taotoken.net/api export FEISHU_APP_IDcli_xxx export FEISHU_APP_SECRETxxx export FEISHU_OAUTH_REDIRECThttp://127.0.0.1:8787/oauth/callbackWindows PowerShell 可以这样$env:TAOTOKEN_API_KEYYOUR_API_KEY $env:TAOTOKEN_BASE_URLhttps://taotoken.net/api $env:FEISHU_APP_IDcli_xxx $env:FEISHU_APP_SECRETxxx $env:FEISHU_OAUTH_REDIRECThttp://127.0.0.1:8787/oauth/callback这里要强调MCP Server 不应该把飞书app_secret暴露给 Codex也不应该把 TaoToken Key 写进前端或网页端。网页端 GPT-6 Pro 只调用 MCP Server 暴露的工具真正的外部 API 凭证留在服务端环境变量里通过工具白名单和 scope 校验限制能力。3. 飞书 OAuth 鉴权流程从授权码到 MCP 会话票据飞书 OAuth 在这套架构里承担“谁可以调用只读 MCP 工具”的职责。推荐用授权码模式流程如下在飞书开放平台创建企业自建应用拿到App ID和App Secret。配置重定向 URL例如http://127.0.0.1:8787/oauth/callback。按最小权限申请 scope只开通身份读取与必要的只读权限不要一开始就申请大范围权限。用户访问授权链接飞书回调code和state。MCP Server 用code换取access_token与refresh_token。MCP Server 生成自己的会话票据绑定飞书用户身份与 scope。后续 MCP 工具调用必须携带该会话票据服务端再次校验 scope 与工具白名单。下面是一个简化示例重点看流程而不是照抄生产细节。飞书具体接口路径和字段以飞书开放平台文档为准。import os import secrets import httpx from fastapi import FastAPI, HTTPException, Request FEISHU_APP_ID os.environ[FEISHU_APP_ID] FEISHU_APP_SECRET os.environ[FEISHU_APP_SECRET] REDIRECT_URI os.environ[FEISHU_OAUTH_REDIRECT] app FastAPI() SESSION_STORE {} app.get(/oauth/start) def oauth_start(): state secrets.token_urlsafe(32) authorize_url ( https://open.feishu.cn/open-apis/authen/v1/authorize f?app_id{FEISHU_APP_ID} fredirect_uri{REDIRECT_URI} fstate{state} ) return {authorize_url: authorize_url, state: state} app.get(/oauth/callback) async def oauth_callback(code: str, state: str): async with httpx.AsyncClient(timeout10) as client: resp await client.post( https://open.feishu.cn/open-apis/authen/v2/oauth/token, json{ grant_type: authorization_code, client_id: FEISHU_APP_ID, client_secret: FEISHU_APP_SECRET, code: code, redirect_uri: REDIRECT_URI, }, ) data resp.json() access_token data.get(access_token) refresh_token data.get(refresh_token) if not access_token: raise HTTPException(status_code401, detailfeishu oauth failed) session_ticket mcp_ secrets.token_urlsafe(32) SESSION_STORE[session_ticket] { feishu_access_token: access_token, feishu_refresh_token: refresh_token, scope: data.get(scope, ), expires_in: data.get(expires_in, 0), } return {mcp_session: session_ticket, expires_in: data.get(expires_in, 0)} app.post(/mcp/tools/call) async def mcp_tools_call(request: Request): auth request.headers.get(authorization, ) if not auth.startswith(Bearer ): raise HTTPException(status_code401, detailmissing mcp session) ticket auth.removeprefix(Bearer ).strip() session SESSION_STORE.get(ticket) if not session: raise HTTPException(status_code401, detailinvalid mcp session) # 这里继续做 scope 校验、工具白名单校验、审计日志 return {ok: True}这段代码的关键点不是 FastAPI 本身而是三个检查点state必须校验防止 CSRF。access_token和refresh_token必须加密存储不能明文落盘。MCP 工具调用必须再次检查 scope不能因为有了会话票据就放开全部工具。如果你的 MCP Server 部署在远程建议使用 HTTPS并限制回调 URL、CORS 来源和请求体大小。不要允许 MCP/Agent 直连 Oracle/生产库生产数据只通过只读副本、预聚合视图或离线快照暴露。4. MCP 工具列表只读 PR 记录与规划上下文GPT-6 Pro 要替 Codex 做规划需要的是“足够决策的上下文”不是全量源码。MCP 工具应该尽量窄返回结构化摘要减少无关 token。下面是一份可落地的工具列表工具名作用权限返回内容feishu_whoami返回当前登录用户只读open_id、tenant_key、scoperepo_list_prs列出指定仓库 PR只读标题、作者、状态、更新时间、标签repo_get_pr获取单个 PR 详情只读变更文件列表、diff 摘要、风险标签repo_get_checks获取 CI 检查状态只读check 名称、结论、耗时repo_get_comments获取 PR 评论摘要只读参与者、待解决问题、决策记录issue_search搜索相关 issue只读标题、状态、关联 PRplan_get_context获取规划约束只读里程碑、冻结窗口、负责人usage_report查询模型用量只读按 Key、模型、时间聚合的 Token 统计工具 schema 可以这样写{ name: repo_list_prs, description: 只读列出 GitHub PR 记录只返回元数据与摘要不返回源码全文, inputSchema: { type: object, properties: { repo: { type: string, description: owner/repo }, state: { type: string, enum: [open, closed, merged] }, updated_within_days: { type: integer, minimum: 1, maximum: 30, default: 7 }, limit: { type: integer, minimum: 1, maximum: 50, default: 20 } }, required: [repo] } }注意limit和updated_within_days这两个参数非常重要。GPT-6 Pro 规划时如果一次拉取几百个 PRToken 消耗会迅速上升而且上下文里充满重复信息。建议把默认值压小让模型先拿摘要再按需调用repo_get_pr。如果 MCP 工具背后要查数据库也不要让工具直接连生产库。正确做法是让工具查只读副本或预聚合表SQL 由读者本地执行验证。例如-- 在本地只读副本执行不要放进 MCP 工具直连生产库 SELECT pr_id, title, author, status, updated_at, risk_level FROM readonly_pr_summary WHERE updated_at NOW() - INTERVAL 7 days ORDER BY updated_at DESC LIMIT 20;然后把查询结果写入只读视图MCP 工具只读取该视图。这样即使 MCP Server 被滥用也无法修改生产数据。5. Codex config.toml、CC Switch 三件套与 Claude Code settings.json 配置这一节把三个客户端的配置分开写避免把ANTHROPIC_*套到 Codex 上。5.1 Codex 使用 config.tomlCodex 侧推荐使用config.toml。下面是一个示例模型 ID 请从 TaoToken 控制台或模型列表中选择不要硬编码不确定的名称。# ~/.codex/config.toml model YOUR_MODEL_ID model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY # 如果当前 Codex 版本支持 wire_api 选择请按 TaoToken 文档填写 # wire_api chat配套环境变量export TAOTOKEN_API_KEYYOUR_API_KEYCodex 执行时应该只读取 GPT-6 Pro 输出的计划文件或摘要不要把整段对话历史重新塞回去。例如让 GPT-6 Pro 输出plan.mdCodex 只读plan.md和必要的文件片段。5.2 Claude Code 使用 settings.json / ANTHROPIC_*Claude Code 的配置走settings.json或环境变量。示例{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_MODEL: YOUR_MODEL_ID, ANTHROPIC_SMALL_FAST_MODEL: YOUR_SMALL_MODEL_ID } }如果你在 shell 中临时使用也可以export ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_AUTH_TOKENYOUR_API_KEY export ANTHROPIC_MODELYOUR_MODEL_ID再次强调ANTHROPIC_*只用于 Claude Code 及其兼容客户端不要写进 Codex 的config.toml。5.3 CC Switch 三件套CC Switch 可以理解为“供应商、Key、模型映射”三件套管理器。一个通用结构如下字段名以你实际使用的 CC Switch 版本为准{ provider: taotoken, apiKey: YOUR_API_KEY, baseUrl: https://taotoken.net/api, modelMap: { default: YOUR_MODEL_ID, planning: YOUR_PLANNING_MODEL_ID, coding: YOUR_CODING_MODEL_ID } }三件套分别检查供应商provider是否指向 TaoToken。KeyapiKey是否是YOUR_API_KEY对应的有效 Key。模型映射modelMap是否把规划与执行分开避免所有请求都打到同一个昂贵模型。5.4 MCP 客户端配置ChatGPT 网页版如果支持自定义连接器或 MCP可以把远程 MCP Server 地址填进去如果不支持就用本地 MCP 客户端做中转。Codex 侧可以这样声明 MCP Server{ mcpServers: { feishu-readonly: { command: python, args: [-m, mcp_feishu_oauth], env: { FEISHU_APP_ID: cli_xxx, FEISHU_APP_SECRET: xxx, FEISHU_OAUTH_REDIRECT: http://127.0.0.1:8787/oauth/callback, TAOTOKEN_BASE_URL: https://taotoken.net/api, TAOTOKEN_API_KEY: YOUR_API_KEY, MCP_READONLY: true, MCP_ALLOWED_TOOLS: feishu_whoami,repo_list_prs,repo_get_pr,repo_get_checks } } } }这里用MCP_ALLOWED_TOOLS做工具白名单比在代码里到处写if更好维护。6. 联调GPT-6 Pro 规划、Codex 执行与 MCP 调用链排障联调时建议按固定顺序跑不要一上来就让 Codex 改代码。本地启动 MCP Server访问/oauth/start完成飞书授权。用feishu_whoami验证身份与 scope。用repo_list_prs拉取最近 7 天 PR确认只返回摘要。把 MCP Server 注册到 GPT-6 Pro 的网页端连接器或本地 MCP 客户端。让 GPT-6 Pro 读取 PR 摘要输出plan.md包含任务拆解、影响文件、风险点、验证步骤。让 Codex 读取plan.md执行修改并运行本地测试。回到 MCP 工具链用usage_report查看 Token 消耗分布。排障时优先看日志和 scope不要第一时间改模型。常见问题如下现象可能原因处理动作401 invalid_token飞书 access_token 过期或未透传检查 refresh_token 流程重新走 OAuth403 invalid_scope飞书应用未开通对应权限在开放平台补 scope重新授权MCP 连接失败回调地址、CORS、SSE/HTTP 传输不匹配检查 URL、端口、协议和反向代理Codexmodel not foundBase URL 或模型 ID 不匹配用 TaoToken 模型列表重新选择 IDClaude Code 401ANTHROPIC_AUTH_TOKEN错误检查settings.json与环境变量优先级GPT-6 Pro 看不到工具MCP Server 未注册或工具列表为空检查 MCP 客户端日志与工具白名单Token 消耗异常工具返回内容过大或轮次过多压缩 PR 摘要限制limit增加缓存建议在 MCP Server 里记录结构化审计日志{ ts: 2026-01-01T10:00:00Z, user: feishu_open_id_xxx, tool: repo_list_prs, repo: owner/repo, limit: 20, result_count: 13, latency_ms: 182, token_estimate: 1240 }有了这类日志才能判断到底是 GPT-6 Pro 规划消耗高还是 Codex 执行消耗高还是 MCP 工具返回内容太胖。7. 额度对照GPT-6 Pro、Codex 与 MCP 调用链的 Token 去向TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentquota 可以查看 Key 维度的用量。建议按下面这张表做对照不要用固定倍数拍脑袋。角色调用入口消耗的 Key观测位置优化方向GPT-6 ProChatGPT 网页版 MCP 连接器YOUR_API_KEYTaoToken 控制台用量只传 PR 摘要缓存规划结果Codex本地 Codex CLIYOUR_API_KEYCodex 日志 TaoToken 用量只读计划文件限制 diff 范围MCP 调用链MCP Server 工具调用服务端YOUR_API_KEYMCP 审计日志减少工具轮次批量查询Claude Code本地 Claude CodeYOUR_API_KEYsettings 环境 TaoToken 用量区分默认模型与快速模型CC Switch多项目切换同一 Key 或分 Key供应商配置按项目拆 Key便于归因额度优化的关键不是“少用模型”而是减少无效上下文。具体做法GPT-6 Pro 只看 PR 摘要、CI 结论、issue 关联不直接读全量 diff。Codex 只读plan.md和必要文件片段不继承网页端全部聊天历史。MCP 工具限制limit、updated_within_days、返回字段。对repo_list_prs结果做短期缓存避免同一规划任务重复拉取。用usage_report按天检查发现异常工具调用立刻收紧白名单。如果发现 GPT-6 Pro 规划阶段消耗偏高优先检查 MCP 工具返回的 JSON 是否包含大段源码、评论全文或重复字段。如果 Codex 执行阶段消耗偏高检查是否把整个仓库说明、历史 PR 评论、无关 issue 都塞进了上下文。MCP 调用链本身通常不是最大头但它容易放大前两者的输入体积。8. 高转化 CTA把 Key、Base URL 与 MCP 工具链收口到 TaoToken整套方案要跑顺最后只需要把四个入口收口模型对话、Coding Plan、API Key、Claude Code 文档。建议按下面顺序操作先到模型对话入口验证模型可用性https://taotoken.net/models/detail/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchat如果你要长期跑 Codex、Claude Code 和 MCP 调用链查看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentplan创建或管理 API Key把YOUR_API_KEY替换成真实 Keyhttps://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentkeyClaude Code 用户按文档配置ANTHROPIC_BASE_URL与ANTHROPIC_AUTH_TOKENhttps://taotoken.net/doc/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude_code官网总入口在这里Base URL 始终使用https://taotoken.net/apihttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_contentcta配置完成后你的链路应该是飞书 OAuth 负责身份与只读权限MCP Server 暴露窄工具GPT-6 Pro 读取 PR 摘要做规划Codex 根据计划执行TaoToken 统一承载模型调用与用量观测。先跑通feishu_whoami和repo_list_prs再接入 GPT-6 Pro最后让 Codex 执行。每一步都保留日志和额度对照后续扩展工具时只加白名单不放开生产库直连。这样既能把规划压力从 Codex 侧转移出去也能让 Token 消耗可追踪、可优化、可复现。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

splitk:从交互探索到规则固化,打造日志解析的确定性工作流 2026/9/18 3:09:12

splitk:从交互探索到规则固化,打造日志解析的确定性工作流

前阵子我处理一批客户环境导出的服务日志,格式和文档里写的完全不是一个东西。用 awk 和 cut 的组合拳试到第三轮,才终于把 IP 和状态码抽出来,结果时间字段又带了个毫秒尾巴,整条命令还得接着改。身边同事贴过来看了一眼说&#…

阅读更多 →
ChatGPT 订阅给 Videoclaw 做广告视频,TaoToken 只补 Key 2026/9/18 3:09:12

ChatGPT 订阅给 Videoclaw 做广告视频,TaoToken 只补 Key

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
CANN ops-cv UpsampleTrilinear3dBackward 算子深度解析:三维三线性上采样的反向梯度计算与 aclnn 接口实战 2026/9/18 3:09:12

CANN ops-cv UpsampleTrilinear3dBackward 算子深度解析:三维三线性上采样的反向梯度计算与 aclnn 接口实战

CANN ops-cv UpsampleTrilinear3dBackward 算子深度解析:三维三线性上采样的反向梯度计算与 aclnn 接口实战 【免费下载链接】ops-cv 本项目是CANN提供的图像处理、目标检测相关的算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/can…

阅读更多 →
零碳园区商业模式创新:从碳盘查到碳资产运营的落地路径 2026/9/18 3:09:12

零碳园区商业模式创新:从碳盘查到碳资产运营的落地路径

这几年我做园区能源项目,被问得最多的一个问题就是:光伏也装了、储能也上了、数字化平台也买了,为什么零碳园区还是不赚钱?更扎心的是,很多项目连“零碳”两个字都站不住脚——碳账算不清楚,减排量换不成收…

阅读更多 →
dlt 自定义命名约定(Naming Convention)实战:从零实现防碰撞与支持拉丁字符的标识符翻译器 2026/9/18 3:09:12

dlt 自定义命名约定(Naming Convention)实战:从零实现防碰撞与支持拉丁字符的标识符翻译器

dlt 自定义命名约定(Naming Convention)实战:从零实现防碰撞与支持拉丁字符的标识符翻译器 【免费下载链接】dlt data load tool (dlt) is an open source Python library that makes data loading easy 🛠️ 项目地址: https:…

阅读更多 →
脚 Claude Slides 生成脚本,TaoToken 只提供 Key 2026/9/18 3:06:12

脚 Claude Slides 生成脚本,TaoToken 只提供 Key

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞