一、大语言模型存在的问题

大语言模型虽然拥有强大的知识储备和语言理解能力,但却面临着诸多困境。它们就像被困在虚拟世界中的大脑,只能提供信息,无法直接与现实世界互动。例如:它们的知识库更新速度有限,无法获取最新的实时信息,如天气、股价等;它们无法根据用户的特定需求提供个性化服务,只能提供通用的信息;它们也无法处理复杂任务,因为许多现实世界的任务需要多个步骤和工具的协同配合。此外,大语言模型还容易产生“幻觉”,生成不准确或虚构的信息。

二、Function Calling(函数调用)

2.1 为何出现Function Calling技术

为了解决这些问题,Function Calling应运而生。它就像为大语言模型配备了“手脚”,让它们能够调用外部工具,执行实际操作,与现实世界互动。Function Calling的核心思想是将大语言模型的语言理解能力与外部工具的功能结合起来,让大语言模型能够理解用户的意图,并调用合适的工具来完成任务。

2.2 Function Calling 解决的问题

  • 增强行动力:通过调用外部工具,大语言模型可以完成各种实际操作,如调用天气API获取实时天气信息、调用订票网站API预订机票、调用日历API安排会议等。

  • 获取实时信息:打破了知识库更新速度的限制,能够及时获取最新的实时信息,为用户提供更准确的答案。

  • 提供个性化服务:根据用户的特定需求,调用相应的工具,提供个性化的服务,满足用户的多样化需求。

  • 处理复杂任务:能够协调多个工具的协同配合,处理复杂的任务,如安排旅行、处理客户订单等。

  • 减少“幻觉”:通过与外部工具的交互,获取真实的数据和信息,减少生成不准确或虚构信息的可能性。

比如扣子里的插件,本质上就是大模型外挂的函数,大模型会理解用户的问题,调用对应的工具。

三、MCP技术

3.1 什么是MCP

MCP(Model ContextProtocol)是模型上下文协议,它允许大型语言模型(LLM)通过协议与外部工具或服务交互,动态获取实时数据或执行操作。简单来说,它让模型不再局限于静态知识库,而是能像人类一样调用搜索引擎、访问本地文件、连接API服务,甚至操作第三方软件。这种能力在需要实时信息(如天气、新闻)或复杂任务(如数据分析)的场景中至关重要。

3.2 MCP 核心概念

MCP 遵循客户端-服务器架构(client-server),其中包含以下几个核心概念:

MCP 主机(MCP Hosts):发起请求的 LLM 应用程序(例如 Claude Desktop、Cursor、Cherry-Studio、Dify)。

MCP 客户端(MCP Clients):在主机程序内部,与 MCP server 保持 1:1 的连接。

MCP 服务器(MCP Servers):为 MCP client 提供上下文、工具和 prompt 信息。

本地资源(Local Resources):本地计算机中可供 MCP server 安全访问的资源(例如文件、数据库)。

远程资源(Remote Resources):MCP server 可以连接到的远程资源(例如通过 API)

3.3 MCP运行原理

3.4 MCP的两种运行模式

1)STDIO模式(本地运行)

特点:本地安装运行MCP Server,但需配置开发环境。

配置步骤:

安装依赖:需Python(推荐用uv安装)和NodeJS(推荐bun代替npm),Windows/MacOS/Linux均支持

添加MCP服务:在Cherry Studio->Settings->MCP Servers中,选择Edit JSON,填写mcpServers配置内容。

2)SSE模式(远程服务)

特点:无需本地环境,仅需输入服务器URL,适合调用云端API(如天气查询、路线规划)。

配置步骤:直接输入SSE服务地址即可,例如集成高德路线规划能力。

3.5 常见的MCP-Server网站

GitHub:https://github.com/modelcontextprotocol/servers

GitHub:https://github.com/punkpeye/awesome-mcp-servers

Smithery:https://smithery.ai/

魔搭社区(国内):https://www.modelscope.cn/mcp

四、CherryStudio环境准备

目前支持mcp协议的工具有Cursor、Claude Desktop、vscode中的Cline插件、CherryStudio等。

4.1 安装最新版CherryStudio

官网:https://www.cherry-ai.com/

4.2 安装uv和Bun

先安装uv和Bun工具(用来管理python和node.js的程序)

五、CherryStudio配置MCP-Server

5.1 本地mcp-server

filesystem(本地文件系统)

打开魔搭社区mcp,找到filesystem,查看json配置(注意授权的目录修改为自己的目录)

将页面中的配置信息,拷贝到cherrystudio中,点击保存。

保存json后,在mcp服务器列表可以看到filesystem,点击进入filesystem详情,打开开关。

在聊天窗口里,选择对应的mcp-server即可

mysql

本地安装mysql_mcp_server

pip install mysql_mcp_server

在cherrystudio配置中,添加以下配置

注意:mcpServers那行不用复制,数据库相关信息改成自己的

{
  "mcpServers": {
    "mysql": {
      "command": "mysql_mcp_server",
      "args": [
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "123456",
        "MYSQL_DATABASE": "mtx"
      }
    }
  }
}

最后在cherrystudio中开启mcp服务器

playwright(浏览器自动化)

json配置

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

5.2 远程mcp-server

Fetch(网页内容抓取)

在魔塔社区中,带有“Hosted”标签的mcp,代表已经在魔塔服务器上部署了mcp-server

进入mcp详情页面,点击“连接”

复制url

添加MCP服务器

六、MCP开发

基于fastmcp快速开发一个mcp工具。

  1. 安装 fastmcp

    pip install fastmcp

  2. 编写代码,封装函数,添加mcp装饰器

    # 创建mcp对象
    mcp = FastMCP()
    
    # 封装对外暴漏的mcp工具
    @mcp.tool("query_data")
    def query_data():
        """
        函数功能介绍
        详细入参格式和参数含义
        详细返回值格式和含义
        """
        # 具体代码实现...
    
    # 主函数
    if __name__ == '__main__':
        # 传输类型主要有stdio、sse
        mcp.run(transport="sse", port=8000)
  3. 在Mcp客户端软件中进行配置

在CherryStudio、Cursor、dify等客户端中进行配置。

{
  "server-name": {
    "transport": "sse",
    "url": "http://host.docker.internal:8000/sse/"
  }
}

七、Dify集成MCP

首先需要把dify升级为最新版。

安装插件

添加节点“Agent”

配置策略

配置Mcp(dify只支持远程MCP Server)

{
  "prometheus": {
    "transport": "sse",
    "url": "http://host.docker.internal:8000/sse/"
  }
}

配置大模型提示词和用户提示词

Logo

ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单!

更多推荐