MCP服务,阿里云百炼,Cline,mysql-mcp-server,MCP通信原理

news2025/5/10 23:48:34

简介

MCP(Model Context Protocol),模型上下文协议,是一种开放标准,用于将AI模型与外部数据源和工具建立安全的双向连接,它就像AI领域的USB-C接口,为AI模型提供了一种标准化方式来连接不同的数据源和服务,实现自动化工作流。MCP 由 Anthropic 与2024年底提出并开源。

MCP 让 AI 模型不再孤单,可以轻松访问本地文件、数据库,甚至远程的在线服务。

MCP 文档:https://modelcontextprotocol.io/introduction

MCP虽然说是服务,其实它只是连接大模型与下游服务的中间层,以阿里云百炼的 MySql MCP 为例,它是由nodejs开发,使用node运行,你需要配置mysql服务器的地址,而mysql mcp提供有限的几个工具来访问mysql。

因为大模型的不确定性,这导致MCP存在安全性问题,所以MCP一般只提供有限的能力,比如上面说的mysql mcp只提供read-only的操作。

MCP client 充当 LLM 和 MCP server 之间的桥梁,MCP client 的工作流程如下:

  • MCP client 首先从 MCP server 获取可用的工具列表。
  • 将用户的查询连同工具描述通过 function calling 一起发送给 LLM。
  • LLM 决定是否需要使用工具以及使用哪些工具。
  • 如果需要使用工具,MCP client 会通过 MCP server 执行相应的工具调用。
  • 工具调用的结果会被发送回 LLM。
  • LLM 基于所有信息生成自然语言响应。
  • 最后将响应展示给用户。
  • 我们可以在:https://modelcontextprotocol.io/clients,找到当前支持 MCP 协议的客户端程序。

使用 TypeScript 编写的 MCP server 可以通过 npx 命令来运行,使用 Python 编写的 MCP server 可以通过 uvx 命令来运行。

开源项目

MCP 客户端 awesome-mcp-clients 以及 https://glama.ai/mcp/clients,列出了很多MCP客户端。

MCP 服务端 awesome-mcp-servers 以及 https://glama.ai/mcp/servers,https://github.com/modelcontextprotocol/servers

其他:https://www.pulsemcp.com/servers

Cline

https://github.com/cline/cline

https://docs.cline.bot/mcp-servers/mcp

它是基于 VSCode 的 AI 助手插件,提供了对MCP的深度支持。Cline 会调用某一个 LLM 来对你的任务进行拆解,然后调用MCP服务完成任务。

环境要求:

  • Node.js 18.x or newer

    • Check by running: node --version
    • Install from: https://nodejs.org/
    • Required for JavaScript/TypeScript implementations
  • Python 3.10 or newer

    • Check by running: python --version
    • Install from: https://python.org/
    • Note: Some specialized implementations may require Python 3.11+
  • UV Package Manager

    • Modern Python package manager for dependency isolation

    • Install using:

      curl -LsSf https://astral.sh/uv/install.sh | sh

      Or: pip install uv

    • Verify with: uv --version

Cline有一个MCP Server Marketplace,在Cline中可以安装这些MCP服务。

作为一个AI助手,Cline能做的事情很多,比如让它生成一个网站,它会拆解任务并一步步执行。比如如下任务

任务:按照以下界面描述,使用 vue+vite+tailwind css 创建一个 web UI。这个 Web UI 可以用来搜索顾客的信息,搜到顾客信息以后点击各个部分对应的按钮可以看到顾客各个部分的详细情况。
界面描述:
图中的内容是一个顾客信息搜索界面,界面标题为“Patron Search”。界面包含以下元素:

1. 搜索栏
  - 标签:Patron NO.
  - 输入框:用于输入顾客编号
  - 搜索按钮:按钮上有放大镜图标

2. 状态标签
  - 四个状态标签:AC、IN、SU、BA

3. 信息折叠面板
  - 八个可折叠的面板,右侧有三角形图标展开/折叠
  - 面板标题:Member Detail, Active on floor status, Tier Change, Point Bucket, Gaming Details, Itinerary, Offers, Comments

在Cline执行命令的时候老是出现提示 Shell Integration Unavailable

在这里插入图片描述

官方说明 https://github.com/cline/cline/wiki/Troubleshooting-%E2%80%90-Shell-Integration-Unavailable

windows系统需要将默认的终端设置为 Git Bash。如果使用 PowerShell 其版本要求在v7+

关于npx,我的系统已经安装了npx,可能是在安装npm的时候自动安装的。

npx --help
Run a command from a local or remote npm package

Usage:
npm exec -- <pkg>[@<version>] [args...]
npm exec --package=<pkg>[@<version>] -- <cmd> [args...]
npm exec -c '<cmd> [args...]'
npm exec --package=foo -c '<cmd> [args...]'

Options:
[--package <package-spec> [--package <package-spec> ...]] [-c|--call <call>]
[-w|--workspace <workspace-name> [-w|--workspace <workspace-name> ...]]
[-ws|--workspaces] [--include-workspace-root]

alias: x

Run "npm help exec" for more info

npx 可以从github下载并运行MCP,它对应的配置为,以 filesystem MCP为例

{
    "mcpServers": {
      "filesystem": {
        "command": "npx",
        "args": [
          "-y",
          "@modelcontextprotocol/server-filesystem",
          "/Users/username/Desktop",
          "/path/to/other/allowed/dir"
        ]
      }
    }
  }

阿里云百炼

在阿里云百炼平台创建应用可以它的MCP服务,创建的应用可直接访问,整个过程中只有调用千问模型需要消耗费用,而MCP服务以及发布应用都是免费的。

官网:https://bailian.console.aliyun.com/?tab=app#/app-center

Cline实践

在 vscode 中使用 cline 调用一个本地运行的 Mysql MCP,其 README.md 已经说明了如何使用。

cd mcp
git clone https://github.com/dpflucas/mysql-mcp-server.git
cd mysql-mcp-server
npm install
npm run build
set MYSQL_HOST=xxxx
set MYSQL_PORT=3306
set MYSQL_USER=xxxx
set MYSQL_PASSWORD=xxxx
set MYSQL_DATABASE=xxxx
# 创建测试库和测试表
npm run test:setup

# 测试定义的工具
npm run test:tools

以上命令可以正常输出。

查看MCP的配置文件 mcp-settings-example.json

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["/absolute/path/to/mysql-mcp-server/build/index.js"],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your-mysql-user",
        "MYSQL_PASSWORD": "your-mysql-password",
        "MYSQL_DATABASE": "your-default-database"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

可以知道,运行此MCP的命令为node /absolute/path/to/mysql-mcp-server/build/index.js,且mysql的配置是在环境变量中,由于前面我们已经设置了环境变量,于是可以轻松启动MCP服务

> node D:/dev/php/magook/trunk/server/mcp/mysql-mcp-server/build/index.js
[Setup] MySQL configuration: {
  host: 'xxxx',
  port: 3306,
  user: 'xxxx',
  database: 'xxxx'
}
[Setup] Creating MySQL connection pool
[Setup] Starting MySQL MCP server
[Setup] MySQL MCP server running on stdio

ctrl+c 退出。

接下来,将这个MCP集成到Cline中去。

首先在vscode中安装Cline,打开Cline界面,点击右上角的MCP Server图标,点击Installed标签,点击Configure MCP Servers,将上面的mcp-settings-example.json内容粘贴进去,修改一下参数,保存即可,它会自动启动此MCP服务。

在这里插入图片描述

现在还需要配置一下大模型,点击Cline右上角的Settings图标,我们设置为阿里云百炼的qwen,注意,API Provider 选择OpenAI Compatible,然后Base URL为https://dashscope.aliyuncs.com/compatible-mode/v1,API Key自己去申请,有免费额度,Model ID 输入 qwen-max,点击 Done 保存。

点击 New Task 创建任务,勾选 Auto-approve 全部

统计一下mcp_test_db数据库有几张表,并列出表名

因为上面测试的时候我们已经创建了数据库和表。

在这里插入图片描述

我想查看Cline调用大模型的日志,但是还不知道怎么看。

阿里云百炼实践

在阿里云百炼平台创建一个应用并调用平台的MCP服务。

网址 https://bailian.console.aliyun.com/?tab=app#/app-market

应用 --> 应用管理 --> 新增应用,选择智能体应用

选择一个大模型,输入提示词

# 角色
你是一位专业的气象数据分析师,能够查询任意城市的未来4天天气,并生成可视化图表。

## 技能
### 技能 1: 查询天气数据
- 使用Amap Maps这个MCP服务,查询任意城市未来7天的天气数据。
- 获取的数据应包括但不限于温度、湿度、风速、降水量等关键气象指标。

### 技能 2: 生成可视化图表
- 将查询到的天气数据用QuickChart这个MCP服务转换为易于理解的可视化图表。
- 可视化图表可以是折线图、柱状图或热力图等形式,具体取决于用户的需求和数据特性。
- 确保图表清晰、美观且易于解读。

### 技能 3: 提供天气分析报告
- 根据查询到的天气数据,提供简要的天气分析报告。
- 报告应包括对未来4天天气趋势的总结,以及可能对用户活动产生影响的建议。

## 限制
- 仅提供与天气相关的数据和分析。
- 生成的图表必须基于查询到的实际天气数据。
- 如果需要调用外部工具或API,请明确说明并提供相应的调用方法。
- 所有输出的内容必须准确无误,不得包含任何误导性信息。

在技能那里添加MCP服务,勾选 Amap Maps 和 QuickChart

直接在右边的对话框输入“武汉”,即可看到效果

在这里插入图片描述

点击右上角的发布,切换到发布渠道,选择官方分享渠道,这样就可以为你的应用生成一个分享链接。

在这里插入图片描述

在百炼部署的 MCP 服务目前仅支持接入百炼应用,暂不支持在其他 MCP 客户端使用。

在这里插入图片描述

阿里云百炼平台计费说明:https://help.aliyun.com/zh/model-studio/new-free-quota#c67a9367f4z6f

MCP通信原理

https://docs.cline.bot/mcp-servers/mcp-transport-mechanisms

目前 MCP 支持 STDIO 模式(本地运行)和 SSE 模式(远程服务)2 种模式。

还是以 mysql-mcp-server 为例,此处以 stdio 为通信模式。

build/index.js为服务程序,其中定义了两个路由

列出所有工具:ListToolsRequestSchema --> tools/list
	tools 会被追加到 prompte 后面,这是典型的 Fuction Call模板
	
调用具体工具:CallToolRequestSchema -->tools/call

test-tools.js文件实现了启动服务,调用tool,处理数据的整个过程。

在stdio模式下,MCP 服务就是一个子进程,在子进程中运行node build/index.js

const server = spawn('node', [SERVER_PATH], { env });

在调用tool的时候,向子进程的stdin写入数据,格式为json,以\n为结束,

server.stdin.write(requestStr + '\n');

子进程处理完将结果接入stdout,调用者需要监听stdout事件

server.stdout.on('data', onData);

返回的结果也是字符串,用\n分割,每一行为一个消息。

使用标准输入输出进行通信有一些好处:

  • Locality: Runs on the same machine as Cline
  • Performance: Very low latency and overhead (no network stack involved)
  • Simplicity: Direct process communication without network configuration
  • Relationship: One-to-one relationship between client and server
  • Security: Inherently more secure as no network exposure

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2338599.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个项目中多个Composer的使用方法

composer是依赖管理工具。 有时我们会在一个项目中使用到多个composer&#xff0c;且每个版本不同。 前提&#xff1a;例如项目xyz根目录vendor中存在阿里云的对应代码。我现在需要再composer腾讯云短信发送的SDK。 1、随便找个位置新建文件夹&#xff0c;存储腾讯云短信发送…

MCP 应用案例-网络设备批量管理

案例背景 需求痛点 企业需管理数百台跨地域网络设备&#xff08;交换机/路由器&#xff09;&#xff0c;传统方式存在&#xff1a; 人工SSH登录效率低脚本维护成本高&#xff08;不同厂商CLI语法差异&#xff09;状态监控依赖独立监控系统 解决方案 通过MCP协议构建智能网络…

国产之光DeepSeek架构理解与应用分析02

本专栏 国产之光DeepSeek架构理解与应用分析-CSDN博客 国产之光DeepSeek架构理解与应用分析02-CSDN博客 前置的一些内容理解 GPU TPU NPU的区别&#xff1f; 设计目的 GPU&#xff1a;最初是为了加速图形渲染而设计的&#xff0c;用于处理图像和视频数据&#xff0c;以提供高…

对美团leaf的初步学习

我的项目中使用的雪花算法生成的全局订单号。但是考虑到了雪花算法可能会由于时钟回拨导致生成的全局id重复。于是去研究了美团的leaf服务&#xff1a;Leaf——美团点评分布式ID生成系统 - 美团技术团队&#xff0c;并总结出该文章。 自己项目中的应用 由于对订单表做了分表&…

Nacos深度剖析与实践应用之-负载均衡

&#x1f4a1;简介 Nacos不仅提供服务注册与发现功能&#xff0c;还内置了强大的负载均衡能力。Nacos的负载均衡机制主要应用于服务消费者从服务注册中心获取服务实例列表后&#xff0c;如何选择其中一个实例进行调用的过程。 &#x1f9e0; 学习目的 这篇文章我们将探讨负载…

Photoshop安装与配置--简单攻略版

下载地址:Photoshop软件工具下载 安装完成后&#xff0c;即可运行Photoshop.exe&#xff1b;打开工具页面后&#xff0c;按照下面简单配置即可 1.编辑-》首选项-》常规 或者直接快捷键CtrlK 暂存盘&#xff1a;一定要设置为非C盘 2.性能 3.文件处理 以上配置比较基础&#xf…

桌面级OTA测试解决方案:赋能智能网联汽车高效升级

一、前言 随着智能网联汽车的快速发展&#xff0c;OTA&#xff08;Over-The-Air&#xff09;技术已成为汽车软件更新和功能迭代的关键手段。为确保OTA升级的可靠性、安全性和效率&#xff0c;构建一套高效、便捷的桌面级OTA测试解决方案至关重要。 本方案基于Vector先进的软硬…

PG,TRPO,PPO,GRPO,DPO原理梳理

强化学习方法的分类 一、基础概念 Policy Model&#xff08;Actor Model&#xff09;&#xff1a;根据输入文本&#xff0c;预测下一个token的概率分布&#xff0c;输出下一个token也即Policy模型的“动作”。该模型需要训练&#xff0c;是我们最终得到的模型&#xff0c;并由上…

Cursor新版0.49.x发布

小子看到 Cursor 0.49.x 版本正式发布&#xff0c;截止今天已经有两个小patch版本&#xff01;本次更新聚焦于 自动化Rules生成、改进的 Agent Terminal 以及 MCP 图像支持&#xff0c;并带来了一系列旨在提升编码效率和协作能力的改进与修复。 以下是本次更新的详细内容&…

每日算法-250419

每日算法 - 2024年4月19日 记录今天完成的LeetCode算法题。 1710. 卡车上的最大单元数 题目描述 思路 贪心 解题过程 目标是最大化卡车可以装载的单元总数。根据贪心策略&#xff0c;我们应该优先装载单位体积&#xff08;每个箱子&#xff09;包含单元数 (numberOfUnitsPerB…

PDF转excel+json ,vue3+SpringBoot在线演示+附带源码

在线演示地址&#xff1a;Vite Vuehttp://www.xpclm.online/pdf-h5 源码gitee前后端地址&#xff1a; javapdfexcel: javaPDF转excelhttps://gitee.com/gaiya001/javapdfexcel.git 盖亚/vuepdfhttps://gitee.com/gaiya001/vuepdf.git 后续会推出 前端版本跟nestjs版本 识别复…

如何高效使用 Text to SQL 提升数据分析效率?四个关键应用场景解析

数据分析师和业务人员常常面临这样的困境&#xff1a;有大量数据等待分析&#xff0c;但 SQL 编写却成为效率瓶颈。即使对于经验丰富的数据分析师来说&#xff0c;编写复杂 SQL 查询也需要耗费大量时间&#xff1b;而对于不具备 SQL 专业知识的业务人员&#xff0c;数据分析则更…

分享一个DeepSeek+自建知识库实现人工智能,智能回答高级用法。

这个是我自己搞的DeepSeek大模型自建知识库相结合到一起实现了更强大的回答问题能力还有智能资源推荐等功能。如果感兴趣的小伙伴可以联系进行聊聊&#xff0c;这个成品已经有了实现了&#xff0c;所以可以融入到你的项目&#xff0c;或者毕设什么的还可以去参加比赛等等。 1.项…

jangow靶机笔记(Vulnhub)

环境准备&#xff1a; 靶机下载地址&#xff1a; https://download.vulnhub.com/jangow/jangow-01-1.0.1.ova kali地址&#xff1a;192.168.144.128 靶机&#xff08;jangow&#xff09;地址&#xff1a;192.168.144.180 一.信息收集 1.主机探测 使用arp-scan进行主机探…

PyTorch `flatten()` 和 `squeeze()` 区别

PyTorch flatten() 和 squeeze() 区别 在 PyTorch 里,flatten() 和 squeeze(0) 是两个不同的张量操作, 1. flatten() 方法 flatten() 方法用于把一个多维张量展开成一维张量。它会将张量里的所有元素按顺序排列成一个一维序列。 语法 torch.flatten(input, start_dim=

wordpress SMTP配置qq邮箱发送邮件,新版QQ邮箱授权码获取方法

新版的QQ邮箱界面不同了&#xff0c;以下是新版的设置方法&#xff1a; 1. 进入邮箱后&#xff0c;点右上角的设置图标&#xff1a; 2. 左下角的菜单里&#xff0c;选择“账号与安全” &#xff1a; 3. 然后如下图&#xff0c;开启SMTP 服务&#xff1a; 4. 按提示验证短信&am…

2025年最新版 Git和Github的绑定方法,以及通过Git提交文件至Github的具体流程(详细版)

文章目录 Git和Github的绑定方法与如何上传至代码仓库一. 注册 GitHub 账号二.如何创建自己的代码仓库&#xff1a;1.登入Github账号&#xff0c;完成登入后会进入如下界面&#xff1a;2.点击下图中红色框选的按钮中的下拉列表3.选择New repostitory4.进入创建界面后&#xff0…

基于LSTM-AutoEncoder的心电信号时间序列数据异常检测(PyTorch版)

心电信号&#xff08;ECG&#xff09;的异常检测对心血管疾病早期预警至关重要&#xff0c;但传统方法面临时序依赖建模不足与噪声敏感等问题。本文使用一种基于LSTM-AutoEncoder的深度时序异常检测框架&#xff0c;通过编码器-解码器结构捕捉心电信号的长期时空依赖特征&#…

JavaScript中的Event事件对象详解

一、事件对象&#xff08;Event&#xff09;概述 1. 事件对象的定义 event 对象是浏览器自动生成的对象&#xff0c;当用户与页面进行交互时&#xff08;如点击、键盘输入、鼠标移动等&#xff09;&#xff0c;事件触发时就会自动传递给事件处理函数。event 对象包含了与事件…

王牌学院,25西电通信工程学院(考研录取情况)

1、通信工程学院各个方向 2、通信工程学院近三年复试分数线对比 学长、学姐分析 由表可看出&#xff1a; 1、信息与通信工程25年相较于24年上升5分、军队指挥学25年相较于24年上升30分 2、新一代电子信息技术&#xff08;专硕&#xff09;25年相较于24年下降25分、通信工程&…