MCP(Model Context Protocol) 协议介绍

更多新鲜技术资讯,欢迎关注公众号: 深度极客

更多开源技术,请关注以上公众号

缩写全称描述
Anthropic/一家 AI 公司,推出了 Claude 3.5 Sonnet 模型
MCPModel Context Protocol模型上下文协议,LLM 应用程序和外部数据源之间无缝集成的协议
uv/一个快速的 Python 包和项目管理器,用 Rust 编写。

MCP 介绍

概要

模型上下文协议 (MCP) 是一种开放协议,可实现 LLM 应用程序与外部数据源和工具之间的无缝集成,无论是构建智能 IDE、扩展接口,还是创建 AI 工作流程,MCP 都提供了一种标准化方法,将 LLMs 与其所需的上下文连接起来。MCP调用流程
如上图所示,其中每个节点的作用如下:

  • MCP Hosts: 通过 MCP 访问资源的程序,例如 Claude Desktop、IDE 或 AI 工具。
  • MCP Clients: 与服务器保持 1:1 连接的协议客户端。
  • MCP Servers: 每个轻量级程序都通过标准化模型上下文协议公开特定功能
  • Local Resources: MCP 服务器可以安全访问的计算机资源(数据库、文件、服务)
  • Remote Resources: MCP 服务器可以连接到的互联网上可用的资源(例如,通过 API)

可以看到,其中最主要的部分是 MCPServer,这是一个实现了本地资源或者远端资源交互的程序,并且实现 MCP 协议。
Host 去调用资源时,实际上是通过不同的 MCPServer 去调用,比如 Server 可以是 GitHub 相关,也可以是 sqlite 相关。
例如,通过 MCP 去访问本地的数据库,具体流程如下:
在这里插入图片描述

  • Claude Desktop 充当 MCP 客户端
  • SQLite MCP Server 提供安全的数据库访问
  • 本地 SQLite 数据库存储实际数据

Server 和本地 SQLite 数据库之间的通信完全发生在本地,MCP 确保 Claude Desktop 只能通过明确定义的接口执行批准的数据库操作,所以这是一种安全的方式让 Claude 分析本地数据并与之交互,同时保持对其可以访问的内容的完全控制。

通过该实例进行发散,如果要通过 MCP 访问更多的外部数据,就需要添加无数个 MCPServer。
这种添加方式就类似于增加插件,那么现在 MCP 的能力就受限于 MCPServer 的个数。

原理

当使用 MCP 与 Claude Desktop 交互时,具体流程如下:

1.Server Discovery:
Claude Desktop 在启动时连接到配置好的 MCP 服务器

2.Protocol Handshake:
当询问数据时,Claude Desktop:

  • 确定哪个 MCP 服务器可以提供帮助(在本例中为 sqlite)
  • 通过协议协商能力
  • 从 MCP 服务器请求数据或操作

3.Interaction Flow:
请添加图片描述
4.Security:

  • MCP 服务器仅公开特定的、受控的功能
  • MCP 服务器在本地运行,它们访问的资源不会暴露在互联网上
  • 需要用户确认敏感操作

不过这也有一个问题,MCPServer 是如何部署到本地的呢?如果一开始就集成到安装包里面,那后续要扩展,是否需要动态从仓库中下载?

已有的 MCPServer

在官方给出的仓库里面,已经包含了 10 余种 Server,包括 git、github、sqlite 等,不过目前来看,数量还是比较少的。
在这里插入图片描述

所以理论上,如果要获取更多服务,还是要面向自己的业务编写 Server。

如何创建自己的 MCPServer

以下是用 Python 生成一个 MCPServer 的示例,总体来说还是比较方便。

前置工作

1、创建工程
MCP 已经提供了工程创建器,所以我们不用从零开始写代码。
在这里插入图片描述
这里是用的 uv 包管理器,可以通过“create-mcp-server”直接创建模板工程。

2、创建环境
在这里插入图片描述
这里需要创建一个访问服务的 Key。
说明:当我们要访问的服务需要验证,就需要添加访问 Key。

创建服务

在模板 weather_service/src/weather_service/server.py 文件中,添加具体代码。
在这里插入图片描述

后续只要实现 MCP 的具体接口即可。
在这里插入图片描述

总结

MCP 是一个全新的协议,在 AI 领域也需要一个统一的协议去抽象不同工具、数据的调用,MCP 如果能继续发展完善,将有可能成为 AI 领域的 LSP。

此外,对工具的调用,让我们容易想到另一种方式----Function Call,以下是它和 MCP 使用建议:

  • 对于需要复杂上下文管理的场景,优先考虑 MCP
  • 对于需要明确功能调用的场景,继续使用 Function Call
  • 在大型项目中考虑两者结合使用

目前来看,可以将 MCP、FunctionCall、视觉驱动三者结合起来,进而增大 AI 的交互边界,为用户带来更便捷的体验。

更多新鲜技术资讯,欢迎关注公众号: 深度极客

参考

uv
MCP GitHub
MCPServer 仓库
MCPServer 创建指南

<think>好的,我需要回答用户关于MCP协议在IT领域的用途及实现的问题。首先,我需要明确用户提到的MCP具体指的是哪个协议,因为可能有多个缩写为MCP的术语。根据用户提供的引用内容,有三个来源: 引用[1]提到了MCPModel Context Protocol),作为AI与外部工具和数据交互的标准,并提到附录中的MCP Server开发实践。引用[2]同样解释了MCPModel Context Protocol,用于AI交互。引用[3]提到了Burroughs MCP,这是与Unisys Clearpath相关的一个操作系统,属于历史系统。 用户的问题集中在IT领域,因此需要区分这两种不同的MCP。根据引用[1]和[2],重点应该是Model Context Protocol,而引用[3]中的Burroughs MCP可能不是用户关注的重点,但为了全面性,可能需要简要提及。 接下来,我需要整理MCPModel Context Protocol)的用途和实现。用途方面,需要说明其在AI与外部工具和数据交互中的作用,如标准化接口、模型管理、上下文感知等。实现部分需要参考附录中的开发实践,可能涉及通信协议设计、API网关、上下文管理模块等组件。 同时,需要确保回答结构清晰,分点说明用途和实现,并生成相关问题。还要注意引用标记的正确使用,例如在提到标准化接口时引用[^1]和[^2]。 另外,用户可能混淆了不同MCP,因此需要明确区分Model Context Protocol和Burroughs MCP,但根据引用内容,用户更可能关注前者。最后,生成的相关问题应围绕MCP协议的应用、技术挑战、与其他协议的区别,以及历史背景如Burroughs MCP。 需要验证信息是否准确,尤其是引用来源中的内容是否支持所述用途和实现。例如,引用[1]提到附录的开发实践,可能涉及服务器实现,因此可以推测MCP的实现包括服务器端组件、API设计等。 总结回答结构:先介绍MCP的定义,分点用途,分点实现,区分不同MCP,生成相关问题。</think>### MCP协议在IT领域的用途及实现 MCPModel Context Protocol)是一种用于AI系统与外部工具、数据源进行标准化交互的协议,尤其在模型上下文管理方面发挥关键作用。以下是其核心用途及实现方式: --- #### 一、MCP协议的主要用途 1. **标准化AI与外部工具的交互** MCP定义了AI模型调用外部工具(如数据库、API、硬件设备)的统一接口,例如通过RESTful API或gRPC实现服务注册与调用[^2]。 2. **动态上下文管理** 支持运行时上下文(如用户输入、环境参数、历史交互记录)的传递与更新,增强AI模型的场景适应能力。 3. **模型生命周期管理** 提供模型加载、版本控制、资源分配等功能,简化多模型协同工作的复杂度。 4. **安全与权限控制** 通过身份验证和访问控制策略(如OAuth 2.0),确保外部工具和数据调用的合规性。 --- #### 二、MCP协议的典型实现 1. **通信协议设计** 基于HTTP/2或WebSocket实现高效数据传输,协议消息格式通常采用JSON或Protocol Buffers[^1]。 2. **核心组件** - **API网关**:负责路由请求、负载均衡和协议转换(如将MCP请求转换为数据库查询语句)。 - **上下文管理器**:维护会话状态,例如使用Redis存储实时上下文数据。 - **模型执行引擎**:调度AI模型运行,支持TensorFlow、PyTorch等框架的集成。 3. **开发实践示例** ```python # MCP Server 示例(简化) from flask import Flask, request app = Flask(__name__) @app.route('/execute', methods=['POST']) def handle_mcp_request(): context = request.json.get('context') tool_id = request.json.get('tool_id') # 调用外部工具并返回结果 result = external_tool_invoke(tool_id, context) return {'status': 'success', 'data': result} ``` --- #### 三、其他MCP相关概念 - **Burroughs MCP**:历史上由Unisix开发的**操作系统级MCP**(Master Control Program),专注于事务处理和大型机资源管理[^3],与AI协议无关。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值