MCP调用时上下文Token累积

Dify 在调用MCP时,会将MCP返回的响应和上下文累积在一起,然后撑爆模型的最大Token限制

可能的解决办法:

  1. 尽量用Workflow而不是Chatflow去新建项目

  2. 用“对话变量”做递归总结,把关键事实、下一步目标等摘要化地存起来,替代整段历史

  3. 将MCP工具做为一个独立的节点,明确调用顺序,这个路线比较适合确定步骤的自动化

  4. 在每次工具调用后,差一个输出清洗/摘要的节点

MCP在设计之初,似乎并不是像playwirght MCP这样执行一个步骤就要调用一个工具的,不但会造成巨额的钱财输出,也会让整个执行过程变得非常非常慢。尽可能减少大模型在这个过程中的参与,或者直接将大模型部署到本地

Ngrok

Ngrok开启内网穿透后,可能会被dify拒绝访问,此时要加--host-header=rewrite参数,这个参数常常能解决隧道访问时遇到的 403 Forbidden 问题。它的主要作用是重写HTTP请求头中的Host字段,让经过ngrok转发的请求看起来像是直接发给本地服务的一样,从而绕过一些安全检查。

ngrok http 8089 --host-header=rewrite

Playwright MCP

本地机docker部署dify后,注册Playwright MCP到dify中时,MCP的http地址应该为

http://host.docker.internal:你的端口号/mcp

host.docker.internal是docker用来访问宿主机的专用host名

但是会遇到403的情况,这个时候,在启动playwright MCP需要加-allowed-hosts "*" 来允许host范围,当然生产环境不能用"*" 允许所有的host来访问,具体启动playwright MCP的命令如下:

npx @playwright/mcp@latest --shared-browser-context --isolated --port 8089 --host 0.0.0.0 --allowed-hosts "*"

MCP配置

mcp的唯一标识符不能有大写字母,只能小写字母、下划线、数字和连字符,最多24个字符

文章作者: Vsoapmac
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 soap的会员制餐厅
坑点记录 坑点记录
喜欢就支持一下吧