Cline + MCP 开发实战

本文介绍如何将自有系统接入大模型,借助 MCP 通过 prompt 来查询自有系统服务的能力,文章目录大概结构如下:

  • 什么是 MCP
  • 为什么用 MCP
  • 自有系统接入 MCP Server
  • Cline 接入 MCP Server

1、什么是 MCP

MCP(Model Context Protocol)是一个开放协议,标准化应用程序如何为 LLM 提供上下文。将 MCP 视为 AI 应用程序的 USB-C 端口。正如 USB-C 提供了一种将设备连接到各种外围设备和配件的标准化方法一样,MCP 也提供了一种将 AI 模型连接到不同数据源和工具的标准化方法。官方给的架构如下:

2、为什么要用 MCP

大模型训练的数据是滞后的,如果要求大模型查询今日天气、应用最新版本等你会发现他无法给出结果,对于当前时刻所发生的事情,大模型无法给出精确的回复:

为了解决这个问题,很多常见的 AI 助手都会有 联网搜索的能力,AI 助手会将 prompt 发送给第三方搜索引擎,然后三方搜索引擎返回内容,AI 大模型再整合内容生成回答。这里的搜索引擎为 AI 大模型提供了额外的上下文信息。

对于公司内部自建数据来说,联网搜索就无法支持了,这里就需要 MCP,将自建数据以一种通用协议的方式暴露出来,让 AI 助手知道这个功能是做什么的,通过 MCP 打通到内部系统中去,例如最近有开发者给 flomo 开发的 mcp-server-flomo,通过与 AI 助手的沟通,将好的灵感内容直接记录到 flomo 中

对于公司内部使用的 AI 助手来说,将自有系统接入大模型也是一件非常提效的事情,例如分析用户日志的步骤,内部操作的话,流程如下:

  • 根据用户提供的账号,去账户系统查询 uid
  • 拿到 uid 后去日志系统里面查询用户日志
  • 下载日志,全局搜索日志是否有异常路径被记录

将用户系统与日志系统包装成 MCP Server 后,流程就变成了对答式了:

可能有的人觉得 MCP 并没有什么作用,但其实不然,MCP 最强的是将自建数据提供了上下文能力,相当于是把内部不同的系统建立了连接,这是自建服务不具有的能力

3、自有系统接入 MCP Server

这里以用户系统为例,自有系统提供通过用户 id 查询用户成绩的能力,我们把这个接口的访问通过 MCP Server 的方式包装起来供大模型使用,在示例仓库的 user-system-node 目录,是我简单开发的一个用户系统服务,提供了查询成绩的接口,执行 node index.js 启动服务,效果如下:

访问用户成绩的链接为 http://localhost:9898/scores?userId=2,让我们记住这个链接

接下来我们使用 create-typescript-server 初始化 MCP Server 项目,执行命令:

npx @modelcontextprotocol/create-server mcp-server-user

按照提示内容创建 MCP Server 需要的信息:

完成上述指令后,可以执行调试工具服务的命令:

npm run inspector

打开上述的 url,查看调试工具页面:

点击 Connect 即可连接 MCP Server 进行调试,调试面板如下:

MCP 服务器调试面板右侧主要用于请求 MCP 服务器内部定义的资源(Resources)、提示词(Prompts)、工具(Tools)等内容。我们可以在右侧的 Tools 栏目点 List Tools 获取 MCP 服务器内部实现的所有工具(Tools)。这里的 create_note是默认实现的 Tools,点击 Run Tool即可查看调试结果。

对于我们自有系统来说, 我们来创建自己的 Tools,找到 src/index.ts 的 ListToolsRequestSchema,申明自己 Tools 的能力,并且我们的能力需要提供用户 id ,如下的 user_scores就是我们申明的 Tools:

大模型会根据我们申明的 Tools 提供 uid 给我们,接下来,我们只需要在 CallToolRequestSchema 处理响应调用即可:

根据提供的 uid 我们请求了自有系统服务,拿到用户成绩并返回。

执行构建项目指令:

npm run build

启动 MCP 调试:

npm run inspector

我们可以看到 List Tool 已经可以看到我们的 user_scores,我们来运行这个 Tool 看下效果:

已经成功查询到用户 id 为 1 的成绩。

MCP Server 已经调试完成,接下来,我们就要使用 MCP Host 来调用,这里我准备使用 Cline 来完成

4、Cline 接入 MCP Server

打开 VS Code,安装 Cline 插件:

安装完成后,我们来配置下 MCP Server(这里会要求你登录 Cline,按照提示完成登录即可):

  • 点击左侧的 Cline 图标
  • 点击 MCP Server 的 icon
  • 选择 Installed选项卡
  • 点击 Configure MCP Server
  • 右边填入自己 MCP Server 的构建产物(build 路径下)
  • 点击 Done完成 MCP Server 的配置

然后我们在输入框输入 prompt :帮我查询用户 id 为 2 的成绩

Cline 已经识别到 user_scores 这个 MCP,我们点击 Approve继续:

MCP 帮我们查询到了用户成绩,并且还做了整理的输出,然后继续输入提示词,帮我算下平均成绩,大模型也能继续进行计算输出。

5、更换模型

Cline 默认绑定的是 claude 模型,虽然可以免费使用一下,但是也太贵了,在测试内部的查询系统时(数据量有点大),一次访问折算下来居然要 1 RMB,属实是消费不起:

这里我使用的是 Gemini,申请 API Key 链接:aistudio.google.com/apikey,在 Cline 进行绑定:

查询使用量:

相关推荐
前端小巷子22 分钟前
Web开发中的文件上传
前端·javascript·面试
M1A134 分钟前
TCP/IP协议精解:IP协议——互联网世界的邮政编码系统
后端·网络协议·tcp/ip
逸风尊者41 分钟前
开发易掌握的知识:GeoHash查找附近空闲车辆
java·后端
翻滚吧键盘1 小时前
{{ }}和v-on:click
前端·vue.js
上单带刀不带妹1 小时前
手写 Vue 中虚拟 DOM 到真实 DOM 的完整过程
开发语言·前端·javascript·vue.js·前端框架
杨进军2 小时前
React 创建根节点 createRoot
前端·react.js·前端框架
ModyQyW2 小时前
用 AI 驱动 wot-design-uni 开发小程序
前端·uni-app
程序猿阿越2 小时前
Kafka源码(一)Controller选举与创建Topic
java·后端·源码
程序员爱钓鱼2 小时前
Go语言项目工程化 — 常见开发工具与 CI/CD 支持
开发语言·后端·golang·gin
说码解字2 小时前
Kotlin lazy 委托的底层实现原理
前端