侧边栏壁纸
  • 累计撰写 276 篇文章
  • 累计创建 142 个标签
  • 累计收到 18 条评论

目 录CONTENT

文章目录

Learning AI - MCP

Sherlock
2025-04-22 / 0 评论 / 0 点赞 / 17 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Model Context Protocol (MCP)

MCP 是一个开放协议,它为应用程序向 LLM 提供上下文的方式进行了标准化。

你可以将 MCP 想象成 AI 应用程序的 USB-C 接口。就像 USB-C 为设备连接各种外设和配件提供了标准化的方式一样,MCP 为 AI 模型连接各种数据源和工具提供了标准化的接口。

用于工具和资源通过结构化输入/输出将代理连接到工具、API 和资源。

工具 VS 代理

  • 工具是具有结构化输入和输出以及(通常)已知行为的基元。
  • 代理是自治应用程序,可以通过使用工具、推理和用户交互来完成新任务。

    代理应用程序必须同时使用工具和代理来实现其用户的目标。

Agent2Agent

from google,建议将 MCP 用于工具,将 A2A 用于代理。
Agent2Agent.png
AgenticApplications.png

A2A (Agent2Agent 协议) 用于代理 - 代理协作不同代理之间动态、多模式通信,无需共享内存、资源和工具。

模型上下文协议 (MCP) 是将 LLM 与数据、资源和工具连接起来的新兴标准。我们已经观察到 MCP 在不同模型和框架中标准化了“函数调用”。

这正在创建一个由工具服务提供商组成的生态系统,并大大降低了将代理与工具和数据连接起来的复杂性。我们预计,随着越来越多的框架、服务提供商和平台采用 MCP,这一趋势将继续下去。

A2A 专注于一个不同的问题。A2A 是一种应用程序级协议,使代理能够在其自然模式中进行协作。

它允许代理以代理(或用户)而不是工具的身份进行通信。我们希望 A2A 作为 MCP 的补充获得采用,从而支持代理生态系统,并将与社区公开合作以实现这一目标。

本地部署 MySQL MCP Server

先给本地 Cherry Studio 使用,后续Dify支持了之后,再折腾Dify版本的。

安装 MCP 服务

# 创建 mcp server 目录
mkdir /Users/sherlock/dev/mcp_servers/

# 下载 MySQL MCP Server 代码
## 注意:Requires: Python >=3.11
git clone https://github.com/designcomputer/mysql_mcp_server.git

# 可能需要升级下 pip 版本
pip3 install --upgrade pip

# 本地mac的python版本太低了,先安装下python 3.11版本
brew update
brew install xz
brew install python@3.11

# 进入 MySQL MCP Server 目录,安装依赖
cd mysql_mcp_server
pip3.11 install -r requirements.txt

# 安装 uv
pip install uv
uv --version
where uv

# 安装qwen2.5模型,在CherryStudio中添加,并设置模型类型为 工具
ollama run qwen2.5

配置 Cherry Studio

配置的MCP Json如下

{
  "mcpServers": {
    "mysql_mcp": {
      "name": "MySQL MCP 服务器",
      "description": "",
      "isActive": true,
      "registryUrl": "https://pypi.tuna.tsinghua.edu.cn/simple",
      "command": "/opt/homebrew/bin/uv",
      "args": [
        "--directory",
        "/Users/sherlock/dev/mcp_servers/mysql_mcp_server",
        "run",
        "mysql_mcp_server"
      ],
      "env": {
        "MYSQL_HOST": "xxx",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "xxx",
        "MYSQL_DATABASE": "cnarea"
      },
      "disabledTools": []
    }
  }
}

新建聊天助手

选择qwen2.5模型,并在对话框中开启 MCP 选中 MySQL MCP Server

配置提示词

你是一个查询助手,可以通过MCP Server连接mysql服务查询数据。

数据库中有一张中国行政区划表,表名为cnarea_2023,表为父子关系表,特点如下:
1、每个记录(行)可以有一个父记录。
2、根节点(没有父记录的记录)被称为顶级节点即省级区划节点。
3、多个记录可以共享同一个父记录。

字段说明:
1、行政地区名称字段是name
2、行政代码字段是code
3、父级行政代码字段是parent_code

创建表的语句如下:
CREATE TABLE `cnarea_2023` (
  `id` mediumint unsigned NOT NULL AUTO_INCREMENT,
  `level` tinyint unsigned NOT NULL COMMENT '层级',
  `parent_code` bigint unsigned NOT NULL DEFAULT '0' COMMENT '父级行政代码',
  `area_code` bigint unsigned NOT NULL DEFAULT '0' COMMENT '行政代码',
  `zip_code` mediumint(6) unsigned zerofill NOT NULL DEFAULT '000000' COMMENT '邮政编码',
  `city_code` char(6) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '区号',
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '名称',
  `short_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '简称',
  `merger_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '组合名',
  `pinyin` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '拼音',
  `lng` decimal(10,6) NOT NULL DEFAULT '0.000000' COMMENT '经度',
  `lat` decimal(10,6) NOT NULL DEFAULT '0.000000' COMMENT '纬度',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_code` (`area_code`) USING BTREE,
  KEY `idx_parent_code` (`parent_code`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=743299 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='中国行政地区表';

测试效果

可以直接提问了,例如:

东莞市下面只有镇没有区吗?

参考:https://www.panziye.com/ai/16004.html
https://docs.cherry-ai.com/advanced-basic/mcp/config
https://github.com/designcomputer/mysql_mcp_server
https://pypi.org/project/mysql-mcp-server/

0
AI
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区