
面试官说说 MCP 由哪几部分组成♂️我MCP 就是一个协议嘛主要就是 Client 和 Server 两部分Client 发请求Server 返回结果跟普通的 HTTP 接口差不多。面试官就 Client 和 Server那 Host 是什么角色而且你说「跟 HTTP 接口差不多」MCP 的能力类型你了解吗Server 能暴露哪些东西♂️我Host 应该就是 Client 的别名吧Server 暴露的就是工具比如调 API、读文件这些都算工具。面试官Host 和 Client 是两个不同的角色Host 是宿主应用Client 是 Host 里负责通信的模块一个 Host 可以连多个 Server。而且 Server 暴露的不只是 Tools还有 Resources 和 Prompts三者职责完全不同你把只读数据和有副作用的操作混为一谈了。另外底层的传输协议你也没提消息格式和传输方式这一层也是 MCP 的核心组成部分。好吧MCP 的组成确实不是「Client Server」这么简单下面我从三个层次把它拆清楚看完你就知道每一层各自负责什么了。 简要回答MCP 由三层组成可以从角色、能力、协议三个维度来理解。角色层有三个Host 是 AI 应用本身比如 Claude DesktopClient 是 Host 里负责和 Server 通信的模块Server 是工具提供方实现的独立进程一个 Host 可以同时连多个 Server。能力层定义了 Server 能暴露三类东西Tools 是有副作用的操作比如创建文件、调 APIResources 是只读数据比如读取文档内容Prompts 是预定义的提示词模板。协议层是底层通信消息格式统一用 JSON-RPC 2.0传输方式支持 stdio本地子进程通信和 Streamable HTTP远程 HTTP 连接两种早期的 HTTPSSE 双端点方案在 2025 年 3 月的规范更新里被标记为 deprecated。这三层合在一起就是 MCP 的完整组成。 详细解析先建立整体感三层来看就清楚了很多人第一次接触 MCP 会被各种概念搞乱什么 Host、Client、Server、Tools、Resources、Prompts、JSON-RPC、stdio、SSE……一堆名词扔过来确实容易懵。其实你只要把它拆成三层来看就清楚了第一层是角色架构搞清楚谁和谁在通信第二层是能力类型搞清楚 Server 能暴露什么东西给模型用第三层是传输协议搞清楚消息是怎么传的。这三层各自独立、互不耦合合在一起就是 MCP 的完整骨架。下面我一层一层拆开来讲。第一层角色架构Host / Client / ServerMCP 定义了三个角色弄清楚每个角色负责什么是理解整个系统的关键。先说 Host。Host 是整个系统的宿主也就是你在用的 AI 应用本身比如 Claude Desktop、Cursor、Windsurf。Host 负责启动和管理所有 MCP Client控制连哪些 Server、什么时候断开连接是整个 MCP 系统的调度中心。你可以把 Host 理解成一家公司它决定要和哪些外部供应商Server合作并派出自己的联络员Client去对接。再说 Client。Client 是 Host 内部的连接模块一个 Client 对应一个 Server 连接。它负责三件事初始化和 Server 的连接、向 Server 查询「你有哪些工具/资源/模板」能力发现、把模型的调用请求转发给 Server 并把结果带回来。Client 是 Host 派出的「驻场联络员」专门负责和某一个 Server 打交道Host 本身不直接和 Server 说话。最后是 Server。Server 是工具提供方实现的独立进程对外暴露自己的工具、资源和提示词模板。Server 完全不关心上面是哪个 Host 在用它只需要按 MCP 协议响应 Client 的请求就行。这也是 MCP 的核心价值所在Server 写一次任何支持 MCP 的 Host 都能直接用GitHub 的官方 MCP Server 不需要分别为 Claude Desktop 和 Cursor 各写一份。三者的关系用图来看是这样的一个 Host 同时连多个 Server模型就同时拥有了所有这些工具能力而应用代码完全不需要为此多写一行。第二层能力类型Tools / Resources / Prompts理解了角色分工接下来看 Server 到底能暴露什么给 Client。很多人以为 Server 就只提供「工具」其实不止MCP 定义了三类能力每类解决不同的需求设计上有明确的职责分工。第一类是 Tools工具这是最核心、使用最频繁的能力对应的是有副作用的操作执行之后会改变外部世界的状态。创建文件、提交代码、发送 Slack 消息、调用第三方 API都属于 Tools。由模型主动触发执行有不可逆性所以通常需要用户授权确认。Tools 对应 Function Calling 里「函数」的概念只是在 MCP 框架下被标准化打包了。第二类是 Resources资源这是只读数据没有任何副作用只是把数据提供给模型看。读取日志文件、查询数据库记录、获取文档内容都是 Resources。和 Tools 最本质的区别是什么呢Resources 不会改变任何东西可以更宽松地暴露不需要像 Tools 那样谨慎授权。你可以把 Resources 理解成「工具的资料室」可以进去查资料但不能修改里面的东西。第三类是 Prompts提示模板这是预定义的提示词模板带参数占位符。它解决的是「每次都要手写重复 prompt」的问题。比如把团队固定的代码审查标准封装成模板接受「编程语言」和「代码内容」两个参数调用时只需传参自动展开成完整提示词不用每次从头写。这个能力特别适合团队内部的最佳实践共享把积累的优质 prompt 模板化所有人统一复用标准也更一致。三者的本质区别可以这样记Tools 改变世界Resources 观察世界Prompts 结构化表达。第三层传输协议JSON-RPC 2.0 传输方式Client 和 Server 之间的通信由两部分组成消息格式和传输方式这两层是解耦的。消息格式统一用 JSON-RPC 2.0。每条消息是一个 JSON 对象格式固定Client 发请求时说清楚「调哪个方法、参数是什么、这次请求的 ID 是多少」Server 返回响应时带上执行结果或错误信息通过 ID 匹配请求和响应。用 JSON 格式的好处是易读、易调试、任何编程语言都能实现不管 Server 是 Python 写的还是 TypeScript 写的消息格式是一样的。// Client 向 Server 查询工具列表{jsonrpc: 2.0, id: 1, method: tools/list, params: {}}// Server 返回工具列表{jsonrpc: 2.0, id: 1, result: {tools: [{name: read_file, ...}]}}// Client 请求调用某个工具{jsonrpc: 2.0, id: 2, method: tools/call, params: {name: read_file, arguments: {path: /tmp/log.txt}}}那消息格式定了怎么传呢MCP 支持两种传输方式适合不同的部署场景。第一种是 stdio标准输入输出Server 作为本地子进程运行Host 通过操作系统的管道和它通信Server 从 stdin 读请求、把结果写到 stdout。这种方式适合本地工具不需要网络延迟极低也没有端口占用和网络安全问题Claude Desktop 接本地 MCP Server 走的就是这种方式。第二种是Streamable HTTPServer 作为 HTTP 服务独立部署Client 通过 HTTP 连接和它通信。这种方式适合远程部署的场景支持多个 Client 共享同一个 Server比如团队共用一个部署在服务器上的数据库 MCP Server所有人连同一个服务不需要各自本地跑一份。这里有个演进要说清楚MCP 早期2024-11-05 规范的远程传输方案叫「HTTP SSE」是双端点结构一个 GET 端点开 SSE 接收 Server 推送一个 POST 端点用来发请求。这套方案在 2025 年 3 月的规范更新里被改成了单端点的 Streamable HTTP老的 HTTPSSE 被标记为 deprecated但保留向后兼容。Streamable HTTP 并不是抛弃 SSE而是把双端点合并成一个/mcp。Client 用 POST 发请求Server 根据情况灵活返回短请求直接回普通 JSON长请求则把 HTTP 响应升级为 SSE 流持续推送中间结果。这样一个端点就能干完所有事对负载均衡器和 serverless 环境都更友好。这里有一个很重要的设计点消息格式JSON-RPC 2.0和传输方式stdio / Streamable HTTP是解耦的同一套 JSON-RPC 消息可以跑在任意传输层上切换传输方式不影响上层的工具调用逻辑。这个设计让 MCP Server 既可以轻量地作为本地进程运行也可以作为正式的微服务部署实现方式灵活但协议层始终一致。 面试总结回到开头踩的雷最大的问题是把 MCP 简单理解成「Client Server」的二元结构忽略了 Host 这个角色。面试回答这道题第一个要点是三层结构要说清楚角色层Host / Client / Server、能力层Tools / Resources / Prompts、协议层JSON-RPC 2.0 stdio / Streamable HTTP。特别是 Host 和 Client 的区别Host 是宿主应用本身Client 是 Host 内部负责和 Server 通信的模块一个 Host 可以同时连多个 Server这个一对多的关系是 MCP 的核心设计。第二个容易踩的雷是把 Server 暴露的能力全归为「工具」。Tools、Resources、Prompts 三者职责分明Tools 有副作用、改变外部状态Resources 是只读数据、没有副作用Prompts 是提示词模板。面试时说清楚三者的区别尤其是 Tools 和 Resources 的本质差异有无副作用会让面试官觉得你真正理解了 MCP 的设计意图而不是只停留在表面。第三个要提到的是协议层的解耦设计消息格式和传输方式是独立的JSON-RPC 2.0 定义了消息长什么样stdio 和 Streamable HTTP 定义了消息怎么传两者互不耦合这也是 MCP 灵活性的来源。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】