MCP (Model Context Protocol) 技术理解 - 第一篇
文章目录引言MCP是什么MCP到底解决什么问题MCP的架构小结引言我一直为网上没有很好且通俗易懂的MCP技术文档而烦恼所以我通过记录自己查阅官方文档来写一份通俗易懂的MCP技术文档从架构到实战既有技术深度又能让小白一听就懂。这对我是一种挑战如果笔误可以在评论区指出谢谢MCP是什么Model Context Protocol (MCP) 是 Anthropic 于 2024 年 11 月发布的开放标准协议,旨在为 LLM 应用提供统一的方式来连接外部数据源和工具。它被称为AI 的 type-c接口。但是我觉得如果就将它比喻成type-c接口我觉得太草率。我们先标出重点MCP它是一种协议一种标准MCP是一种协议MCP是一种协议MCP是一种协议重要的事情说三遍。那么它到底是干了什么这里直接通俗易懂来说吧假如说LLM是大脑那么LLM可以通过MCP协议长出手脚可以做到访问资源调用工具预制模板的事情等。为什么这么说在古早时期也就是Chat-GPT横空出世的时候他也就是一个简单的chatbot靠着以往的知识库回答问题而不能实时去访问web上的资源和你自己的知识库也不能去帮你发邮件订航班等等。有了MCP我们就有了一种标准去做这些事。我们只要去实现了标准MCP的接口数据发送和接收都是解析相同格式的数据那么按照理论来说我们就能让AI应用帮我们做任何事情(当前不讨论物理世界的劳动)。MCP到底解决什么问题我们上面讨论了MCP能帮我们实现的事情那么MCP它本质上到底解决了什么问题难道我们以前没有MCP就无法查看web上面的资源或者知识库吗让我们下面一起讨论一下。传统上我们也是可以实现MCP的功能但是这样有个问题每个企业所创造出来的软件或者说应用程序它都不是一个统一的接口来进行tool calling的都是自成一派。这样就会导致集成非常繁杂。上代码来解释一下这种现象传统方式的痛点:# 每个集成都需要自定义代码ifservicegithub:github_clientGitHubClient(token)datagithub_client.get_issues()elifserviceslack:slack_clientSlackClient(token)dataslack_client.get_messages()elifservicedatabase:db_clientDatabaseClient(connection_string)datadb_client.query(SELECT * FROM users)# ... 每个服务都不同使用MCP统一了之后# 统一接口,标准化协议mcp_clientMcpClient()# 所有服务使用相同的协议resourcesmcp_client.list_resources()# 获取可用资源toolsmcp_client.list_tools()# 获取可用工具resultmcp_client.call_tool(search,args)# 调用工具这里我们强调一下MCP的三大核心能力吧分别是访问资源调用工具预制模板下面的表格解释了它各自的特点与作用能力说明控制方示例Resources只读数据源Application文件内容、数据库记录、API 响应Tools可执行函数Model搜索航班、发送消息、创建日历事件Prompts预制模板User计划旅行、总结会议、起草邮件理解三大能力是非常重要的关乎MCP的开发能力。MCP的架构现在我们一起来看看MCP的架构是怎么样的。MCP 采用客户端-服务器架构其中 MCP 主机例如Claude Code或Claude Desktop等 AI 应用与一个或多个 MCP 服务器建立连接。MCP 主机通过为每个 MCP 服务器创建一个 MCP 客户端来实现这一点。每个 MCP 客户端与其对应的 MCP 服务器保持专用连接。使用 STDIO 传输的本地 MCP 服务器通常服务于单个 MCP 客户端而使用 Streamable HTTP 传输的远程 MCP 服务器通常服务于多个 MCP 客户端。MCP架构的关键参与者包括MCP 主机用于协调和管理一个或多个 MCP 客户端的 AI 应用程序MCP 客户端一个维护与 MCP 服务器连接并从 MCP 服务器获取上下文以供 MCP 主机使用的组件。MCP 服务器一个为 MCP 客户端提供上下文信息的程序这里引用官方文档的例子例如Visual Studio Code 充当 MCP 主机。当 Visual Studio Code 与 MCP 服务器例如Sentry MCP 服务器建立连接时Visual Studio Code 运行时会实例化一个 MCP 客户端对象来维护与 Sentry MCP 服务器的连接。随后当 Visual Studio Code 连接到另一个 MCP 服务器例如本地文件系统服务器时Visual Studio Code 运行时会实例化另一个 MCP 客户端对象来维护此连接。请注意MCP 服务器指的是提供上下文数据的程序无论其运行位置如何。MCP 服务器可以本地运行也可以远程运行。例如当 Claude Desktop 启动文件系统服务器时由于它使用 STDIO 传输因此服务器运行在同一台机器上。这通常被称为“本地”MCP 服务器。官方的 Sentry MCP 服务器运行在 Sentry 平台上并使用 Streamable HTTP 传输。这通常被称为“远程”MCP 服务器。小结第一篇我们就先解析MCP的概念解决的问题还有架构。接下来我们继续解析通信协议和数据格式等有兴趣的可以关注此栏目

相关新闻

协鑫集成高级AI开发工程师职位深度解析:职责、能力与面试指南

协鑫集成高级AI开发工程师职位深度解析:职责、能力与面试指南

协鑫集成 高级AI开发工程师 职位信息 职位详情: 1.探索、跟踪国内外领先的AI技术、产品方案,推动其在公司内应用,提升企业运营效率,生产效率。 2.协调各部门团队,包括研发、工艺、生产、职能等,确保AI项目目标实现。 3.结合AI背景和行业需求,为企业数字化、智能化提供指…

2026/7/4 3:56:23 阅读更多 →
人工智能开发职位申请指南:陕西华码半导体科技有限公司面试准备

人工智能开发职位申请指南:陕西华码半导体科技有限公司面试准备

陕西华码半导体科技有限公司 人工智能开发 职位信息 职位要求: 1.本科及以上学历 2.对互联网行业感兴趣,熟悉基础的JAVA、C、C++等编程语言 3.计算机相关专业,无经验前期统一由公司专业工程师带领学习 4.要求学习能力较强,积极主动,具有良好的学习心态 朝九晚六,周末双休…

2026/7/5 19:05:06 阅读更多 →
字符串 / 内存函数与大小端模式深度解析

字符串 / 内存函数与大小端模式深度解析

在 C 语言底层编程中,字符串操作、内存拷贝是高频场景,而大小端模式则是处理多字节数据时绕不开的基础问题。本文将从函数原理、实现逻辑、场景适配角度,系统梳理strncpy/strncat/memcpy/memmove的核心特性,并结合大小端模式的实际…

2026/5/17 3:34:19 阅读更多 →

最新新闻

开源网络管理平台:企业级基础设施自动化解决方案深度解析

开源网络管理平台:企业级基础设施自动化解决方案深度解析

开源网络管理平台:企业级基础设施自动化解决方案深度解析 【免费下载链接】it-tools Collection of handy online tools for developers, with great UX. 项目地址: https://gitcode.com/GitHub_Trending/ittoo/it-tools 在当今分布式系统与云原生架构盛行的…

2026/7/6 17:06:41 阅读更多 →
零成本构建你的AI股票分析助手:从零到精通的实战指南

零成本构建你的AI股票分析助手:从零到精通的实战指南

零成本构建你的AI股票分析助手:从零到精通的实战指南 【免费下载链接】daily_stock_analysis LLM 驱动的多市场股票智能分析系统:多源行情、实时新闻、决策看板与自动推送,支持零成本定时运行。 LLM-powered multi-market stock analysis sys…

2026/7/6 17:04:38 阅读更多 →
Camunda BPM 7终极指南:如何在Java项目中快速集成开源工作流引擎

Camunda BPM 7终极指南:如何在Java项目中快速集成开源工作流引擎

Camunda BPM 7终极指南:如何在Java项目中快速集成开源工作流引擎 【免费下载链接】camunda-bpm-platform Camunda 7 CE is End of Life (EoL). Please check out Camunda 8 instead (https://github.com/camunda/camunda) or read about Camunda 7 Enterprise End o…

2026/7/6 17:02:36 阅读更多 →
OpenCode状态持久化:如何用企业级快照技术重塑开发工作流

OpenCode状态持久化:如何用企业级快照技术重塑开发工作流

OpenCode状态持久化:如何用企业级快照技术重塑开发工作流 【免费下载链接】opencode The open source coding agent. 项目地址: https://gitcode.com/GitHub_Trending/openc/opencode 当开发者在解决复杂问题时突然被打断,他们面临的不仅是思路中…

2026/7/6 16:58:31 阅读更多 →
Go项目配置管理难题:基于反射的TOML自动化解析实战

Go项目配置管理难题:基于反射的TOML自动化解析实战

Go项目配置管理难题:基于反射的TOML自动化解析实战 【免费下载链接】toml TOML parser for Golang with reflection. 项目地址: https://gitcode.com/gh_mirrors/toml/toml 在Go语言项目中,配置文件管理常面临类型安全、版本兼容性和文档同步的挑…

2026/7/6 16:54:28 阅读更多 →
国家图书馆ISBN插件:3分钟实现Calibre图书信息自动化管理的终极指南

国家图书馆ISBN插件:3分钟实现Calibre图书信息自动化管理的终极指南

国家图书馆ISBN插件:3分钟实现Calibre图书信息自动化管理的终极指南 【免费下载链接】NLCISBNPlugin 基于中国国家图书馆ISBN检索的calibre的source/metadata插件。https://doiiars.com/article/NLCISBNPlugin 项目地址: https://gitcode.com/gh_mirrors/nl/NLCIS…

2026/7/6 16:50:20 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻