# CoMi调用Fetch网页内容抓取MCP

# 需求

用户需求:用户部署了CoMi,并且CoMi服务器能请求外网地址,用户希望针对CoMi2.0提供一个输入外网网页地址,AI自动抓取网页内容并做总结的Agent。

需求分析:首先,CoMi以及大模型本身不具备直接抓取网页内容的能力,这个属于爬虫范畴。然后,CoMi作为智能体平台,具备调用第三方工具能力,如果有第三方工具具备抓取网页能力,则可以实现此需求。

经过调研, 魔搭社区MCP广场 (opens new window) - Fetch网页内容抓取 MCP具备此能力,遂参考此平台的MCP进行测试验证。

注:网页抓取工具不局限于本示例,项目上也可以用其它平台的工具

# 前提条件

Comi已经配置好大模型并且能够正常运行。

CoMi服务器能通外网,服务器能访问到魔搭社区mcp接口平台。

# 获取Fetch网页内容抓取MCP

访问 魔搭社区MCP广场 (opens new window) - Fetch网页内容抓取MCP页面,右侧服务配置设置获取MCP地址(该社区需要注册登录):

  • 传输类型选择SSE
  • 鉴权类型选择Bearer Token,有效期按需配置

1769418084858.png

最终获得MCP请求格式如下:

{
  "mcpServers": {
    "fetch": {
      "type": "sse",
      "url": "https://mcp.api-inference.modelscope.net/86aexxxxxx/sse",
      "headers": {
        "Authorization": "Bearer ms-1afxxxxxxxxxxxxxxf6"
      }
    }
  }
}

1769418384366.png

# COMI配置MCP过程

# MCP工具创建

集团管理员(企业版是单位管理员)访问CoMiBuilder → 资源库 → 工具 → 自定义工具 → 创建按钮,创建一个MCP接口,填写内容如下:

  • 接入方式选择Mcp接口
  • ServerUrl填写上面获取的MCP中的url信息,示例如 https://mcp.api-inference.modelscope.net/86aexxxxxx/sse
  • Headers需要添加一行:参数名填写 Authorization , 参数值填写上面获取的MCP中的值,示例如 Bearer ms-1afxxxxxxxxxxxxxxf6

1769154374929.png

确认Mcp无误后,可以在详情页面进行调试,调试无误后,点击保存并发布为正式:

1769418818485.png

# CoMi创建智能体并引用MCP

访问CoMiBuilder → 智能体工作室 → Agent → 新建一个Agent,引入上一步创建发布的MCP工具,同时维护系统提示词,引导Agent调用MCP工具。

系统提示词内容参考:

- Role: 网页分析Agent
- Background: 用户需要一个能够自动抓取网页内容并进行结构化分析的工具,以快速获取网页的核心信息。
- Profile: 你是一个网页分析Agent,专注于通过抓取获取网页内容,并输出结构化的分析结果,包括网页地址、简介和概述。
- Skills: 你具备网页内容抓取、信息提取和结构化输出的能力,能够高效地处理单个网页请求并确保输出的准确性和完整性。
- Goals: 根据用户提供的网页地址,抓取并分析网页内容,输出结构化的分析结果,包括网页地址、简介和概述。
- Constrains:
  - 抓取内容的最大长度为10000字符。
  - 只抓取一次,如果第一次抓取内容不全,也不要重新抓取,仅取当前的内容做总结分析即可。
  - 如果用户未提供网页地址,拒绝回答,提示用户输入网址。
  - 如果用户一次输入多个网址,只分析第一个,其余忽略。
- OutputFormat:
  - 网页地址:xxx
  - 网页简介:xxx(100字内)
  - 网页概述:xxx(1000字内)
- Workflow:
  1. 检查用户输入是否包含网页地址。
  2. 如果没有网页地址,提示用户输入网址。
  3. 如果有多个网址,只选择第一个网址进行分析,调用fetch工具抓取网页内容,设置max_length为10000。
  4. 只抓取一次,如果第一次抓取内容不全,也不要重新抓取,即刻进行分析结果。
  5. 输出结构化的分析结果,包括网页地址、简介和概述。
  6. 输出结果不要带你的分析过程,按照如下示例做标准化输出即可。
- Examples:
  - 例子1:用户输入网址 `https://example.com`
    - 网页地址:https://example.com
    - 网页简介:示例网站,提供基础网页内容。
    - 网页概述:该网站是一个示例网站,用于演示网页抓取和分析功能。网站内容包括基本的HTML结构和一些示例文本,用于测试抓取工具的性能和准确性。
  - 例子2:用户输入网址 `https://news.example.com`
    - 网页地址:https://news.example.com
    - 网页简介:新闻网站,提供最新资讯。
    - 网页概述:该网站是一个新闻资讯平台,提供最新的新闻报道和分析。网站内容包括多个新闻分类,如政治、经济、科技等,用户可以根据兴趣浏览和搜索新闻。网站采用分页加载方式,抓取工具需多次调用以获取完整内容。
  - 例子3:用户输入多个网址 `https://example.com, https://news.example.com`
    - 网页地址:https://example.com
    - 网页简介:示例网站,提供基础网页内容。
    - 网页概述:该网站是一个示例网站,用于演示网页抓取和分析功能。网站内容包括基本的HTML结构和一些示例文本,用于测试抓取工具的性能和准确性。

1769419038502.png

# 后台测试效果

通过配置测试,效果符合预期:

1769419358802.png

# 问题和优化

# 问题一:未按预期传参数给MCP

测试发现:按Mcp手册说明,网页一次抓取5000字符,但是从调试日志看到模型引导Agent每次只抓取500字符,不符合预期。

解决方案:这种情况跟大模型本身能力,以及Mcp参数定义清晰度有关,这种一般需要在系统提示词中主动说明传多少参数。系统提示词示例如: 调用fetch工具抓取网页内容,设置max_length为10000 ,这样设置之后,一般模型就会按照要求传递参数。

其它Mcp参数同理:在系统提示词中明确标注说明,提出要求!

1769420080446.png

# 问题二:低参数模型无法按系统提示词要求执行

测试发现: 系统提示词明确提出只抓取一次网页,及时一次未抓取全也不再抓取 ,如果使用qwen-plus、deepSeek-chat这种公有云官方旗舰模型,实测效果能达到预期;但是如果使用qwen3-32B这种低参数模型,发现模型会进行多次循环抓取,根本不按照系统提示词要求运行!

解决方案:实测调整系统提示词方法无法解决问题,这里只能说明低参模型能力明显存在差异 -- 一定要尽量用高参、有效的旗舰模型。这种对本地化模型部署的用户存在挑战:qwen3-30B是最低推荐,并且推荐尽量增加足够GPU算力部署高参模型,但这种低参模型跟qwen3-235B这种旗舰模型能力肯定存在很大差异。

1769421393181.png

1769422117239.png

1769421804288.png

1769421812520.png

编撰人:het