AI初认识(MCP -AI与数据系统的桥梁)

5 阅读10分钟

在上一篇文章中,我们学习了Function Calling——它让大模型能够调用外部函数,连接真实世界。通过Function Calling,大模型可以调用计算器做精确运算、调用地图API查询地点、调用数据库获取实时信息。

然而,Function Calling存在一个根本性问题:碎片化

每家模型厂商(OpenAI、Anthropic、Google)都有自己的函数调用格式。每接入一个新工具,开发者都需要为这个“模型-工具”组合编写特定的适配代码。如果有M个模型和N个工具,就需要开发 M×N 个连接器,维护成本极高。

这就是AI应用的“工具孤岛”困境。

MCP(模型上下文协议)  正是为了解决这个问题而诞生的。

一、MCP是什么?

MCP的相关信息:

项目具体信息
全称Model Context Protocol
中文名模型上下文协议
概念一个开放标准的通信协议,旨在为大语言模型提供标准化的方式连接各类数据源和工具
形象比喻就像为AI提供了通用的“USB-C接口”,任何支持MCP的模型都可以即插即用地调用任何支持MCP的工具
开发公司Anthropic(Claude大模型背后的公司)
发布时间2024年11月25日正式发布并开源

一句话理解

MCP = 让AI能力变得标准化、可插拔的基础设施协议

就像USB-C统一了各种外设的接口标准一样,MCP统一了AI模型与外部工具之间的通信标准。

二、为什么要用MCP?

2.1 没有MCP的问题:M×N的适配噩梦

在没有MCP的时代,假设你有:

  • 3个模型(GPT-4、Claude、Gemini)
  • 4个工具(天气API、数据库、文件系统、地图API)

你需要开发 3×4 = 12 个不同的适配器。每增加一个模型或工具,工作量线性增长。

2.2 有MCP的解决方案:M+N的优雅架构

有了MCP之后:

  • 每个模型只需适配MCP这一套标准(M次适配)
  • 每个工具也只需暴露MCP接口(N次适配)

总工作量 = M + N,从乘法变成了加法。

更重要的是:任何支持MCP的模型可以立即使用任何支持MCP的工具,无需额外开发。

2.3 核心价值

价值维度说明
减少重复开发同一个MCP服务器可在任何兼容客户端中复用
打破信息孤岛AI无缝访问本地和远程数据(文件、数据库、API)
提升AI能力形成“感知-决策-执行”闭环,完成复杂任务
开放生态任何人都可以创建和共享MCP服务器

三、MCP能解决什么样的问题?

3.1 大模型的固有缺陷(回顾)

还记得大模型的三大缺陷吗?

  1. 知识不全:无法覆盖所有垂直、非公开数据
  2. 信息滞后:训练数据有截止日期
  3. 缺乏真逻辑:依赖统计规律,精确计算不可靠

MCP正是解决这些缺陷的“钥匙”——它让大模型能够按需调用外部数据源和精确计算系统。

3.2 典型应用场景

场景说明示例
企业知识库让AI检索内部文档、工单、Wiki“查一下网卡故障的历史解决方案”
智能问数自然语言查询数据库“上季度销售额最高的产品是哪个?”
代码分析读取、理解、修改代码库“分析这个项目的依赖关系”
联网搜索获取实时信息“今天的头条新闻是什么?”
文件操作读写本地文件“把这份PDF总结成三点”
API调用调用第三方服务“帮我订一张明天去上海的机票”

四、MCP vs Function Calling:它们是什么关系?

这是很多人容易混淆的地方。我们来厘清一下。

维度Function CallingMCP
本质API调用机制通信协议标准
层级应用层调用方式基础设施层协议
标准化程度各厂商格式不同,互不兼容统一标准,即插即用
集成复杂度M×N(每对模型-工具需适配)M+N(一次适配,到处可用)
安全控制依赖各平台实现内置用户授权机制
生态开放性各厂商封闭生态开放标准,任何人都可贡献

它们不是替代关系,而是分工协作

  • Function Calling 是让模型“知道该调用什么工具”的智能决策层
  • MCP 是让工具调用“能够标准化互通”的基础设施层

可以这样理解:

Function Calling是“大脑”的决策机制,MCP是“神经系统”的通信标准。大脑决定要做什么,神经系统用统一的方式把指令传到各个器官。

在实际应用中,它们可以配合使用:

  • 模型通过Function Calling能力识别用户意图、决定调用哪个工具
  • 然后通过MCP协议将调用指令发送到对应的工具服务器

五、MCP的技术架构

5.1 核心组件

MCP采用客户端-服务器(Client-Server) 架构,包含三个核心角色:

组件职责示例
MCP Host发起请求的应用,用户交互入口Claude桌面版、Cursor、IDE
MCP Client集成在Host内部,管理与Server的连接负责请求标准化、响应处理
MCP Server提供具体功能的轻量级程序数据库服务器、文件服务器、天气API服务器

5.2 通信协议

MCP支持两种通信方式:

协议适用场景说明
Stdio本地服务调用进程间通信,低延迟
SSE远程服务调用HTTP + 服务端推送,适合分布式部署

5.3 架构总览图

image.png

六、实战案例:MCP在企业知识库中的应用

案例背景

某制造企业面临一个典型困境:大量故障其实不是第一次发生,但历史解决方案散落在工单系统、内部Wiki、PDF手册或工程师的个人笔记中,关键时刻难以快速召回。

解决方案:轻量级知识库MCP

openEuler团队推出的轻量级知识库MCP,核心能力如下:

能力说明
零外部依赖基于SQLite存储,无需部署重型向量数据库,内存<200MB
多格式导入支持PDF、DOCX、MD、TXT、PPTX、XLSX,甚至图片OCR
混合检索关键词检索(FTS5) + 语义向量检索,结果加权融合
可选联网增强本地知识不足时,自动调用GitHub API检索社区方案

实际效果

运维人员只需自然语言提问:

“在知识库中查询网卡故障怎么办?”

系统会自动:

  1. 解析故障现象
  2. 检索本地历史知识库匹配相似案例
  3. 生成包含“典型表现、解决方案、验证步骤”的结构化报告

核心价值

让宝贵的历史故障经验从“沉睡在归档文件夹”变成“可随时召回的智能记忆” ,大幅缩短平均修复时间(MTTR)。

七、实战案例:智能问数——自然语言查数据库

场景背景

企业内部有大量结构化数据(销售数据、学生成绩、生产报表),但非技术人员无法写SQL查询,IT部门疲于应付各种临时取数需求。

解决方案架构

用户输入:“每个班级学生占比图”
        │
        ▼
┌─────────────────────────────────────────┐
│  大模型理解意图,自动生成SQL              │
│  “SELECT class, COUNT(*) FROM students  │
│   GROUP BY class”                       │
└─────────────────────────────────────────┘
        │
        ▼
┌─────────────────────────────────────────┐
│  MySQL MCP Server 执行查询               │
│  返回数据:[{class:“一班”, count:32}, ...]│
└─────────────────────────────────────────┘
        │
        ▼
┌─────────────────────────────────────────┐
│  QuickChart MCP Server 生成图表          │
│  返回图表URL + 数据分析解读               │
└─────────────────────────────────────────┘

典型交互示例

用户提问系统行为
“每个年级有多少名学生?”自动生成GROUP BY SQL → 查库 → 返回统计结果
“成绩排名前10的学生”自动生成ORDER BY LIMIT SQL → 返回名单
“哪个老师教的学生最多?”识别关联查询 → 生成JOIN语句 → 返回结果

关键配置

在AI对话节点中配置MCP Server,并在提示词中明确角色定位:

“你是一位专业的数据分析专家,精通MySQL,能够熟练运用mcp-mysql工具进行SQL验证和查询。”

八、MCP的使用流程

8.1 整体流程

一个典型的MCP使用流程如下:

步骤1:用户发起请求
   │
   ▼
用户在支持MCP的客户端中用自然语言提出任务
例如:“帮我查询一下明天北京的天气”
   │
   ▼
步骤2:客户端解析与调用
   │
   ▼
MCP Client将请求发送给大模型 → 模型识别意图 → 决定调用哪个MCP Server
   │
   ▼
步骤3:服务器执行并返回
   │
   ▼
MCP Server执行具体操作(调用天气API)→ 将结果返回Client
   │
   ▼
步骤4:生成最终回复
   │
   ▼
Client将结果返回大模型 → 模型组织成自然语言 → 回复用户

8.2 最小可运行示例

下面是一个最简单的MCP Server示例——获取天气信息:

python

# weather_server.py
from mcp.server.fastmcp import FastMCP

# 创建MCP服务器实例
mcp = FastMCP("WeatherDemo")

# 用@mcp.tool()装饰器暴露一个工具
@mcp.tool()
def get_weather(city: str, unit: str = "celsius") -> str:
    """获取指定城市的天气信息"""
    # 这里可以调用真实的天气API
    return f"{city}天气:晴,22度{unit[0].upper()}"

# 运行服务器
if __name__ == "__main__":
    mcp.run()

运行方式

bash

# 启动MCP服务器
mcp run weather_server.py

# 或直接运行
python weather_server.py

配置到支持MCP的客户端(如Cursor、Claude桌面版)后,就可以用自然语言调用这个工具:

“帮我查一下上海的天气”

九、MCP生态现状

9.1 支持厂商

厂商/平台支持情况
Anthropic发起方,Claude桌面版原生支持
OpenAISam Altman亲自站台,逐步集成
腾讯云已宣布支持MCP
阿里云百炼已宣布支持MCP

9.2 应用场景扩展

行业应用
企业服务知识库、内部问答机器人
数据分析智能问数、报表自动生成
开发工具代码分析、文档生成
金融风控分析、财报解读
医疗影像分析、病历检索
生活服务地图查询、天气、机票预订

十、MCP的局限性与注意事项

任何技术都不是银弹。在使用MCP时,需要注意以下几点:

局限性说明
生态仍在建设期优质的MCP Server还不够丰富,需要社区共建
模型能力依赖需要大模型本身具备工具调用/Function Calling能力
本地部署门槛需要配置环境、管理多个Server进程
安全考量暴露外部工具时需考虑权限控制和数据安全
调试复杂度相比单一函数调用,分布式链路调试更复杂

适用场景建议

  • 适合使用MCP:需要集成多个外部工具、希望工具可复用的场景
  • 简单场景可暂缓:单一模型+单一工具的简单场景,直接用Function Calling更轻量

十一、总结

核心要点回顾

要点一句话总结
MCP是什么让AI连接万物的标准化通信协议,像USB-C一样即插即用
为什么需要解决M×N的工具适配问题,让AI生态从碎片走向统一
与FC的关系FC是决策机制,MCP是通信标准,两者分工协作
核心价值减少重复开发、打破信息孤岛、构建开放生态
当前状态2024年11月发布,生态快速发展中

一句话总结

MCP = 让大模型学会“用标准接口调用工具”——它统一了AI与外部世界的通信语言,让任何模型都能即插即用地使用任何工具。