
当 14 万字网页撞上大模型 Token 上限用 MCP 分块翻译Base URL 交给 TaoToken长网页翻译这件事真正卡住人的往往不是模型能力而是 Token 上限。一篇 Towards Data Science 的长文正文加 HTML 元素大约 14 万字直接丢给 deepseek-r1它只会礼貌地告诉你“由于篇幅限制只能输出一部分”。想一次性翻完就得把网页拆开、逐块翻译、最后合并——这正是 MCP Agent 要解决的问题。本文沿着 Trae Agent 的实战链路走一遍用 FastMCP 写mcp_server_fetchplus暴露fetch_url和fetch_trunk两个工具在 Trae 里配置 MCP 与 Agent按max_token_length分块翻译再合并成 Markdown 和 HTML。整条链路上每一块翻译都在真实消耗 Token模型通道和 Key 需要单独管理这里把 Trae/Agent 侧的模型 Base URL 指向 TaoToken官网https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentKey 用自己创建的那把分块与合并仍由 fetchplus 和max_token_length完成。一、原问题与场景为什么直接翻译会“只肯译一部分”大模型有输入和输出的最大 Token 限制。那篇目标网页大约 6 万多个英文单词加上 HTML 元素约 14 万字。如果直接把链接丢给 deepseek-r1 让它全文翻译它会告诉你因为篇幅限制只能输出一部分并建议你分段处理。问它“翻译输出支持的最大 Token 是多少”回答通常是建议控制在 2000–3000实际能到 4000–8000。这个限制带来的体验很不舒服你明明给了完整链接却只拿到半篇译文。于是思路变成不要让模型一次吞下整篇而是先把网页抓下来按标题结构切分累计超过max_token_length就分块再逐块交给大模型翻译最后把各块译文整合。为什么要用大模型而不是普通翻译软件因为它能联系上下文、对专业术语做交叉检验翻译质量更好而且结果可以结构化存储到本地。这条链路拆开看是抓取网页 → 设置最大 Token 值 → 按标题分割并在超限时分块 → 逐块翻译 → 整合各块。MCP 负责把“抓取 分块 取块”标准化成工具Agent 负责编排“取块 → 翻译 → 保存 → 合并”的循环。而每一次“翻译”调用都是一次真实的模型请求需要稳定的 Base URL 和 Key。二、TaoToken 前置先把模型通道和 Key 准备好在 Trae 里配置 MCP 和 Agent 之前建议先把模型通道准备好否则 Agent 跑到翻译那一步会因为 Key 或 Base URL 不对而中断。步骤很直接打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册账号。进入控制台创建 API Key得到一把形如YOUR_API_KEY的密钥。记住 Trae/Agent 侧要填的 Base URLhttps://taotoken.net/api注意不带/v1也不加任何 UTM 参数。Key 就用刚创建的那把。需要强调的是分工TaoToken 只提供 Key 与 Base URL也就是模型调用的入口分块、逐块翻译、合并 Markdown、生成 HTML 这些活仍然由max_token_length和mcp_server_fetchplus自己完成。不要把分块逻辑寄托在模型通道上它只负责“把这一块翻成中文”。如果你后续要长期跑这类长文翻译或 Agent 编码任务可以了解 Coding Plan只是临时验证模型通不通用模型对话即可。创建 Key 的入口在控制台的 API Keys 页面接入细节可对照接入文档。三、可复制配置MCP Server、Trae MCP 与 Agent3.1 写一个 MCP ServerFastMCP参考 python-sdk 的规范用 FastMCP 可以大幅减少工作量。本次只需要 Tools 就够了。核心是暴露两个工具fetch_url根据用户输入的 URL 获取网页内容转换为 Markdown保留图片并返回【标题】和【分块总数】。fetch_trunk获取任意一块的内容供 Agent 逐块取用。工程目录大致如下mcp-server-fetchplus ├── .env ├── README.md ├── pyproject.toml ├── src │ └── mcp_server_fetchplus │ ├── __init__.py │ ├── fetch.py │ ├── markdown_converter.py │ └── server.py └── test ├── fetch_service.log └── test_client.pyserver.py是核心配置日志、读取默认参数使用时从 Client 传入、初始化 FastMCP通过mcp_server.tool()注解生成fetch_url和fetch_trunk两个工具main()调用FastMCP.run()完成协议封装和服务运行。fetch.py与markdown_converter.py负责抓取、Markdown 转换以及按max_token分割 Markdown。3.2 在 Trae 中配置 MCP先用一个 MCP Client 做连通性测试验证 server 能提供哪些能力、两个工具是否可用。测试通过后再进 Host 配置否则没有日志出错很难查。以 Trae 为例打开 MCP 界面选择新建 → 手工新建配置如下参数按实际情况修改{ mcpServers: { mcp_server_fetchplus: { command: E:/envs/llm_learn/python, args: [ D:\\Server\\mcp-server-fetchplus\\src\\mcp_server_fetchplus\\server.py ], env: { PYTHONPATH: d:/Server/mcp-server-fetchplus/src, max_token_length: 5000 } } } }要点command填 Python 路径args填 MCP Server 的server.py路径PYTHONPATH指向src目录max_token_length是分块阈值。显示ready即配置成功。3.3 在 Trae 中配置 AgentTrae 里的 Agent 可以串联调用 MCP Server 和 LLM 完成特定任务类似工作流但靠 Prompt 驱动。由于大模型有不确定性Prompt 质量直接决定任务质量而且它不像 Coze 那样有明确先后顺序容易跳跃导致步骤失败——本次 Agent 前后调试了几十次。Agent 的设计逻辑根据用户输入的 URL调用网页获取工具获得【标题】和【分块总数】。调用文件系统工具Trae 内置 MCP以【标题】新建子目录。针对每个返回块循环执行获取内容、翻译、保存为 Markdown 文件。最终合并成 1 个 Markdown并生成 HTML。具体操作打开 Trae 的 Agent 界面新建 Agent输入名字写好 Prompt核心中的核心把刚新建的 MCP 包含在内别忘了勾选。3.4 模型 Base URL 与 Key 的填写位置Agent 在翻译环节会调用大模型这里需要把模型通道指向 TaoTokenBase URLhttps://taotoken.net/api不带/v1不加 UTMAPI KeyYOUR_API_KEY控制台创建的那把分块、合并这些活仍由max_token_length和 fetchplus 自己完成TaoToken 只供 Key 与 Base URL。四、验证请求与成功结果配置完成后在 Trae 中打开聊天窗口选中刚才建立的 Agent在聊天窗口输入目标 URL剩下的交给电脑。执行链路是fetch_url→ 分块 → 逐块翻译 → 合并输出。验证方式很直接看每块 Markdown 是否都正常生成文件名与分块对应。看每次模型调用是否都成功回来没有因为 Key 或 Base URL 报错中断。最终检查合并后的 Markdown 是否完整生成的 HTML 是否可直接查看。如果一切正常你会看到先分块生成中文 Markdown然后整合成最终 Markdown并生成可直接查看的 HTML 网页。相比直接把链接丢给模型只拿到一部分译文这条链路能一次性完成长文翻译且结果结构化存储在本地。五、本篇常见错排查1. MCP 显示 not ready 或启动失败检查command的 Python 路径是否存在args里的server.py路径是否正确PYTHONPATH是否指向src目录。路径中的反斜杠在 JSON 里要转义。2. Agent 跑到翻译步骤就中断优先检查模型 Base URL 和 Key。Base URL 应填https://taotoken.net/api不要带/v1也不要加 UTM 参数Key 用控制台创建的那把。若报鉴权失败去 API Keys 页面重新确认 Key 状态。3. 分块数量不对或某块取不到内容检查max_token_length设置。设得太小会触发过多分块设得太大可能单块仍超模型上限。测试阶段可以设小一点方便触发分块逻辑。4. Agent 步骤跳跃、顺序错乱这是 Prompt 问题。由于大模型不确定性Agent 可能不按 1→2→3→4 执行。需要在 Prompt 里把步骤写死明确“先取标题和分块总数再建目录再循环取块翻译最后合并”并强调不要跳步。5. 合并后的 Markdown 缺块或 HTML 不完整检查每块翻译是否都成功返回。如果某块调用失败但 Agent 继续往下走合并结果就会缺内容。可以在 Prompt 里要求“每块保存后确认文件存在失败则重试”。6. 图片丢失markdown_converter.py负责保留图片。如果转换后图片链接失效检查抓取阶段是否完整获取了 HTML以及 Markdown 转换时图片地址是否被正确处理。六、语义一致 CTA这条链路的本质是MCP 负责把长网页拆成可管理的块Agent 负责编排逐块翻译与合并而每一块翻译都需要一个稳定的模型通道。TaoToken 在这里的角色很清晰——只提供 Key 与 Base URL不介入分块与合并逻辑。如果你正在排障或准备接入先去控制台创建 Key再对照接入文档确认 Base URL 写法需要验证模型是否通用模型对话跑一次最小请求即可如果这类长文翻译或 Agent 编码任务是长期需求可以了解 Coding Plan。把模型通道和 Key 单独管好剩下的分块、翻译、合并交给 fetchplus 和 Agent 去跑就行。