ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MCP知识梳理(1)

MCP知识梳理(1) 作者没有四次元口袋的蓝胖日期2026-10-05标签MCP协议, AI工具MCP协议基础2024年底Anthropic开源了MCPModel Context Protocol短短一年多就成了AI工具生态的事实标准。Claude Desktop、Cursor、VS Code、ChatGPT全都接入了它GitHub上相关服务器已经超过6000个。面试中问到AI Agent、工具调用、大模型应用架构MCP几乎绑绑会涉及。这篇笔记聚焦MCP协议的基础知识——从它是什么、核心架构、三大原语到常用的官方ServerFilesystem和Fetch帮你建立对MCP的完整认知。核心掌握MCP是什么、Host/Client/Server三层架构、Tools/Resources/Prompts三大原语、JSON-RPC 2.0通信、stdio与HTTP传输、FileSystem与Fetch服务。一、MCP是什么1.1 一句话定义MCPModel Context Protocol是一个开源的标准化协议定义了AI应用如何与外部工具和数据源进行通信。用一个类比MCP就是AI世界的USB-C接口。在USB-C之前每个手机品牌用自己的充电口在MCP之前每个AI应用要对接每个工具都得写一套定制集成。MCP把这件事标准化了——任何MCP Client都能连任何MCP Server不用写胶水代码。1.2 解决了什么问题假设你有5个AI应用、10个外部工具数据库、GitHub、文件系统、Slack……传统方式5 × 10 50 个定制集成 MCP方式5 个 Client 10 个 Server 15 个组件这就是从M×N 问题到 MN 问题的转变。写一个MCP Server所有支持MCP的AI应用都能用。在传统模式下OpenAI有Function Calling的格式LangChain有自己的Tool抽象Anthropic有Tool Use规范——同一个数据库要对接三个AI平台就得写三套完全不同的集成代码。MCP的出现终结了这种混乱。1.3 发展时间线时间事件2024.11Anthropic发布MCP协议开源规范与SDK2025年上半年Cursor、VS Code、Zed等开发工具率先接入2025年下半年OpenAI的Agents SDK和Responses API也支持MCP2025.12MCP捐赠给Linux基金会AAIF成为中立治理的开放标准2026年生态爆发公开MCP Server超过6000个成为AI工具对接的事实标准1.4 谁在用MCPAI助手Claude Desktop、ChatGPT开发工具Cursor、VS Code、Zed、Windsurf、Continue.devAgent框架LangChain、OpenAI Agents SDK企业场景Block、Apollo等公司已将MCP集成到内部系统二、核心架构Host / Client / ServerMCP采用三层架构理解这三个角色是理解整个协议的基础。┌─────────────────────────────────┐ │ Host宿主 │ │ 如 Claude Desktop / Cursor │ │ │ │ ┌──────────┐ ┌──────────┐ │ │ │MCP Client│ │MCP Client│ │ │ └────┬─────┘ └────┬─────┘ │ └───────┼──────────────┼─────────┘ │ │ JSON-RPC 2.0 JSON-RPC 2.0 │ │ ┌─────┴─────┐ ┌────┴──────┐ │MCP Server │ │MCP Server │ │ (文件系统) │ │ (GitHub) │ └───────────┘ └───────────┘2.1 三个角色角色职责举例Host包含LLM的AI应用负责编排交互、管理Client实例Claude Desktop、Cursor、VS CodeMCP Client嵌入在Host内部与MCP Server维持1:1连接发送JSON-RPC请求Host内部的协议模块MCP Server独立进程对外暴露Tools/Resources/Prompts不知道模型是谁filesystem server、fetch server几个关键点Host可以管理多个ClientClaude Desktop同时连接Filesystem Server和GitHub Server每个Client只连一个ServerClient和Server之间是1:1关系Server是无感知的Server不知道对面是Claude还是Cursor只处理JSON-RPC请求2.2 通信协议JSON-RPC 2.0所有Client与Server之间的通信都基于JSON-RPC 2.0这是一种轻量级的远程过程调用协议。消息格式如下// 请求{jsonrpc:2.0,method:tools/call,params:{name:read_file,arguments:{path:/home/demo.txt}},id:1}// 响应{jsonrpc:2.0,result:{content:[{type:text,text:文件内容...}]},id:1}关键字段method调用的方法名如tools/list、tools/call、resources/readparams方法参数id请求/响应关联ID确保异步通信中能正确匹配2.3 两种传输方式传输方式适用场景特点stdio本地进程Host启动Server子进程通过标准输入/输出通信无需网络端口安全默认Streamable HTTP远程服务Server暴露HTTP端点支持多租户、云端部署、远程APIstdio的工作流程Host把Server作为一个子进程启动类似npx -y modelcontextprotocol/server-filesystem然后通过stdin发送JSON-RPC请求、通过stdout接收响应。整个过程不需要打开任何网络端口安全性天然有保障。注意早期版本使用HTTPSSEServer-Sent Events2025年11月规范已将其废弃统一为Streamable HTTP。面试时别再说SSE传输了。2.4 连接生命周期一次完整的MCP交互流程1. 初始化Client发送 initialize 请求 → Server返回能力声明 2. 能力发现Client发送 tools/list → Server返回可用工具列表 3. 工具调用模型决定调用某工具 → Client发送 tools/call → Server执行并返回结果 4. 结果回传Client将结果交给模型 → 模型生成最终回复这个流程中步骤2的动态发现是MCP的精髓——Client不需要提前知道Server有什么工具运行时查询即可。三、三大原语Tools / Resources / PromptsMCP Server对外暴露三种能力称为primitives理解它们是掌握MCP的核心。3.1 Tools工具可被模型调用的动作。有名称、描述、输入Schema模型根据描述判断何时调用。类比后端API的POST接口特点可以有副作用写文件、发消息、执行计算示例read_file、search、send_email{name:get_weather,description:获取指定城市的天气信息,inputSchema:{type:object,properties:{city:{type:string,description:城市名称}},required:[city]}}模型的决策链看到description→ 判断用户是否需要天气 → 构造参数调用 → 拿到结果 → 组织回答。所以description写得越清晰模型调用的准确率越高。3.2 Resources资源只读数据源。模型可以拉取Resources作为上下文但不能修改。类比后端API的GET接口特点通过URI标识如file:///config.json、db://users/123无副作用示例配置文件、数据库记录、API响应与Tools的区别Resources是被动拉取的数据Tools是主动执行的动作3.3 Prompts提示模板可复用的提示词模板。封装与特定服务交互的最佳实践。类比API的使用说明书 / 预设的对话工作流特点接受参数生成结构化的消息列表示例代码审查模板、SQL查询引导模板、调试流程模板使用场景当你的工具比较复杂时Prompt可以教模型怎么用效果最好3.4 三者对比原语读写谁触发类比典型场景Tools可写模型决定调用POST接口执行操作、计算、API调用Resources只读模型/用户拉取GET接口读取文件、查询数据库Prompts只读用户选择API文档预定义交互模板四、基本使用配置与启动MCP Server4.1 配置文件位置MCP Client如Claude Desktop通过JSON配置文件声明要连接的Server系统配置文件路径macOS~/Library/Application Support/Claude/claude_desktop_config.jsonWindows%APPDATA%\Claude\claude_desktop_config.jsonLinux~/.config/Claude/claude_desktop_config.json4.2 配置结构{mcpServers:{server-name:{command:npx,args:[-y,包名,参数...],env:{API_KEY:xxx}}}}关键字段说明command启动Server的命令npx、uvx、node、python、docker等args命令参数通常包含包名和业务参数env环境变量常用于传递API Key等敏感信息Cursor也支持项目级配置在项目根目录创建.cursor/mcp.json可以为不同项目配置不同的Server提交到Git后团队共享。五、FileSystem文件服务让AI读写本地文件的MCP Server是使用最广泛的官方Server之一。5.1 配置示例{mcpServers:{filesystem:{command:npx,args:[-y,modelcontextprotocol/server-filesystem,/Users/bluep/Documents,/Users/bluep/Projects]}}}args中从第三个参数开始每个都是允许访问的目录路径白名单机制。可以配多个但务必只开放必要目录。5.2 提供的Tools工具名功能read_file读取文件内容write_file写入文件list_directory列出目录内容create_directory创建目录move_file移动/重命名文件search_files按正则模式搜索文件get_file_info获取文件元信息大小、修改时间等5.3 使用场景让AI分析本地代码项目结构帮你写README读取配置文件并解释每个字段含义批量重命名或整理文件读取日志文件排查线上问题5.4 安全注意点最小权限原则只开放必要目录绝不要开放根目录/或C:\Server无法访问白名单之外的路径这是代码层面的安全约束修改配置后需重启AI应用才能生效不要在开放目录中存放敏感文件如.env、密钥文件六、Fetch网页服务让AI抓取网页内容的MCP Server将HTML转换为Markdown格式方便模型理解。6.1 配置示例方式一通过uvx推荐Python{mcpServers:{fetch:{command:uvx,args:[mcp-server-fetch]}}}方式二通过npxNode.js{mcpServers:{fetch:{command:npx,args:[-y,mcp-fetch-server]}}}方式三通过Docker{mcpServers:{fetch:{command:docker,args:[run,-i,--rm,mcp/fetch]}}}6.2 提供的Tools工具名功能fetch抓取URLHTML转Markdown返回6.3 可选参数参数说明url必填要抓取的网页地址max_length最大返回字符数默认5000start_index从第几个字符开始返回支持分块读取大页面raw是否返回原始HTML不做Markdown转换6.4 高级配置{mcpServers:{fetch:{command:uvx,args:[mcp-server-fetch,--ignore-robots-txt,--user-agentMyBot/1.0,--proxy-urlhttp://proxy:8080]}}}--ignore-robots-txt忽略网站的robots.txt限制谨慎使用--user-agentxxx自定义请求的User-Agent--proxy-urlxxx配置代理地址6.5 使用场景让AI获取网页上的最新信息新闻、文档、API说明抓取技术博客内容做总结读取在线文档作为上下文获取GitHub Issue或PR的内容️ 思维导图速览MCP协议Model Context Protocol ├── 是什么 │ ├── Anthropic 2024.11开源的标准化协议 │ ├── AI世界的USB-C接口 │ └── 将M×N集成问题降为MN ├── 三层架构 │ ├── HostAI应用Claude/Cursor/VS Code │ ├── Client嵌入Host维持JSON-RPC连接1:1连Server │ └── Server独立进程暴露Tools/Resources/Prompts ├── 通信基础 │ ├── JSON-RPC 2.0协议请求/响应/通知 │ ├── stdio传输本地子进程安全默认 │ └── Streamable HTTP传输远程多租户 ├── 三大原语 │ ├── Tools可执行的动作模型调用可有副作用 │ ├── Resources只读数据URI标识被动拉取 │ └── Prompts可复用的提示模板教模型用好工具 ├── 配置使用 │ ├── 配置文件JSON格式声明command/args/env │ └── 支持全局配置与项目级配置 └── 常用Server ├── Filesystem读写本地文件白名单目录 └── Fetch抓取网页内容HTML→Markdown 写在最后学习建议先用起来先配置Filesystem和Fetch两个官方Server在Claude Desktop或Cursor里体验AI操作文件、抓取网页的感觉建立直觉。理解架构重点理解三层架构和三大原语这是面试考察的核心。能画出Host/Client/Server的关系图就差不多了。动手配置熟悉JSON配置文件的写法搞清楚command、args、env各字段的含义理解stdio传输的安全机制。关注生态GitHub上modelcontextprotocol/servers仓库有大量官方和社区Server看看别人怎么写的比读文档有效。面试高频问题速答Q什么是MCPMCPModel Context Protocol是Anthropic开源的标准化协议定义了AI应用与外部工具/数据源的通信方式。它采用Host/Client/Server三层架构基于JSON-RPC 2.0通信通过Tools、Resources、Prompts三大原语暴露能力。核心价值是将M×N的集成问题简化为MN实现一次开发到处接入。2025年底已捐赠给Linux基金会。QMCP的通信协议是什么JSON-RPC 2.0。一种轻量级的远程过程调用协议基于JSON格式。请求包含method、params、id三个核心字段。Qstdio和HTTP传输怎么选本地开发、单用户场景用stdio简单、安全、无需网络端口。远程服务、多租户、云端部署用Streamable HTTP。QMCP的安全性如何保证①权限隔离每个Server只暴露声明的能力无法越权操作②凭证隔离API Key等敏感信息存在Server端的环境变量中不会传给模型③最小权限如Filesystem Server只开放配置的目录白名单④用户确认模型调用工具前通常需要用户确认取决于Host实现。
返回列表