本文将毫无保留地给你把 MCP(Model Context Protocol)的三大核心概念——Resources、Tools 和 Prompts——掰开揉碎讲清楚。MCP 是 2024 年底由 Anthropic 搞出来的一个开放协议,目的是让大语言模型(LLM)能更顺畅地跟外部数据和工具对接。以下是我的解读:
1. Resources(资源)
本质:Resources 是 MCP 里用来暴露数据的核心机制,相当于给 LLM 提供“原材料”。你可以把它想象成一个只读的数据库接口或者文件系统,里面装的是静态或者半动态的信息,比如日志文件、用户配置文件、股票价格啥的。
怎么用:服务器(MCP Server)把这些数据暴露出来,客户端(比如 LLM 应用)可以读取它们,然后塞进模型的上下文里去推理或者生成内容。比如你有个日志文件 app.log,通过 Resources 就能让 LLM 直接看到里面的错误信息。
特点:
- 应用控制:客户端决定啥时候用、怎么用这些资源。有的客户端像 Claude Desktop 得用户手动选,有的可能自动挑,灵活得很。
- 实时性:支持订阅更新,比如资源变了,服务器能通知客户端,拉取最新内容。
直白例子:就像你家冰箱,里面有牛奶、鸡蛋(Resources),你(LLM)想做蛋糕就自己去拿,但冰箱不会帮你打鸡蛋。
革命性潜力:理论上可以用 Resources 暴露整个互联网的数据给 LLM,只要服务器能接得上。
2. Tools(工具)
本质:Tools 是 MCP 里的“执行者”,让 LLM 不只是嘴炮,还能干活。简单说,就是服务器提供一些函数或者 API,LLM 可以直接调用去完成具体任务。
怎么用:服务器定义好工具(比如“计算两点距离”或者“发个邮件”),客户端发现这些工具后,LLM 就能根据需要调用。调用完结果会返回给 LLM,继续推理或者输出。
特点:
- 模型控制:设计上是让 LLM 自动调用的(当然可以加人工审核),不像 Resources 那么被动。
- 动态操作:不像 Resources 只读,Tools 是干活的,能改变状态,比如发送请求、写文件、甚至控制硬件。
- 灵活性:从简单的数学计算到复杂的爬虫、API 调用,都能做。
直白例子:你有个电钻(Tools),想在墙上打洞就直接用,不用自己拿拳头砸墙。
操蛋的可能性:如果不设限制,LLM 调用 Tools 可能会搞乱系统,比如删文件、发垃圾邮件,所以安全得搞好。
3. Prompts(提示)
本质:Prompts 是 MCP 的“模板大师”,提供预定义的交互模式或者推理指引。可以说它是 LLM 的“剧本”,告诉它怎么开口、怎么思考。
怎么用:服务器定义好一堆 Prompt 模板(比如“写个产品描述”或者“调试错误”),客户端可以直接选一个,填入参数,然后丢给 LLM 执行。
特点:
- 用户控制:不像 Tools 是模型自己玩,Prompts 通常是用户主动选的,适合标准化任务。
- 可重用:写一次,到处用,省得每次都从头编 Prompt。
- 带参数:可以动态填入变量,比如代码片段、错误信息,生成针对性的输出。
直白例子:就像你给 LLM 一张填空题:“请分析这段代码:[代码]”,它直接照着填就行了。
精妙设计:可以把复杂的多步推理封装成一个 Prompt,比如“先读日志、再查代码、最后给建议”,一步到位。
三者关系和高阶用法
Resources + Tools + Prompts = 完全体:Resources 提供数据原料,Tools 提供动手能力,Prompts 提供套路,三者一结合,LLM 就能从一个只会聊天的基础对话模型变成能干活的超级助手。
高阶用法举例:假设你有个 MCP 服务器接了个日志系统(Resources),配了个“查询数据库”的工具(Tools),再加个“生成故障报告”的模板(Prompts)。LLM 就能自动读日志、查数据库、写报告,一气呵成,比人工快得飞起。
显著优势的地方:因为 MCP 是标准协议,理论上任何支持 MCP 的 LLM(Claude、Gemini、ChatGPT)都能无缝对接,换模型就像换电池一样随便。
写到最后
- Resources:给 LLM 看的东西,喂数据。
- Tools:给 LLM 干活的家伙,执行任务。
- Prompts:给 LLM 的剧本,引导输出。
这仨概念是 MCP 的核心骨架,把 LLM 从“空谈家”变成“实干家”。你要是想搞开发,弄个 MCP 服务器,把自己的数据和功能暴露出去,LLM 就能为你干活,想怎么玩怎么玩。明白了吗?