
用MCP+Agent突破大模型最大token限制,完成超长网页翻译
本文介绍了如何通过设计一个MCP(Model Context Protocol)系统,解决大模型在翻译超长网页时面临的token限制问题。具体步骤包括:抓取网页内容、按标题分割文本、设置最大token值、分块翻译并整合结果。MCP系统通过标准化协议,减少开发工作量,提升代码复用度。文章详细说明了MCP的三大核心组件(Host、Client、Server)和八步流程,并提供了编写MCP Server
Hello,大家好呀。
今天我们完成一个实用的功能,突破大模型的最大token限制,完成超长网页的翻译和输出。
背景说明
大模型有输入和输出的最大token限制。例如:
https://towardsdatascience.com/understanding-llms-from-scratch-using-middle-school-math-e602d27ec876/ 该网页大概有6万多个英文单词,加上html的元素,大概有14万字。
如果直接把链接丢给deepseek-r1模型,让他进行全文翻译,他会告诉你因为篇幅限制,只能输出一部分,建议巴拉巴拉……就像下图一样:
问deepseek:你的翻译输出支持的最大token是多少?
deepseek答:建议你控制在2000~3000;实际能到4000~8000。
token的限制带来了不太舒服的用户体验。基于此,兔子设计了一个MCP,可以实现一次性完成长文翻译。
具体的原理可拆分成以下步骤:
1 完成网页的抓取;
2 设置max_token最大token值;
3 先对网页的内容按标题进行分割,如果累计超过max_token,则进行分块;
4 之后丢给大模型让其按块进行翻译,并将翻译后的各块进行整合
PS:为什么要用大模型进行文本翻译?
因为他能联系上下文、并联网进行专业术语等交叉检验,翻译效果比直接用翻译软件要好,而且可以结构化存储到本地。
老规矩,先看最终效果。
还是翻译上述网页中的内容,先分块生成中文md,然后整合成最终的md,并生成可直接查看html网页。
mcp+agent+llm翻译之后,最终生成的html效果:效果很不错呢
用到的过程文档截图
而原始网页版效果是这样的:
如果用前段时间爆火的沉浸式翻译插件全网页翻译效果,翻译效果较差
综上,MCP+大模型 翻译真是很不错呢。
以下是详细的实现过程。
一、在开始之前,我们先简单补充下MCP原理知识,做好笔记哦
1. MCP就是一个标准协议,规范了周边程序与大模型交互的标准,大大减少开发工作量和代码的复用度。
目前网络上已经开出来的mcp server数以万计,大家可以挑选自己需要的使用(复用的力量!)。不出意外,这篇文章之后,网络上又会多出一些mcp工具。
2. MCP的流程,分为三块八步
1) 三块 - Host、Client和Server
-
Host:可以理解为用户可操作的界面,例如CherryStuido、Trae
-
Client:一般内嵌在Host中,负责链接Host和Server端,进行消息的相互传递
-
Server:负责接收Client传来的指令,和周边系统(网络、数据库等等)进行互动,完成特定的任务,并将结果反馈给Client端。
2) Server端的介绍 - 写mcp的核心
Server端有三大核心概念,包括Resources、Tools、Prompts
Resources资源:也就是能提供给大模型的数据,例如日志文件。
Tools工具:也就是实际完成任务的“干活儿的家伙”,会暴露api接口供Client用,这个是我们要重点实现的内容。
Prompts提示词模板:基于当前的mcp工具,给大模型一个“剧本”,告诉大模型该如何思考和如何处理。
可参考官方链接理解,有概念介绍和示例代码,非常容易理解。
官方网址:https://github.com/modelcontextprotocol/python-sdk
3) 八步
-
用户输入要完成的任务或问题
-
第一步:Host根据用户输入,确定要调用哪个Client
-
第二步:Client将用户输入和一些环境变量,传递给Server
-
第三步:Server根据Client传递的内容进行任务处理,并将结果反馈给Client
-
第四步:Client将结果传递给Host
-
第五步(可选):如果有需要,继续重复2到4,调用不同的mcp完成不同的任务
-
第六步:Host将重新组装Prompt,传递给大模型
-
第七步:大模型完成任务之后,将结果反馈给Host,
-
第八步:Host将结果展现给用户
其中:第二至七步可通过Agent完成。
二、下面开始详细的实现步骤
1. 写一个Mcp Server
2. 写一个Mcp client方便测试(用的时候直接用Host软件即可)
3.在Host软件中配置一个MCP
4、在Host软件中配置一个Agent
5、开始使用!
三、编写一个MCP server
参考https://github.com/modelcontextprotocol/python-sdk的规范
可以写一个同时包含Resource、Tools和Prompts的server端,但本次我们仅仅需要Tools就够了。
官方的示例代码,使用FastMCP,能大大的减少开发工作量:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Echo")
@mcp.resource("echo://{message}")
def echo_resource(message: str) -> str:
"""Echo a message as a resource"""
return f"Resource echo: {message}"
@mcp.tool()
def echo_tool(message: str) -> str:
"""Echo a message as a tool"""
return f"Tool echo: {message}"
@mcp.prompt()
def echo_prompt(message: str) -> str:
"""Create an echo prompt"""
return f"Please process this message: {message}"
本次实现的MCP Server的核心功能
-
根据用户输入的 URL 获取网页内容
-
将网页内容转换为 Markdown 格式
-
保留图片
-
自动拆分过长的文档以适应大语言模型的上下文长度限制
工程目录如下
mcp-server-fetchplus
├── .env
├── README.md
├── pyproject.toml
├── src
│ └── mcp_server_fetchplus
│ ├── __init__.py
│ ├── __pycache__
│ ├── fetch.py
│ ├── markdown_converter.py
│ └── server.py
└── test
├── fetch_service.log
└── test_client.py
server.py是mcp实现的核心,使用FastMCP,封装了endpoint、tools等
-
配置日志和读取默认参数(使用时会从Client传入)
-
初始化一个FastMCP
-
通过@mcp_server.tool()注解生成两个工具:一个fetch_url工具,完成网页内容获取和分块总数;一个fetch_trunk工具,获取任意分块的内容。
-
main()调用FastMCP.run()完成通讯协议的封装和服务的运行
fetch.py和markdown_converter.py负责网页的抓取、markdown转换、以及按max_token进行markdown的分割。
四、编写一个MCP client进行测试
同样参考https://github.com/modelcontextprotocol/python-sdk的规范
官方的示例代码:
from mcp import ClientSession, StdioServerParameters, types
from mcp.client.stdio import stdio_client
# Create server parameters for stdio connection
server_params = StdioServerParameters(
command="python", # Executable
args=["example_server.py"], # Optional command line arguments
env=None, # Optional environment variables
)
# Optional: create a sampling callback
async def handle_sampling_message(
message: types.CreateMessageRequestParams,
) -> types.CreateMessageResult:
return types.CreateMessageResult(
role="assistant",
content=types.TextContent(
type="text",
text="Hello, world! from model",
),
model="gpt-3.5-turbo",
stopReason="endTurn",
)
async def run():
async with stdio_client(server_params) as (read, write):
async with ClientSession(
read, write, sampling_callback=handle_sampling_message
) as session:
# Initialize the connection
await session.initialize()
# List available prompts
prompts = await session.list_prompts()
# Get a prompt
prompt = await session.get_prompt(
"example-prompt", arguments={"arg1": "value"}
)
# List available resources
resources = await session.list_resources()
# List available tools
tools = await session.list_tools()
# Read a resource
content, mime_type = await session.read_resource("file://some/path")
# Call a tool
result = await session.call_tool("tool-name", arguments={"arg1": "value"})
if __name__ == "__main__":
import asyncio
asyncio.run(run())
本次实现的MCP Client的代码,主要用于测试,验证4个功能:
-
mcp server的连通性
-
查询mcp server能提供的能力
-
验证mcp server的两个功能
核心代码如下:
构建服务器参数,max_token设置的小一点,更方便触发分块。
获取mcp server可提供的tools的列表
通过seesiong.call_tools验证服务
五、在Host中配置MCP
第四步测试验证通过之后再进行,否则调试起来很麻烦,因为没有日志!都不知道哪里出错!
Host工具的选择:Trae(推荐)、CherryStudio、VS tools、coze都行。
1、以Trae为例,打开MCP界面
2、选择新建->手工新建,配置如下:
参数一定要根据实际情况修改:
command:python的路径
ags:mcp server的路径
PYTHONPATH:指向mcp server的路径
max_token_length:最大token
{
"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"
}
}
}
}
如果显示:ready则证明配置成功
六、在Host中配置Agent
Trae里的Agent可以串联调用一系列的mcp server和llm等完成特定任务,有点儿类似coze的工作流,但只不过是通过prompt来完成。
由于大模型的不确定性,所以prompt的好坏,则决定了完成任务的质量。
由于他不能像coze一样有明确的先后顺序,总是跳跃,导致有些步骤执行失败。
本次使用的Agent,前前后后调试了得有几十次!!!
本次Agent的设计:
1、根据用户输入的url,调用网页获取工具获得【标题】和【分块总数】
2、调用文件系统工具(trae内置的mcp),以【标题】新建子目录
3、针对每个返回块,循环执行,获取内容、翻译并保存为markdown文件动作
4、最终合并成1个markdown,并生成html
具体实现:
打开trae的Agent界面新建Agent
-
输入名字
-
promots - 核心中的核心
-
把刚新建的mcp包含在内 - 别忘了
七、在Host中使用!
在trae中打开聊天窗口,选中刚才建立的Agent,在聊天窗口输入url,剩下的就交给电脑吧。
执行过程截图:
执行输出文档截图:
最终结果文档部分截图:
完成啦✅
好了,今天的MCP+Agent实现借助大模型进行超长网页翻译就到这里了。希望这篇能帮到你~
一、大模型风口已至:月薪30K+的AI岗正在批量诞生
2025年大模型应用呈现爆发式增长,根据工信部最新数据:
国内大模型相关岗位缺口达47万
初级工程师平均薪资28K
70%企业存在"能用模型不会调优"的痛点
真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!
二、如何学习大模型 AI ?
🔥AI取代的不是人类,而是不会用AI的人!麦肯锡最新报告显示:掌握AI工具的从业者生产效率提升47%,薪资溢价达34%!🚀
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工
📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
* 大模型 AI 能干什么?
* 大模型是怎样获得「智能」的?
* 用好 AI 的核心心法
* 大模型应用业务架构
* 大模型应用技术架构
* 代码示例:向 GPT-3.5 灌入新知识
* 提示工程的意义和核心思想
* Prompt 典型构成
* 指令调优方法论
* 思维链和思维树
* Prompt 攻击和防范
* …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
* 为什么要做 RAG
* 搭建一个简单的 ChatPDF
* 检索的基础概念
* 什么是向量表示(Embeddings)
* 向量数据库与向量检索
* 基于向量检索的 RAG
* 搭建 RAG 系统的扩展知识
* 混合检索与 RAG-Fusion 简介
* 向量模型本地部署
* …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
* 为什么要做 RAG
* 什么是模型
* 什么是模型训练
* 求解器 & 损失函数简介
* 小实验2:手写一个简单的神经网络并训练它
* 什么是训练/预训练/微调/轻量化微调
* Transformer结构简介
* 轻量化微调
* 实验数据集的构建
* …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
* 硬件选型
* 带你了解全球大模型
* 使用国产大模型服务
* 搭建 OpenAI 代理
* 热身:基于阿里云 PAI 部署 Stable Diffusion
* 在本地计算机运行大模型
* 大模型的私有化部署
* 基于 vLLM 部署大模型
* 案例:如何优雅地在阿里云私有部署开源大模型
* 部署一套开源 LLM 项目
* 内容安全
* 互联网信息服务算法备案
* …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
更多推荐
所有评论(0)