为 AI 模型赋予「三头六臂」:MCP 服务实用指南

03/03 17:30

借助 MCP,AI 模型可以真正完成我们想要它做的事情,而不仅仅局限于你问我答的单一对话场景。


如果用机器人来比喻市面上的 AI 产品——

不断迭代更新的 AI 模型,比如 DeepSeek-R1、GTP4o、Claude 3.5 sonnet,就像是机器人的大脑,处理任务,返回结果;

面向用户推出的 app,比如 ChatGPT、DeepSeek、Claude,让我们得以与 AI 模型沟通,就好像是机器人的耳与口;

能够调用 AI 模型的 API,则像是脑机接口,直接将信息传输给大脑,并接收大脑返回的信息。

但如何调动机器人的躯干和四肢,让它直接为我们做事呢?本文接下来要介绍的 MCP 就能实现。MCP 的全称是 Model Context Protocal,是由 Anthropic 发起的开放协议,提供了一种将 AI 模型连接到不同数据源和工具的标准化方法。基于这种协议搭建的 MCP 服务能让 AI 获得「三头六臂」。

目前,Anthropic 和第三方已经提供了不少 MCP 服务,比如:

  • Anthropic 自己推出的服务:
    • Filesystem ,AI 可以读写、创建或是移动本地文件
    • Slack ,查看和回复 Slack 频道消息
    • Brave Search ,使用 Brave 的 Search API 进行 Web 和本地搜索
    • Fetch ,网页内容的获取和转换
    • Sequential Thinking ,帮助大模型「deep think」,将任务细分成多个步骤依次完成
    • Google Maps ,从谷歌地图获取定位、路线和地点详细信息
  • 第三方提供的官方服务:
  • 用户贡献的开源服务:
    • MySQL MCP ,读写 MySQL 数据库数据,以及执行 SQL 查询
    • Notion MCP ,通过 Notion API 与 Notion 工作区交互

更多 MCP 服务可以查看 Anthropic 官方文档

这些服务为 AI 模型处理任务的能力带来的提升,我认为可以总结为以下三点:

  • 指定信源:如果直接与训练好的 AI 模型对话,它回答问题依据的要么是训练模型时使用的语料,要么是在网上搜索的信息。这些数据缺乏可信度,具体到工作生活中的某个场景,又因为缺乏针对性而导致 AI 模型的回复只能是泛泛而谈。借助 MCP 服务,我们可以让 AI 模型从本地文件、数据库、第三方平台(如Google Drive、Google Maps、Notion)来获取数据,根据问题指定数据源,来得到可采纳度更高的答案。
  • 任务执行:很多时候提问只是第一步,在现有的 AI app 中得到答案后,我们往往需要根据 AI 模型的回答再去完成其他的操作,或是将 AI 模型的回答粘贴到他处。借助 MCP 服务,我们可以让 AI 模型直接完成后续的动作。比如在 Todoist 中创建待办,在 Obsidian 和 Notion 中创建笔记,在 Slack 中回复消息,在 GitHub 上提交文件。
  • 模型无关:MCP 是一个公开标准,并不依附于特定的模型或提供商(尽管目前事实上是由 Anthropic 主导)。比如 Memory 这个服务可以在本地保存你和 AI 聊天过程中与你有关的信息,后续即便你切换成其他模型,也不会损失已有的信息。又比如 Brave Search 提供的网页搜索能力,Fetch 提供的网页信息抓取能力,Sequential Thinking 提供的任务规划能力等等,与任何模型搭配都能起到提升效果。

如何配置 MCP 服务

基于 Anthropic 官方文档的说明,要使用 MCP 服务,首先你需要有一个支持 MCP 协议的客户端,目前主要包括:

  • Claude 客户端;
  • IDE 软件,如 Cursor(需要调整配置文件)、Windsurf;
  • 插件,比如 VS Code 插件 Cline、Continue,Emacs 插件 mcp.el;
  • 自己搭建客户端(官方文档有完整教程,适合喜欢折腾的同学)。

其次你需要在客户端的 MCP 配置文件中添加配置代码。比如我使用 Windsurf 作为 MCP 客户端,配置了 Brave Searchfetchfilesystemmysqlsequential-thinking 这五个 MCP 服务,则需在mcp_config.json文件中配置如下:

{
  "mcpServers": {
    "sequential-thinking": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sequential-thinking"
      ]
    },
    "mysql": {
      "command": "uv",
      "args": [
        "--directory",
        "/opt/homebrew/lib/python3.11/site-packages/mysql_mcp_server",
        "run",
        "mysql_mcp_server"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "...", // 数据库密码
        "MYSQL_DATABASE": "..." // database 名称
      }
    },
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "..." // 允许访问的文件夹路径
      ]
    },
    "brave-search": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-brave-search"
      ],
      "env": {
        "BRAVE_API_KEY": "..." // brave-search 创建的 API Key
      }
    },
    "fetch": {
      "command": "uvx",
      "args": [
        "mcp-server-fetch"
      ]
    }
  }
}

如果你使用的是 Claude 客户端,部分服务也提供了命令行来快速添加。

应用场景举例

接下来我以两个场景演示 MCP 对 AI 模型的提升效果。使用的 MCP 客户端是 Windsurf,AI 模型是 Windsurf 软件提供的 Cascade Base(这个模型肯定远不如 Claude sonnet 3.5 或是 GPT-4o,但是它免费😊。所以下面展示的生成质量可能不是特别好,重点看方法)。

抓取网页信息并总结

场景介绍

这个例子我希望 AI 模型完成以下任务:

  1. 从「有知有行」网站的「保险保障」专题页面上抓取链接,并将每个链接的正文信息保存为单独的文件;
  2. 总结全部保存文件的内容,形成专门的总结文档。

我提交给 AI 模型的 prompt 如下:

使用 sequential-thinking 思考并完成下面的工作:
使用 fetch 工具查询网址:https://youzhiyouxing.cn/topics/skeleton/nodes/32,并获取网页正文中的每个链接的内容,使用 filesystem 工具将每个网页的内容保存为一个单独的文件,保存在 MCPtest-文档 文件夹中

使用 sequential-thinking 思考并完成下面的工作: 
使用 filesystem 工具读取 MCPtest-document 文件夹中全部文件的内容,形成条理清晰的总结,为每一条总结注释来源,并保存在 MCPtest-文档 文件夹中

会员专属文章,欢迎加入少数派会员。
优质内容
权益周边
会员社群
power+
评论区
全部评论0
成为少数派会员方可评论,立即加入 。若已是少数派会员,点击登录
还没有评论,来发表第一个评论吧
全部评论
还没有评论,来发表第一个评论吧
成为少数派会员方可评论,立即加入 。若已是少数派会员,点击登录
会员新功能
内容侧边栏
点击这里拉开侧边栏,即可查看会员内容列表,快速切换内容。