MCP(Model Context Protocol)详解

Spring AI实现MCP(Model Context Protocol)详解与实践 轻松地将AI模型与外部系统集成提供标准化的工具调用接口实现动态上下文管理扩展AI模型的能力边界MCP为AI应用提供了一个强大的扩展机制,使得AI模型能够访问和操作外部资源,从而提供更智能、更实用的服务。 阅读详情

一、什么是 MCP?

MCP(Model Context Protocol) 是一种用于 AI 模型与外部系统(如应用、插件、工具等)之间进行上下文信息交换的协议。它的设计目的是让模型能够更好地理解和利用外部环境中的信息,从而实现更智能、更个性化的响应和决策。

MCP 并不是某个具体的产品,而是一套标准或机制,允许模型动态地获取、管理和使用与当前任务相关的上下文数据。


二、MCP 的核心目标

  1. 增强模型的上下文感知能力
    让模型不仅仅依赖于输入文本,还能理解用户状态、环境变量、历史记录等多维信息。

  2. 支持多模态和多源数据交互
    可以与文本、图片、音频、结构化数据等多种信息源进行交互。

  3. 安全、可控的数据交换机制
    明确哪些信息可以被访问,哪些需要保护,确保数据隐私和安全。


三、MCP 的工作机制

1. 上下文信息的结构化

MCP 规定了上下文信息的结构化表示方式,通常采用 JSON 或类似的数据格式。例如:

{
  "user": {
    "id": "12345",
    "preferences": {"theme": "dark", "language": "zh"},
    "history": ["search:AI", "view:product123"]
  },
  "environment": {
    "location": "Beijing",
    "device": "mobile"
  },
  "session": {
    "id": "abcde",
    "start_time": "2025-06-22T10:00:00Z"
  }
}

2. 上下文的动态更新与同步

  • 外部系统可以根据用户行为、环境变化实时更新 context。
  • 模型可以通过 MCP 查询、获取、甚至请求更新特定的上下文字段。

3. 权限管理与数据安全

  • MCP 支持细粒度的数据访问控制。
  • 可以为不同的 context 字段设置访问权限,保证用户隐私。

4. 与模型的交互流程

  1. 外部系统初始化 context
    在模型调用时,将相关 context 通过 MCP 传递给模型。

  2. 模型解析 context
    模型根据 MCP 协议解析上下文,理解当前环境和用户状态。

  3. 模型生成响应
    利用上下文信息生成更加个性化、相关性更强的响应。

  4. 外部系统根据模型请求动态补充 context
    如模型需要更多信息,可以通过 MCP 请求补充。


四、MCP 的应用场景

  • 智能助手:根据用户历史、设备状态、地理位置做出更贴切的建议。
  • 企业应用:将业务数据、员工身份、权限等 context 传递给模型,实现自动化办公。
  • 多轮对话系统:保持对话上下文,提升连续性和智能性。
  • 插件/工具集成:模型可以调用外部工具,获取实时数据或执行操作。

五、MCP 与其他协议的区别

  • 与传统 API 的区别:MCP 更关注上下文的动态、结构化、细粒度管理,而 API 通常是静态的、单次的数据交换。
  • 与 Prompt Engineering 的区别:Prompt 主要是输入文本的设计,MCP 是底层的数据结构和交换协议,强调模型与环境的深度融合。

六、MCP 的未来发展趋势

  • 标准化:逐渐形成行业标准,方便不同模型、系统之间的无缝集成。
  • 隐私保护:引入更强的数据加密和访问控制机制。
  • 自动化 context 管理:通过 AI 自动识别、更新最相关的上下文信息。

七、总结

MCP(Model Context Protocol)是 AI 生态发展的关键协议,让模型不再“孤岛作战”,而是与外部世界深度融合,实现更智能、更安全、更个性化的 AI 应用。

八、实现案例

一、项目结构

mcp_demo/
├── mcp_server.py      # MCP服务端,负责存储和管理上下文
├── mcp_client.py      # MCP客户端,模拟模型或应用请求上下文
├── context_store.py   # 上下文存储与权限管理
├── requirements.txt   # 依赖

二、核心源码实现

1. context_store.py —— 上下文存储与权限管理

# context_store.py
import threading

class ContextStore:
    def __init__(self):
        self._store = {}  # {session_id: context_dict}
        self._lock = threading.Lock()

    def get_context(self, session_id, fields=None):
        with self._lock:
            context = self._store.get(session_id, {})
            if fields:
                # 权限控制:只返回指定字段
                return {k: context.get(k) for k in fields}
            return context

    def set_context(self, session_id, context_update):
        with self._lock:
            if session_id not in self._store:
                self._store[session_id] = {}
            self._store[session_id].update(context_update)

    def delete_context(self, session_id):
        with self._lock:
            if session_id in self._store:
                del self._store[session_id]

2. mcp_server.py —— MCP服务端API

# mcp_server.py
from flask import Flask, request, jsonify
from context_store import ContextStore

app = Flask(__name__)
store = ContextStore()

@app.route('/context/<session_id>', methods=['GET'])
def get_context(session_id):
    fields = request.args.get('fields')
    if fields:
        fields = fields.split(',')
    context = store.get_context(session_id, fields)
    return jsonify(context)

@app.route('/context/<session_id>', methods=['POST'])
def update_context(session_id):
    context_update = request.json
    store.set_context(session_id, context_update)
    return jsonify({'status': 'ok'})

@app.route('/context/<session_id>', methods=['DELETE'])
def delete_context(session_id):
    store.delete_context(session_id)
    return jsonify({'status': 'deleted'})

if __name__ == '__main__':
    app.run(port=5000)

3. mcp_client.py —— MCP客户端(模拟模型或应用)

# mcp_client.py
import requests

SERVER_URL = 'http://127.0.0.1:5000'

def get_context(session_id, fields=None):
    params = {}
    if fields:
        params['fields'] = ','.join(fields)
    resp = requests.get(f'{SERVER_URL}/context/{session_id}', params=params)
    return resp.json()

def update_context(session_id, context_update):
    resp = requests.post(f'{SERVER_URL}/context/{session_id}', json=context_update)
    return resp.json()

def delete_context(session_id):
    resp = requests.delete(f'{SERVER_URL}/context/{session_id}')
    return resp.json()

if __name__ == '__main__':
    session_id = 'session123'
    # 初始化上下文
    update_context(session_id, {
        'user': {'id': 'u001', 'preferences': {'theme': 'dark', 'lang': 'zh'}},
        'environment': {'location': 'Shanghai', 'device': 'mobile'},
        'session': {'start_time': '2025-06-22T10:00:00Z'}
    })
    print('初始化后上下文:', get_context(session_id))

    # 获取部分字段
    print('只获取user字段:', get_context(session_id, fields=['user']))

    # 更新上下文
    update_context(session_id, {'environment': {'location': 'Beijing'}})
    print('更新后上下文:', get_context(session_id))

    # 删除上下文
    delete_context(session_id)
    print('删除后上下文:', get_context(session_id))

4. requirements.txt

flask
requests

三、运行方式

  1. 安装依赖:

    
    pip install flask requests
    
  2. 启动服务端:

    python mcp_server.py
    
  3. 运行客户端:

    python mcp_client.py
    

四、扩展说明

  • 权限管理:可以在 ContextStore 里加用户身份认证、字段细粒度权限控制等。
  • 模型集成:模型推理前通过 MCP 客户端获取上下文,推理后可更新上下文。
  • 插件机制:第三方工具可通过 MCP 标准接口与模型共享数据。

五、总结

上述案例展示了 MCP 的基础实现:

  • 服务端负责上下文的存储、管理和权限控制
  • 客户端(模型或应用)可获取、更新、删除上下文
  • 通过 RESTful API,实现模型与外部环境的动态信息交互

创作不易,点赞关注,持续更新~~~

Model Context Protocol (MCP) 详解:构建标准化AI插件服务器的实践指南 在AI应用开发中,如何让不同的模型、工具和数据源高效协同工作是一个核心挑战。传统方式依赖大量定制化集成代码,导致系统碎片化且难以维护。Model Context Protocol (MCP) 作为一种开放标准协议,通过定义统一的“资源”与“工具”抽象,为AI助手提供了安全、可控的外部能力调用接口。其采用客户端-服务器架构,通过标准化的JSON-RPC进行通信,实现了AI能力的即插即用。这一协议的价值在于解决了工具集成的碎片化问题,并提供了细粒度的安全控制。在实际应用场景中,开发者可以基于MCP构建各类服务器 阅读详情

相关推荐

Model Context Protocol (MCP) 的架构设计详解(二)

MCP 是一种协议,它为 AI 模型和外部数据源之间提供了统一的接口标准。它允许 AI 模型在生成响应时访问外部数据,从而产生更相关、更准确的输出。MCP 的目标是帮助前沿模型产生更好、更有针对性的响应。通过使用 MCP,AI 模型可以像使用本地数据一样使用远程数据,这极大地扩展了 AI 的能力,使其能够处理更复杂、更实际的问题。

weixin_69882801的博客 1064

【知识科普】MCP模型上下文协议

以下是关于MCP(Message Context Protocol)模型上下文协议的详细解析,涵盖其核心概念、设计目标、实现方式及典型应用场景。一、MCP模型上下文协议概述1. 定义与目标•MCP是一种消息上下文传递协议,旨在解决分布式系统中服务间通信时的上下文信息传递问题。•核心目标• 在服务调用链(如微服务架构)中传递请求相关的元数据(如用户ID、请求ID、鉴权令牌、事务ID等)。• 确保全链路可观测性(Tracing)、安全性(如权限传递)和一致性(如分布式事务)。

wendao76的专栏 2204

PLSQL Developer新手必看:如何避免安装过程中的常见坑

本文为PL/SQL Developer新手提供了详尽的安装与配置避坑指南。从版本选择、注册码使用、汉化包安装到Oracle客户端连接配置,逐一解析常见问题并提供解决方案,帮助开发者快速搭建稳定的PL/SQL开发环境,顺利开启Oracle数据库编程工作。

g9h0i1的博客 651

MCP 是什么?为什么它是 AI 落地的 “超级翻译官”?从作用到原理一文吃透

MCP 是什么?为什么它是 AI 落地的 “超级翻译官”?从作用到原理一文吃透

优快云_224022的博客 1万+

告别交越失真:手把手教你设计高性能互补输出级电路(LTspice实测)

本文深入剖析音频放大器中常见的交越失真问题,并提供基于LTspice仿真的实战解决方案。通过对比二极管偏置、Vbe倍增器和集成运放驱动三种经典方案,手把手指导设计高性能互补输出级电路,涵盖原理分析、仿真验证及实物调试要点,助力消除音频失真,提升音质。

weixin_29190573的博客 552

NT35310 LCD屏的初始化与图形显示实战:从画点到UI设计的完整指南

本文详细介绍了NT35310 LCD屏的初始化与图形显示实战,从硬件配置到UI设计全流程。内容包括8080总线连接、初始化序列、基础图形绘制算法、显示优化技巧以及UI框架实现,帮助开发者快速掌握TFT-LCD驱动开发技术,适用于工业控制和智能家居等嵌入式应用场景。

table的专栏 370

如何用 MCP(模型上下文协议)实现跨平台数据同步

摘要: 跨平台数据同步是数字化时代的关键需求,能提升用户体验、整合数据分析并优化系统协作。MCP(模型上下文协议)通过客户端-服务器架构实现高效同步,其核心组件包括MCP Host(协调请求)、MCP Client(传递数据)和MCP Server(处理中转)。MCP统一数据格式并采用加密与身份验证保障安全。实践步骤包括搭建MCP Server(如Flask应用)和Client(数据收发),通过API实现平台间双向同步。未来可通过缓存、分批传输及重试机制进一步优化性能与可靠性。

分享平时的学习心得和笔记 1005

C语言入门—初识C语言

一、C语言概述 1、什么是C语言 语言是用来交流沟通的,有一方说,有一方听。必须要两方参与。(自言自语的除外) 语言是人与人交流,而C语言是人与机器交流 语言有独特的语法规则和定义,双方必须遵循这些规则和定义才能实现真正的交流。 接下来首先了解下计算机的组成: 2、计算机介绍 2.1、计算机结构组成 2.2、计算机系统组成 2.3、程序的指令 指令是对计算机进行程序控制的最小单元 计算机的指令系统是指所有指令的集合 程序是指为完成某一项特定任务而用某种言语编写的一组指令序列 3、C语言发展历程 3.

jun319817的博客 1035

Model Context Protocol(MCP)详解和开发教程

导入包并定义mcp实例""""""通过注解,把一个函数注册为Tool# 注册工具的装饰器,可以很方便的把一个函数注册为工具asyncdef query_logistics(order_id: str = Field(description="订单号")) -> str:"""查询物流信息。当用户需要根据订单号查询物流信息时,调用此工具Args:order_id: 订单号Returns:物流信息的字符串描述"""# 统一的物流信息数据。

赵英超的博客 1万+

SpringBoot+Vue企业级开源聚合支付系统!支持30+款支付平台,只需配置商户证书就能直接使用!

一款开源SAAS支付系统推荐

技术Z先生的博客 2720

python爬虫自动下载网页链接

需求分析 今天遇到一个简单的需求,需要下载澳大利亚电力市场NEM日前市场的发电商报价数据(http://nemweb.com.au/Reports/Current/Next_Day_Offer_Energy/),页面观感是这样的: Ctrl + F 一下,看到一共有395个zip链接。于是就想着用python爬虫自动下载。这个网页很简单,没有验证码,甚至不需要登录,因此自动下载的pytho...

da_kao_la的博客 1万+

什么是 MCP?Model Context Protocol 详解

价值点说明标准化一次构建,处处运行可组合多个 MCP Server 可以同时连接一个 AI 应用双向通信不仅 AI 调用工具,工具也可以调用 AI(Sampling)开放生态官方提供 20+ 参考实现,覆盖所有主流场景MCP 正在成为 AI 应用连接外部世界的标准接口。现在开始学习 MCP,意味着站在了 AI 工具生态的前沿。

weixin_45494794的博客 566

人体分割笔记总结

人体分割 人体分割(human parsing),属于语义分割任务的子任务,旨在对人类图像进行像素级的是细粒度分割(例如,划分出身体部位和服装)。根据不同的场景,又可以分为单人人体解析(single-person human parsing)和多人人体解析(multi-person human parsing,或者 instance-level human parsing)。除此之外,按照处理媒介分类,还可以分为基于图像的人体解析和基于视频的人体解析。 对于人体解析任务,常用的度量指标包括 Pixel a

jacke121的专栏 4255

Model Context Protocol (MCP) 详解:连接AI与数据的开放标准

Model Context Protocol(MCP)是一个开放协议,用于标准化应用程序如何向大型语言模型(LLM)提供上下文。它可以被比喻为"AI应用程序的USB-C端口"。正如USB-C提供了一种标准化的方式来连接设备与各种外设和配件,MCP提供了一种标准化的方式来连接AI模型与不同的数据源和工具。MCP的核心目标是解决AI助手与数据之间的隔离问题。即使是最先进的模型也受到与数据隔离的限制——它们被困在信息孤岛和传统系统之后。每个新的数据源都需要自己的定制实现,使真正连接的系统难以扩展。

专注于人工智能领域的小何尚 2819

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

VSS MCP协议详解:如何用Model Context Protocol统一编排视频工具

VSS(Video Search and Summarization,视频搜索与摘要)是 NVIDIA 推出的 GPU 加速视频分析蓝图,而贯穿其中的 **MCP(Model Context Protocol,模型上下文协议)**,是它把"视频搜索、事件查询、告警验证、自动报告"等能力统一编排给 AI Agent 的核心机制。本文将用通俗的方式,带你搞清楚 VSS 里的两个 MCP 服务器分别能做

gitblog_00701的博客 408

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[ClaudeCode] MCP (Model Context Protocol) 工作原理详解

是 Claude Code 用于连接外部服务和工具的标准化协议。它定义了统一的接口,让 Claude 能够发现、调用和管理外部工具,就像使用内置工具一样自然。通俗理解: MCP 就像是 Claude Code 的"USB 接口",任何符合 MCP 标准的服务都可以"即插即用"。在命令行设置claude配置中使用"env": {},.env文件支持1. MCP 是标准化的工具协议├─ 工具发现├─ 统一命名2. 四种 Server 类型├─ stdio: 本地进程 (最低延迟)

言之。 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MCP协议详解:Model Context Protocol接口抽象原理与实战

MCP(Model Context Protocol)是一种面向AI工程化的轻量级接口抽象规范,本质是统一AI能力接入的标准化通信层,基于JSON-RPC over WebSocket实现跨工具链上下文传递。其核心原理在于解耦AI模型逻辑与宿主环境适配,通过listTools能力声明、executeTool执行调度和context字段结构化封装(如figma/burp/cursor上下文),显著降低Figma插件、BurpSuite扩展、VS Code/Cursor等开发工具的AI集成成本。技术价值体现在‘

weixin_29057163的博客 337

Model Context Protocol(MCP)详解:AI 编程新时代的“USB 接口

想象一下,你的家是一个智能家庭系统,配备了各种智能设备,如智能灯泡、智能音箱、智能冰箱等。同样地,MCP 为 AI 系统提供了类似的标准化接口,使得不同的 AI 应用可以方便地连接到各种数据源和工具,无需为每种组合编写特定的集成代码。MCP Client 控制中心中的设备控制模块 控制中心中的模块,负责与特定的智能设备(如智能灯泡)进行通信。MCP Server 智能设备本身 各种智能设备,如智能灯泡、智能音箱,提供特定的功能和服务。

weixin_55010563的博客 581

什么是 MCP?Model Context Protocol 详解与 TaoToken 统一 Key 接入实践

MCP(Model Context Protocol)是让 AI 标准化连接外部工具的开放协议,本文用 Cline 的 settings.json 配置骨架演示如何接入 filesystem 与 fetch Server,并通过 TaoToken 统一 Key 打通模型通道,一个 Key 覆盖对话与工具调用,附常见报错排查。详见 https://taotoken.net/?utm_source=taotoken_aicg_blog_end

GarnetFalcon73的博客 133

第30篇-MCP协议详解-Model-Context-Protocol全栈指南

用 Go 语言从零构建各类 AI Agent,覆盖 ReAct、Plan-and-Execute、Multi-Agent、Super Agent 等核心设计模式的完整工程实现。

m0_68987304的博客 385

Spring AI 实现 MCP 详解:用 TaoToken 统一 Key 打通 Model Context Protocol 工具链

Spring AI 接入 MCP 时,模型通道与工具链常需分别配 Key。本文用 TaoToken 统一 API 通道,给出 application.yml 骨架、MCP 客户端配置与 @Tool 工具注册示例,一次跑通 Model Context Protocol 工具调用。官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end

Ceshi01的博客 14

Model Context Protocol(MCP)详解和开发教程:从零构建你的第一个 MCP Server

从零构建第一个 MCP Server 的完整教程:用 uv 搭建 Python 环境,基于 FastMCP 注册 query_logistics 工具,通过 MCP Inspector 验证 tools/list 与 tools/call,再接入 Cline 完成端到端调用。TaoToken 提供稳定的模型接入与 Key 管理,配合官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 可快速验证对话效果。

weixin_35749440的博客 69

Model Context Protocol (MCP) 技术详解文档 入门案例

Model Context Protocol (MCP) 技术摘要 MCP是Anthropic推出的开放标准,旨在解决AI模型与数据源连接的兼容性问题。它采用类似USB协议的标准化设计,通过Client-Host-Server架构实现模型与数据源的解耦。核心特点包括: 标准化接口:支持本地/远程数据源统一接入 三大核心能力: Resources(只读数据访问) Prompts(预定义提示模板) Tools(可执行函数) 通信协议:基于JSON-RPC 2.0,支持Stdio(本地)和SSE over HTT

上善若水 1393

MCP(Model Context Protocol)详解:AI系统与外部世界的桥梁

MCP(Model Context Protocol,模型上下文协议)是由Anthropic公司于2024年11月推出并开源的一种通信协议。它旨在建立大型语言模型(LLM)与外部数据源及工具之间的安全双向链接,让AI模型能够以标准化的方式与各种数据源和工具进行交互。MCP的核心理念是提供一种统一的集成方式,让AI模型能够安全、高效地访问和操作用户本地或远程的各种数据和服务,而无需将敏感数据上传至第三方服务器。正如官方所描述的那样,MCP就像是AI应用的"USB-C接口",提供了一种标准化的连接方式。 在MC

lovely_yoshino的博客 7018

Model Context Protocol (MCP)详解与Spring Boot集成实战

本文介绍了Model Context Protocol(MCP)及其在Spring Boot中的集成实践。MCP是一种AI模型与外部工具通信的开放协议,提供统一接口标准、跨平台兼容性和安全调用机制。文章详细解析了MCP工作流程中Agent作为中介的角色,以及如何通过Spring Boot实现MCP服务端和客户端集成。服务端部分展示了工具组件定义、注册配置等关键步骤,客户端则构建了完整的调用框架。该项目采用Spring Boot 3.4.0、Java 17等技术栈,实现了AI模型与外部工具的安全高效交互,为A

xu2439645715的博客 1723
上一篇: 软件开发架构4R原则
下一篇: 压缩纹理详解
猩火燎猿
猩火燎猿 新星创作者: Java技术领域 新星创作者: Java技术领域
博客等级 码龄5年 1万+粉丝 791原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猩火燎猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值