MCP 完全指南:原理、传输方式、工具设计坑点与最佳实践
agent的开发离不开MCP,下面按“从原理到落地”的顺序,把 MCP(Model Context Protocol) 的核心机制、使用方法、特性、优缺点与实践建议系统梳理一遍,尽量用初学者能快速上手的方式讲清楚。
MCP 是什么?解决什么问题
MCP 是一套让大模型“标准化访问外部能力(工具/数据/服务)”的协议。
在 MCP 出现之前,常见痛点是:
MCP 试图把“模型 ↔ 外部世界”的接口标准化,让工具提供方用统一方式暴露能力,让 agent/客户端用统一方式发现并调用。
MCP 的核心构件与角色
通常你会看到三个关键角色:
-
MCP Host(宿主/运行环境)
例如:Claude Desktop、Cursor、一些 IDE/桌面应用、你自研的 agent 运行器。
Host 负责承载对话 UI、管理模型、管理与 MCP Server 的连接。
-
MCP Client(客户端/协议适配层)
由 Host 或你的代码提供。它负责:
-
MCP Server(工具/能力提供方)
本地进程或远端服务,用 MCP 的规范暴露:
MCP 的调用链路
MCP典型调用闭环:
可以把 MCP 理解为:工具与数据的统一目录 + 标准调用协议 + 结果回传格式。
MCP能力类型(Tools/Resources/Prompts)
Tools(工具/函数):适合“做事”,查询、计算、写入、触发流程、调用外部 API。
例子:search_docs(query), create_ticket(title, body), run_sql(sql)
Resources(资源)
例子:file:///…/design.md、kb://product/faq/123
Prompts(提示模板)
常见传输方式
优点:本地集成简单、安全边界清晰;
缺点:远程部署不如 HTTP 灵活。
优点:集中化、易扩展;
缺点:鉴权、网络、租户隔离要自己做好。
MCP 的特性与优点
MCP 的缺点与常见坑
-
schema 设计不好(参数模糊、可选项过多、返回不稳定)会导致模型调用错误率高 -
工具粒度太粗/太细都会难用
-
资源读写、系统命令、数据库权限必须最小化 -
强烈建议做 allowlist、审计日志、速率限制、租户隔离
Host/Client/Server 三方任意一处出问题都会“看起来像模型不聪明”。
工具失败时返回什么结构、可否重试、如何给模型可理解的错误信息,都会影响稳定性。
夜雨聆风