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 进行绑定:

查询使用量:

相关推荐
uhakadotcom3 分钟前
Javassist 入门指南:轻松操作 Java 字节码
后端·面试·github
霍珵蕴3 分钟前
Kotlin语言的软件工程
开发语言·后端·golang
Kx…………6 分钟前
Uni-app入门到精通:uni-app的基础组件
前端·css·学习·uni-app·html
巴巴博一9 分钟前
keep-alive缓存
前端·javascript·vue.js·缓存·typescript
Asthenia041216 分钟前
Java中Future的详细用法:异步and阻塞/-缺乏回调支持与异常处理有限
后端
Tipriest_17 分钟前
【前端扫盲】postman介绍及使用
前端·测试工具·postman
无名之逆22 分钟前
Hyperlane:高性能 Rust HTTP 服务器框架评测
服务器·开发语言·windows·后端·http·rust
褚翾澜40 分钟前
Bash语言的社区交流
开发语言·后端·golang
wuaro40 分钟前
JS的深浅拷贝
前端·javascript·html
Asthenia04121 小时前
JUC:CompletableFuture 详细用法讲解
后端