直接回答:MCP 是 Anthropic 主导的开放协议,解决“每个 Agent 框架 × 每个工具/数据源”的 N×M 集成爆炸:工具方实现一次 MCP server,任何支持 MCP 的宿主(Claude Desktop、IDE、自有 Agent)都能直接用。类似语言服务器协议(LSP)对编辑器的意义——把集成交给标准协议,生态各自单边扩展。
展开解析:核心设计:三类原语——tools(模型可调用的函数,带 JSON Schema 参数与描述)、resources(可读取的数据源,类 REST 的 URI 抽象,如文件、数据库记录)、prompts(预置提示模板),分别对应“做、看、引导”。传输层两种:stdio(本地子进程,IDE 场景)与 HTTP+SSE/Streamable HTTP(远程服务)。架构上是宿主-客户端-服务器三段:宿主(Agent 应用)内嵌 MCP client 连多个 server,每个 server 专注一个领域(GitHub、数据库、文件系统)。安全边界由宿主负责:工具列表展示、调用前用户确认、server 权限隔离都不在协议内——这是设计上的刻意留白,也是落地时的主要风险点(恶意 server 的描述文本本身可携带 prompt 注入)。对接时的工程要点:工具描述按“模型可读”标准重写而非直接搬 API 文档;返回结构化且控制体量;server 侧做超时与幂等。评估是否自建:内部工具跨多个 Agent 应用复用就值得包成 MCP server,单一应用直连函数调用更简单。
追问方向:MCP 与 function calling 是什么关系?资源与工具的边界怎么划?
(约 480 字)