MCP 协议系列序言篇:开启 AI 应用融合新时代的钥匙

文章目录

  • 序言:AI 应用层进入 MCP 时代
  • 为什么 MCP 开启 AI 应用融合新时代的钥匙
  • 为什么是 MCP?它与 Function Calling、Agent 有什么区别?
    • Function Calling
    • AI Agent
    • MCP(Model Context Protocol)
  • MCP 如何工作
  • MCP Server 的意义
  • 总结
  • 个人简介

序言:AI 应用层进入 MCP 时代

过去一年,AI 模型的发展进入了快车道。从 GPT-4、Claude 3 到 DeepSeek R1,不论是推理能力还是减少幻觉的能力都有了质的飞跃。与此同时,Prompt 工程、RAG(检索增强生成)、AI Agent 等技术路线也极大推动了 AI 应用的多样性。

然而,AI 应用在集成现有系统和工具链方面进展缓慢。尽管市面上涌现了大量新的 AI 服务,但它们几乎都是“全新打造”的,而不是融入我们日常使用的工作流、软件或系统中。

直到 2023 年 11 月,Anthropic 发布 MCP(Model Context Protocol,模型上下文协议)后,AI 应用开发才真正迎来了新阶段。MCP 的提出使得 AI 模型可以标准化地访问外部服务和数据源,开启了 AI 系统原生集成的新时代。

为什么 MCP 开启 AI 应用融合新时代的钥匙

当前 AI 应用虽然能力强大,但仍有以下局限:

  • 多数 AI 应用是“孤岛”,不能无缝与开发者常用工具整合。
  • 很少有 AI 工具能做到同时联网搜索、发邮件、发博客等操作。
  • 实现这些功能的代码并不复杂,但集成非常困难,主要是因为系统割裂,数据流动不畅。

比如在 IDE 中,如果我们能让 AI 做到以下事情,开发体验将有质的飞跃:

  • 查询本地数据库,辅助开发
  • 检索 GitHub Issue 判断是否是已知问题
  • 发消息通知同事 Code Review 某个 PR
  • 修改 AWS/Azure 配置自动部署

AI 无法完成这些自动化整合,原因主要在两点:

  1. 企业数据敏感,流程重、安全要求高。
  2. 缺少统一标准协议来连接模型与服务。

而 MCP,正是为了解决这一“协议层”的缺失而诞生的。

为什么是 MCP?它与 Function Calling、Agent 有什么区别?

很多人可能会问:OpenAI 不是早就有 function calling?AI Agent 不也能整合多种服务?为什么还需要 MCP?

Function Calling

Function Calling 是模型根据上下文自动调用外部函数的机制,起到了模型与外部服务之间的桥梁作用。

特点:

  • 模型平台(如 OpenAI、Claude)定义函数结构。
  • 需要开发者明确提供函数描述、输入输出。
  • 执行任务时,模型根据内容决定调用哪个函数。

缺点:

  • 不适合处理多轮复杂任务。
  • 代码不易维护,难以标准化和复用。

AI Agent

AI Agent 是一个可以自主完成任务的智能系统。

特点:

  • 具备决策和行动能力。
  • 可以连续进行多步推理。
  • 可连接多种工具,具备一定自治性。

但问题是,目前大多数 AI Agent 构建仍依赖于自定义、耦合严重的工具代码,难以复用、协作和共享。

MCP(Model Context Protocol)

MCP 是一个开放协议,目标是“Type-C 化”AI 接入生态。

特点:

  • 不依赖某个模型平台,统一标准。
  • 建立模型与服务之间的通用上下文交换机制。
  • 支持多步任务、状态保持、权限控制。

优势:

  • 将服务按层次抽象:描述、能力、限制。
  • Client(Agent)根据协议自行组合能力,完成任务。
  • 构建生态后,不同服务之间可以互操作,AI 自动化能力大大增强。

简而言之:

对比维度Function CallingAI AgentMCP 协议
目的调用函数执行任务构建生态
复杂任务支持
标准化程度弱(平台私有)弱(工具割裂)强(协议层)
维护难度低(生态共享)

MCP 如何工作

我们看一下官方提供的架构图:

MCP 的系统由五个核心组成部分:

  1. MCP Hosts
    运行在用户侧的应用程序,如 Cursor、Claude Desktop 等,它们是模型调用服务的发起者。

  2. MCP Clients
    在 Host 中运行的模块,负责与远程 MCP Server 保持连接,并转发请求、维持上下文。

  3. MCP Servers
    服务提供者,通过 MCP 协议暴露 API、数据源、工具能力。它是系统的“能力注册中心”。

  4. Local Data Sources
    如本地文件、本地数据库、本地服务接口等。

  5. Remote Services
    如网络 API、第三方服务、云平台资源等。

MCP Server 的意义

Server 是整个 MCP 系统的“智能服务目录”,它定义了:

  • 哪些服务对 AI 可见;
  • 每个服务的输入输出格式;
  • 每个服务的权限范围和调用限制;
  • 如何持久化和恢复上下文。

以 Cursor 为例,其 AI Agent 演进过程如下:

阶段能力说明
AI Chat提建议由人执行
AI Composer自动修改代码需要人确认
AI Agent全自动任务执行可读图、调试、部署

MCP Server 的角色就是在这个过程中,为 Agent 提供所有服务的信息与上下文支持。

最终,MCP 目标是构建一个跨平台、跨服务的“AI 应用生态协议层”,使得 AI Agent 可以像人一样自由调度各种能力,实现“从建议到行动”的完整闭环。

总结

MCP 是通往 AI 原生集成世界的关键协议。它的出现,使得:

  • AI Agent 可以理解并调用各种服务;
  • 开发者可以复用协议组件,加速开发;
  • 企业可以构建自己的 MCP Server,有效保护数据隐私。

正如 USB Type-C 统一了电子设备之间的连接,MCP 有望统一 AI 与工具、服务之间的交互方式。

未来,AI 不再只是“聊天机器人”,而是能真正执行任务、连接系统、完成工作流的全能助手。

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。

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

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

相关文章

【threejs】每天一个小案例讲解:光照

代码仓 GitHub - TiffanyHoo/three_practices: Learning three.js together! 可自行clone,无需安装依赖,直接liver-server运行/直接打开chapter01中的html文件 运行效果图 知识要点 常见光照类型及其特点如下: 1. 环境光(Ambi…

大模型在输尿管下段积水预测及临床应用的研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的 1.3 研究范围与限制 1.4 文献综述 1.5 研究方法和框架 二、相关理论与概念 2.1 大模型技术原理 2.2 输尿管下段积水病理机制 2.3 大模型在医学预测领域的应用 三、大模型预测输尿管下段积水的方法 3.1 数据收集 3.…

gitlab相关操作

2025.06.11今天我学习了如何在终端使用git相关操作: 一、需要修改新的仓库git地址的时候: (1)检查当前远程仓库 git remote -v 输出示例: origin https://github.com/old-repo.git (fetch) origin https://github.c…

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…

通过共享内存在多程序之间实现数据通信

注:以下内容为与 GPT-4O 共同创作完成 以共享内存的方式实现多程序之间的数据通信,尤其适合在一台机器上的多程序之间进行高频数据交换。 以下示例展示了 sender.py 向 receiver.py 发送数据并接收经 receiver.py 处理后的数据,以及如何通过…

[论文阅读] 人工智能+软件工程 | 理解GitGoodBench:评估AI代理在Git中表现的新基准

理解GitGoodBench:评估AI代理在Git中表现的新基准 论文信息 GitGoodBench: A Novel Benchmark For Evaluating Agentic Performance On Git Tobias Lindenbauer, Egor Bogomolov, Yaroslav Zharov Cite as: arXiv:2505.22583 [cs.SE] 研究背景:当AI走进…

开源 java android app 开发(十二)封库.aar

文章的目的为了记录使用java 进行android app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。 相关链接: 开源 java an…

ubuntu + nginx 1.26 + php7.4 + mysql8.0 调优

服务器配置 8核 16G 查看内存 free -h nginx配置 worker_processes auto; # 自动检测CPU核心数 worker_rlimit_nofile 65535; # 提高文件描述符限制 ​ events {worker_connections 8192; # 每个worker的最大连接数multi_accept on; # 一次性接受…

[未验证]abaqus2022 更改内置python

如何在 Abaqus 2022 中更改内置 Python 在 Abaqus 中,Python 是常用的脚本语言,它使得用户能够自动化模型的创建、分析和后处理。可能有时候你需要更改默认的 Python 版本,比如使用特定库或者功能。本文将为您详细说明如何在 Abaqus 2022 中更…

RAG文档解析难点2:excel数据“大海捞针”,超大Excel解析与精准行列查询指南

写在前面 在构建检索增强生成(RAG)应用时,Excel文件是不可或缺的数据源。它们通常包含了企业运营、市场分析、科学研究等各个领域的宝贵数据。然而,当这些Excel文件变得“超大”——可能包含数十万甚至数百万行数据时,传统的解析方法和RAG数据处理流程将面临严峻的内存、…

深度掌控,智启未来 —— 基于 STM32F103RBT6 的控制板

在科技浪潮奔涌向前的时代,电子领域的创新发展从未停歇。对于电子工程师、科研工作者以及电子技术爱好者,在校电子专业学生而言,一款性能卓越、功能全面且稳定可靠的开发板,是探索电子世界奥秘、实现创意构想的关键基石。今天&…

什么样的登录方式才是最安全的?

目录 一、基础协议:HTTP与HTTPS HTTP协议 HTTPS协议 二、常见Web攻击与防御 2.1 XSS 常见攻击手段 针对XSS 攻击窃取 Cookie 2.2 CSRF CSRF攻击的核心特点 与XSS的区别 常见防御措施 三、疑问解答 四、登录方式演变 4.1 方案一🐶狗都不用 …

android studio底部导航栏

实现底部导航栏切换 将java文件return的xml文件赋值给页面FrameLayout控件 java文件BottomNavigationView,监听器setOnNavigationItemSelectedListener MainActivity.java代码 package com.example.myapplication;import android.os.Bundle;import androidx.appc…

vue-router相关理解

一、前言 随着 Vue.js 在前端开发中的广泛应用,Vue Router 成为了 Vue 官方推荐的路由管理器。它不仅支持单页面应用(SPA)中常见的路由跳转、嵌套路由、懒加载等功能,还提供了导航守卫、动态路由等高级特性。 本文将带你深入了解…

uni-app 自定义路由封装模块详解(附源码逐行解读)

🚀uni-app 自定义路由封装模块详解(附源码逐行解读) 📌 请收藏 点赞 关注,获取更多 uni-app 项目实用技巧! 在实际 uni-app 项目中,我们常常需要对 uni.navigateTo、uni.switchTab 等 API 做…

QML显示图片问题解决办法

以前用qtwediget的时候,好像是放在qlabel或者什么组件上面,把图片的路径放上去就可以直接加载,但我用QML创建界面的时候就遇到了问题,哦对,qtwedget用qpixmap组件显示图片,也有image。话说回来,…

Vue中使用jsx

1. jsx的babel配置 1.1 在项目中使用jsx,需要添加对jsx的支持: jsx通常会通过Babel来进行转换(React编写的jsx就是通过babel转换的)Vue中,只需要在Babel中配置对应的插件即可以下列举需要支持转换的案例: template -> vue-l…

Spring Cache+Redis缓存方案 vs 传统redis缓存直接使用RedisTemplate 方案对比

结合 Spring Cache 和 Redis 的缓存方案(即 Spring Cache Redis)相较于普通的 Redis 缓存使用(如直接通过 RedisTemplate 操作),具有以下显著优势: 具体实现方案请参考:Spring CacheRedis缓存…

Web应用安全漏洞扫描:原理、常用方法及潜在风险解析?

Web应用安全的关键环节在于进行漏洞扫描,这种扫描通过自动化或半自动化的方式,对应用进行安全测试。它能揭示出配置错误、代码缺陷等众多安全风险。接下来,我将详细阐述这些情况。 扫描原理 它主要模拟攻击者的行为,以探测和攻击…

Spring中@Value注解:原理、加载顺序与实战指南

文章目录 前言一、Value注解的核心原理1.1 容器启动阶段:环境准备1.2 Bean实例化阶段:后置处理器介入1.3 值解析阶段:双引擎处理1. 占位符解析(${...})2. SpEL表达式解析(#{...}) 1.4 类型转换与…