MCP协议

MCP快速入门(for Java) Model Control Protocol(MCP)是由AI研究机构Anthropic在2023年第二季度首次提出的新型协议规范,旨在解决大语言模型LLM应用中的上下文管理难题。作为LLM交互领域的创新标准,MCP协议在发布后短短一年内已进行了多次更新. 阅读详情
AI摘要

本文介绍了MCP协议的基础概念、核心组件、消息类型和生命周期。MCP协议是一种轻量级程序,通过标准化模型上下文协议公开特定功能,支持多种传输机制,包括Stdio和HTTP with SSE。文章还展示了如何使用mcp工具读取本地文件内容。

原理讲解

基础概念

Introduction - Model Context Protocol

  • MCP Host:想要通过 MCP 访问数据的程序,例如 Claude Desktop、IDE 或 AI 工具
  • MCP Clients:与服务器保持 1:1 连接的协议客户端
  • MCP Servers:轻量级程序,每个程序通过标准化模型上下文协议公开特定功能
  • Local Data Sources: MCP 服务器可以安全访问的计算机文件、数据库和服务
  • Remote Services: MCP 服务器可以通过互联网(例如,通过 API)连接的外部系统

核心组件

协议层

协议层处理消息框架,请求/响应链接和高级通信模式。

class Protocol<Request, Notification, Result> {
    // Handle incoming requests, 处理请求
    setRequestHandler<T>(schema: T, handler: (request: T, extra: RequestHandlerExtra) => Promise<Result>): void

    // Handle incoming notifications, 处理通知, 不需要对方响应的请求
    setNotificationHandler<T>(schema: T, handler: (notification: T) => Promise<void>): void

    // Send requests and await responses, 请求
    request<T>(request: Request, schema: T, options?: RequestOptions): Promise<T>

    // Send one-way notifications, 通知
    notification(notification: Notification): Promise<void>
}

传输层

运输层处理客户与服务器之间的实际通信。 MCP支持多种运输机制:

  1. Stdio transport
    • 使用标准输入/输出进行通信
    • 适用于本地流程的处理
  1. HTTP with SSE transport
    • 使用服务器范围的事件进行服务器到客户消息
    • 使用 http POST方式发送消息,用于客户到服务器消息

所有运输都使用JSON-RPC 2.0交换消息。有关模型上下文协议消息格式的详细信息,请参见规格。

消息类型

MCP具有这些主要消息类型:

  1. 请求期望对方有回应:
interface Request {
  method: string;
  params?: { ... };
}
  1. 结果是对请求的成功响应:
interface Result {
  [key: string]: unknown;
}
  1. 错误表明请求失败:
interface Error {
  code: number;
  message: string;
  data?: unknown;
}
  1. 通知是单向消息,不会期望回复:
interface Notification {
  method: string;
  params?: { ... };
}

生命周期

初始化

  1. 客户以协议版本和功能发送initialize请求
  2. 服务器响应其协议版本和功能
  3. 客户将initialized通知发送为确认
  4. 正常消息交换开始

  1. init client, connect server
  2. init model, get tools, query, tool call
  3. tool result -> model
  4. model summary

尝试使用

通过mcp工具读取本地文件内容

  1. clone 官方提供的mcp服务项目:
git clone git@github.com:modelcontextprotocol/servers.git
  1. 构建本地服务:
docker build -t mcp/filesystem -f src/filesystem/Dockerfile .

  1. 镜像构建完成后, 采用LangChain4j进行测试用例构建:
package dev.langchain4j.example.mcp;

import dev.langchain4j.mcp.McpToolProvider;
import dev.langchain4j.mcp.client.DefaultMcpClient;
import dev.langchain4j.mcp.client.McpClient;
import dev.langchain4j.mcp.client.transport.McpTransport;
import dev.langchain4j.mcp.client.transport.stdio.StdioMcpTransport;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import dev.langchain4j.service.tool.ToolProvider;

import java.io.File;
import java.util.List;

public class McpToolsExampleOverStdio {

    // We will let the AI read the contents of this file

    /**
     * This example uses the `server-filesystem` MCP server to showcase how
     * to allow an LLM to interact with the local filesystem.
     * <p>
     * Running this example requires npm to be installed on your machine,
     * because it spawns the `server-filesystem` as a subprocess via npm:
     * `npm exec @modelcontextprotocol/server-filesystem@0.6.2`.
     * <p>
     * Of course, feel free to swap out the server with any other MCP server.
     * <p>
     * The communication with the server is done directly via stdin/stdout.
     * <p>
     * IMPORTANT: when executing this, make sure that the working directory is
     * equal to the root directory of the project
     * (`langchain4j-examples/mcp-example`), otherwise the program won't be able to find
     * the proper file to read. If you're working from another directory,
     * adjust the path inside the StdioMcpTransport.Builder() usage in the main method.
     */
    public static void main(String[] args) throws Exception {

        ChatLanguageModel model = OpenAiChatModel.builder()
                .apiKey(System.getenv("OPENAI_API_KEY"))
                .baseUrl(System.getenv("OPENAI_API_URL"))
                .modelName("gpt-4o-mini")
                .logRequests(true)
                .logResponses(true)
                .build();

        McpTransport transport = new StdioMcpTransport.Builder()
                .command(
                        List.of(
                                "docker", "run", "-i", "--rm",
                                "--mount", "type=bind,src=/Users/louye/fun-project/langchain4j-examples/mcp-example/src/main/resources,dst=/projects",
                                "mcp/filesystem",
                                "/projects"
                        )
                )
                .logEvents(true)
                .build();

        McpClient mcpClient = new DefaultMcpClient.Builder()
                .transport(transport)
                .build();

        ToolProvider toolProvider = McpToolProvider.builder()
                .mcpClients(List.of(mcpClient))
                .build();

        Bot bot = AiServices.builder(Bot.class)
                .chatLanguageModel(model)
                .toolProvider(toolProvider)
                .build();

        try {
            String response = bot.chat("修改文件 /projects/file.txt 的内容, 将内容修改为: Hello, world!");
            System.out.println("RESPONSE: " + response);
        } finally {
            mcpClient.close();
        }
    }
}

参考文档: https://github.com/modelcontextprotocol/servers/blob/main/src/filesystem/README.md

实际上McpTransport 就是帮用户通过特定的命令进行启动MCP的server服务器

MCP快速入门(Java项目) MCP 的主要目的在于解决当前 AI 模型因数据孤岛限制而无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。然而,这些集成是分散的,需要单独开发。使用 TypeScript 编写的 MCP server 可以通过 npx 命令来运行,使用 Python 编写的 MCP server 可以通过 uvx 命令来运行。这些功能使 MCP server 能够为 AI 应用提供丰富的上下文信息和操作能力,从而增强 LLM 的实用性和灵活性。 阅读详情

相关推荐

【学习总结】MCP协议之MCP简述

MCP是一套服务间通信协议,它通过统一的协议,解决了大模型与工具间繁琐的适配通信问题。MCP的构成包括:MCP Host、MCP Client、MCP Server、Local Data Source、Remote Data Source。封装MCP-server-weather服务时,需要在工具函数上添加@mcp.tool()装饰器。通过MCP协议,我们可以封装各种服务提供给Cursor、Cherry-Studio、甚至我们自己开发的Agent使用,从而使得LLM+Agent的功能更加强大。

Deadwalk的专栏 1481

LangChain4j 中的 Model Context Protocol (MCP):实现 AI 模型与工具的高效集成

本文深入探讨了 LangChain4j 中的 Model Context Protocol (MCP),详细介绍了如何通过 MCP 实现 AI 模型与外部工具的高效集成。MCP 支持 HTTP 和 stdio 两种传输方式,能够帮助开发者轻松地将 AI 模型与各种工具桥接,从而扩展模型的功能。文章还提供了实际的代码示例,展示了如何使用 MCP 与 GitHub 交互,获取并总结公共 GitHub 存储库的最新提交。通过这些示例,开发者可以更好地理解 MCP 的工作原理和应用场景,为构建更强大的 AI 应用提

洛阳泰山的博客 4361

MCP协议详细教程

Host:需要访问外部资源的AI应用(如Claude Desktop、Cursor或自定义代理)Clients:与服务器保持连接的连接器Servers:通过MCP协议公开功能(数据、工具、提示)的轻量级程序:MCP服务器可以访问的本地(文件、数据库)和远程服务(API)MCP内的通信使用基于WebSocket连接的JSON-RPC 2.0,确保组件之间的实时双向通信。构建了自己的MCP后,让我们尝试自己构建MCP Host和Client。

小森的博客 2031

RAG与MCP技术对比分析:深入探讨两者差异与优势!

通过增强生成结果的准确性和专业性通过协调 LLM 与外部工具/数据源的交互,支持复杂操作流程检索模块(如向量数据库)获取外部信息 → 生成模块(LLM)融合检索结果生成内容 [1] [9]定义标准协议规范 LLM 的输入输出上下文,实现多工具调用、动态数据路由和状态管理 [13] [21]依赖外部结构化/非结构化知识库(如文档、数据库)依赖预定义的工具集(API、函数)及上下文路由规则医疗问答(检索最新论文+患者病历生成诊断建议)[15] [34]

2401_84204207的博客 2205

MCP 协议知识详解

通过掌握MCP2515与CAN协议,可构建高可靠性的分布式嵌入式系统,适用于复杂环境下的实时通信需求。MCP(Microchip Controller Protocol)通常指与。相关的通信协议,尤其在嵌入式系统中,常见于其。为例,解析其协议核心内容及应用。

ldq520的博客 1062

Gradio全解13——MCP协议详解(1)——MCP协议介绍与架构组件

MCP是当前人工智能领域最热门技术之一,是实现大模型快速应用的捷径。本章将基于MCP最新方案修订版:2025-06-18,详细讲解MCP协议细节,并实战如何通过Gradio构建MCP客户端与服务器。

shao918516的博客 1422

什么是MCP协议?AI Agent时代如何选择MCP协议?

什么是MCP协议?AI Agent时代如何选择MCP协议? 摘要 在人工智能(AI)迅猛发展的今天,如何让大型语言模型(LLM)充分利用外部数据和工具已成为关键问题。MCP 协议(Model Context Protocol,模型上下文协议)作为一种开放标准,正以其统一、灵活且安全的设计,为解决数据孤岛和碎片化集成问题提供了一条全新的路径。本文将详细解析 MCP 协议的原理、架构、优势及在 AI Agent 时代下的应用前景,同时探讨如何从开放性、生态支持、安全性、易用性和性能等多个维度选择适合自身场景的

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 1万+

STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据)

STM8S全解析之系列文章4—STM8S芯片项目升级引导程序(使用中断接收升级数据) 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据)前言一、Flash划分boot和App二、使用步骤1.引入库2.读入数据总结 前言 用过STM8S都知道它没有中断向量重定向,也就意味着STM8S的中断向量没办法指向其他的位置,间接说明升级的引导

weixin_39853312的博客 1031

MCP协议是什么?MCP入门实战

MCP协议:增强AI与外部系统交互的开放标准 MCP(Model Context Protocol)是一种类似"USB-C接口"的开放协议,旨在标准化AI与外部工具和数据的交互方式。其核心采用客户端-服务器架构,通过SDK实现三层通信:客户端/服务器层、会话层和传输层。MCP提供六大核心功能,其中最实用的是"Tools"工具调用功能,使AI能执行外部操作。使用方式包括通过云平台(如阿里云百炼)或本地运行MCP服务,支持多种客户端软件和编程语言集成。

欢迎来到空说的博客 4086

IoT 平台架构全景图:从设备到 AI 的完整技术体系深度解析

随着物联网设备规模进入百万级时代,IoT 平台架构已经从简单的设备接入系统演变为完整的数据平台。本文从系统架构师视角,深度解析 IoT 平台的完整技术体系,包括设备接入、MQTT 通信、消息流平台、数据平台与 AI 决策系统,并结合主流云平台实践,构建从设备到 AI 的完整 AIoT 架构认知。

moton2017的博客 856

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月12日-生产期间维护用的双重隔离

生产期间维护用的双重隔离。该程序用于准备将一个或多个双工位设置为维护状态,同时SABRE 3D/3DxT/3D Scimitar保持生产运行。其目的是在不中断生产的情况下将双工位与运行中的设备隔离。

weixin_46735260的博客 574

AI - MCP 协议

MC(Model Context Protocol,模型上下文协议)是一种开放标准,目的是增强AI与外部系统的交互能力。MCP为AI提供了与外部工具、资源和服务交互的标准化方式,让AI能够访问最新数据、执行复杂操作,并与现有系统集成。根据MCP官方定义,MCP是一种开放协议,标准化了应用程序如何向大模型提供上下文的方式。可以将MCP想象成AI应用的USB接口。就像USB为设备连接各种设备提供了标准化方式一样,MCP为AI模型连接不同的数据源和工具提供了标准化方法。

qq_29802989的博客 1462

AHB不对称半桥反激电路设计(一)变换器拓扑工作原理详解

本文详细分析了AHB(不对称半桥)反激变换器拓扑的工作原理及关键优势。该拓扑通过谐振腔结构实现原边功率管的零电压开通(ZVS)和副边整流管的零电流关断(ZCS),显著提升效率至95%以上。文章阐述了6个工作阶段的时序特征,包括谐振电感电流和电容电压的数学模型推导。AHB拓扑具有漏感能量回收、宽电压输出(适配PD快充等场景)和协同储能等优势,相比传统方案可缩小变压器体积30%,成为100-300W隔离电源的理想选择。

【Simon】的博客 7157

MCP 协议

MCP协议是Anthropic推出的开源AI集成标准,通过JSON-RPC 2.0实现AI模型与外部系统的安全双向通信。该协议支持多种传输方式(stdio/HTTP),提供标准化接口解决AI集成中的"N×M"问题,使开发者无需为每个AI模型重写连接器。MCP包含核心功能如上下文管理、工具调用和安全控制,支持元数据标签、提示仓库和流式响应等扩展功能。协议采用客户端-服务器架构,AI应用作为客户端,数据源作为服务器。安全性方面建议启用TLS加密和实施最小权限原则。MCP已获OpenAI等主要

likuoelie的博客 1471

Eigen 直线拟合/曲线拟合/圆拟合/椭圆拟合

使用Eigen库进行直线拟合是数据分析和科学计算中的常见任务,主要通过最小二乘法实现。该代码演示了二维空间中的直线拟合,输出斜率和截距。

深之JohnChen的专栏 1598

33、嵌入式系统中的内存操作与实时操作系统

本博客详细探讨了嵌入式系统中的内存操作和实时操作系统(RTOS)的基本原理及应用。内容涵盖C、C++和MicroPython三种语言下的SDRAM读写示例,并结合机器人真空吸尘器的实际应用说明内存的使用场景。此外,还介绍了RTOS的核心概念、组件及其工作机制,包括任务、事件、互斥锁、信号量、队列等,并以FreeRTOS和Mbed OS为例展示了RTOS的配置与使用方法。最后,通过常见问题和实践项目加深对嵌入式系统开发的理解。

zz67890的博客 145

AI06——MCP 协议

MCP(Model Context Protocol,模型上下文协议)是一种开放标准,目的是增强 AI 与外部系统的交互能力。MCP 为 AI 提供了与外部工具交互的标准化方式,让 AI 能够访问最新数据、执行复杂操作,并与现有系统集成。MCP 是一种开放协议,它标准化了应用程序如何向大模型提供上下文的方式。可以将 MCP 想象成 AI 应用的 USB 接口,提供了标准化方式一样(类似于转接器),MCP 为 AI 模型连接不同的数据源和工具提供了标准化的方法。MCP 它是个或者。

2301_76292614的博客 1680

GPS系统跟踪捕获算法的Verilog实现在FPGA

本文将介绍GPS系统中的跟踪捕获算法,并提供该算法的Verilog实现在FPGA上运行的源代码。常用的方法是将接收到的信号与一个本地振荡器产生的参考信号进行混频,然后使用带通滤波器提取出希望得到的频率分量。码跟踪的目的是通过检测接收到的信号中的码片序列来实现对导航数据的解调。以上是一个简化的GPS系统跟踪捕获算法的Verilog实现,其中包含了时间检测、频率跟踪和码跟踪三个模块。GPS信号由载波频率和导航数据组成。跟踪捕获算法的目标是通过对接收到的信号进行处理,从而获取到准确的载波频率和导航数据。

PixelEnigma的博客 1108

什么是A2A协议?什么是MCP协议?A2A和MCP协议哪个更好?

什么是A2A协议?什么是MCP协议?A2A和MCP协议哪个更好?A2A协议(Agent-to-Agent协议)是一个开源的通信协议,旨在为不同系统和平台中的智能体提供标准化的交互方式。智能体(Agent)是能够执行特定任务的AI实体,而A2A协议确保这些智能体能够通过一致的标准进行通信和协作,从而达到跨平台协同工作的效果。MCP协议(Model Context Protocol)是由Anthropic提出的标准协议,专为解决大型语言模型(LLMs)如何与外部系统交互而设计。MCP协议

猫头虎技术团队:授渔优于赠鱼,兴趣引领智慧,探索之乐尤显珍贵。商务合作+:Libin9iOak ,万粉变现+:优快云WF,猫头虎承诺每年免费为100名C站创作者做账号流量诊断服务!全网搜:猫头虎技术团队,点击文章底部名片或直接私信我一切皆可谈,快找虎哥! 1万+

labelImg使用教程

Anaconda环境 安装 Anaconda 之后,在开始菜单下找到 Anaconda 文件夹 找到 Anaconda Prompt 点击运行 安装 labelImg pip install labelImg #直接命令行输入 启动 labelImg labelImg #直接命令行输入名称即可 labelImg界面 开始标注 快捷键:W(创建方框),A(上一张),D(下一张) XML文件示例 <annotation> <folder>夜读</folder>

G果的博客 3万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MCP大模型协议

本文介绍了MCP(Model Context Protocol)协议,该协议由Anthropic公司提出,旨在统一大语言模型与外部工具的调用方式。传统方法依赖开发者编写复杂提示词实现功能调用,存在标准化不足、开发效率低等问题。MCP协议类比USB扩展坞或HTTP协议,为大模型与各类工具(如百度地图、Unity、Blender等)提供统一接口,无需编写提示词即可实现功能调用。文章阐述了MCP的技术架构(Host/Server模式)、应用场景(游戏开发、3D建模等)以及其推动智能体生态发展的潜力,强调MCP可能

qq_43548590的博客 1875

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

一文讲清什么是MCP 协议?

MCP 即 Model Context Protocol(模型上下文协议),是由 Anthropic(Claude 模型的主体公司)在 2024 年 11 月推出并开源的一项创新标准。它是一种开放标准协议,用于将 AI 模型连接到各种外部工具和数据源,通俗来讲,它就如同 AI 界的 USB 接口,定义了一套规则,告诉 AI 如何调用工具,包括参数名、参数类型和参数描述等信息,还能响应 AI 的 Toolcall 并返回结果,让 AI 携带结果继续发起对话。

Leaton的博客 4469

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

mcp协议详细剖析分解

MCP(模型上下文协议)是一种标准化的协议,它让 AI 大模型能够以一种有组织的方式和外部工具、资源进行互动。它支持多种传输方式,这样在不同的环境下都能灵活使用。

zhonghua881016的博客 1297
上一篇: HTTP3原理解析和实战应用
Box_clf
博客等级 码龄9年 252粉丝 84原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值