数据库AI方向探索-MCP原理解析&DB方向实战|得物技术


                                                                                                                                                <h1>一、MCP设计理念</h1> 

在浅析 MCP 原理之前,有必要搞清楚两个问题:MCP 是什么?为什么会出现? 以此明晰它存在的价值和意义。

首先,MCP(Model Context Protocol,模型上下文协议)是由人工智能公司 Anthropic 主导推出的一种开放标准协议,旨在统一大型语言模型(LLM)与外部数据源、工具及服务之间的交互方式 。该协议通过JSON-RPC 2.0 标准消息格式定义通信规则,使模型能像使用”万能接口”(类比 Type-C 接口)一样即插即用地连接异构资源。

图片来源:https://zhuanlan.zhihu.com/p/598749792

其架构采用客户端-服务器模式,包含三个关键组件

  • MCP Host:运行大模型应用(如 Cursor、Cline、Cherry Studio、Claude Desktop 等),负责发起任务请求。
  • MCP Client:集成在 Host 中的协议客户端,解析任务需求并与服务器协调资源调用。
  • MCP Server轻量级服务程序,动态注册与暴露本地资源(例如文件、数据库)或远程服务(如云API),处理客户端请求并返回结构化数据,同时提供安全控制,包括访问权限管理和资源隔离。

简单概括为 MCP 是一种开放标准,本质是应用层协议(Protocal),跟我们熟知的 TCP/IP,HTTP 协议类似。借助它开发者可以安全地在数据源和 AI 工具之间建立双向连接。其架构概括起来就是:

  • 开发者可以通过 MCP 服务器公开他们的数据;
  • AI 应用(MCP 客户端) 可以连接到 MCP 服务器,获取所需数据,LLMs 再分析投喂的数据。

那为什么会出现呢?这就要说到RAG和Function Calling 技术了。

RAG(检索增强生成) 通过检索外部知识库获取与问题相关的实时信息并将其注入模型提示词,生成更精准、时效性更强的回答。 其工作原理为 :当用户发出提问时,AI 应用通过向量检索、关键词匹配等方式,从外部知识库或数据源中搜索相关信息,再把检索到的信息作为上下文提供给大模型,让大模型基于补充的信息进行回答。技术流程: 用户提问→问题向量化→向量数据库相似度检索→拼接上下文提示词→模型生成答案。

图片来源:ailydoseofds

Function Calling(函数调用) 拓展了模型执行动作的能力,解决纯文本交互的局限性,即模型解析用户意图后生成结构化指令,调用预定义外部函数或 API(如发送邮件、查询天气)。其工作原理为 :当用户发出提问时,应用会将集成的函数列表作为上下文发送给大模型。大模型根据用户输入判断应调用的函数,并生成相应的调用参数。随后,应用执行该函数并将结果发送给大模型,作为补充信息供其生成最终的总结或回答。技术流程:用户指令→ 模型识别需调用的函数→ 生成参数化调用指令→ 外部系统执行→ 返回结果至模型→ 生成用户响应。

图片来源:ailydoseofds

但不同的 API 需要封装成不同的方法,且参数确定后,后期变更困难,很难在不同的平台灵活复用。 而我们可以认为,MCP 是在 Function Calling 的基础上做了进一步的抽象,目的是让应用更加简单、高效、安全地对接外部资源,更好地为大模型补充上下文信息。总结起来就是,MCP 把大模型运行环境称作 MCP Client,也就是 MCP 客户端,同时,把外部函数运行环境称作 MCP Server,也就是 MCP 服务器,然后,统一 MCP 客户端和服务器的运行规范,并且要求 MCP 客户端和服务器之间,也统一按照某个既定的提示词模板进行通信。

MCP vs Function Calling 对比:

综上,RAG与Function Calling 互补,前者用于知识检索,后者用于执行操作,二者均可提升模型实用性,但目标维度不同,且存在难集成,扩展性差的问题,开发者往往需为不同模型重复实现工具调用逻辑。

MCP 则是对两者的整合与标准的规范化:

  • 标准化接口:MCP 为 RAG 的检索源接入(如数据库、文档库)和 Function Calling 的工具调用(如 API 服务)提供统一接入规范,避免为每个工具开发定制化适配。 比如 MCP 工具的inputSchema可定义多个参数,通过required标记必传参数。大模型在解析用户提问时,会根据工具的描述和参数定义,自动解析并提供相应参数值来调用工具。这种参数化设计方式提高了工具调用的灵活性,降低了 Function Calling 的开发复杂度。

    return Tool( name=self.name, description=self.description, inputSchema={ “type”: “object”, “properties”: { “host”: {“type”: “string”, “description”: “数据库主机地址”}, “port”: {“type”: “integer”, “description”: “数据库端口”}, “user”: {“type”: “string”, “description”: “数据库用户名”}, “password”: {“type”: “string”, “description”: “数据库密码”}, “database”: {“type”: “string”, “description”: “数据库名称”} }, “required”: [“host”, “port”, “user”, “password”, “database”] } )

  • 能力扩展

    • RAG 通过 MCP 接入实时数据流(如证券行情),突破静态知识库限制;
    • Function Calling通过 MCP 调用异构工具(如 IoT 设备),无需依赖特定模型的支持。
未经允许不得转载:紫竹林-程序员中文网 » 数据库AI方向探索-MCP原理解析&DB方向实战|得物技术

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
关于我们 免责申明 意见反馈 隐私政策
程序员中文网:公益在线网站,帮助学习者快速成长!
关注微信 技术交流
推荐文章
每天精选资源文章推送
推荐文章
随时随地碎片化学习
推荐文章
发现有趣的