第 01 节:MCP 不是又一个聊天 API
本节 objectives:
- 能画出 MCP host、client、server 的三方关系。
- 能说清 MCP server 暴露的是能力和上下文,不是另一个模型。
- 能判断一个需求是否适合先做成 MCP server。
先修:会用一个本地 agent 工具 | 上一节:无 | 下一节 02 >>
你以为在接模型,其实是在接工作现场
很多人第一次听 MCP,会把它理解成"又一种调用 LLM 的 API"。这个理解会把方向带偏。
MCP server 通常不负责生成回答。它负责把一个外部世界的能力或上下文,用统一协议交给 AI 应用:文件系统、数据库、公司内部 API、命令行工具、项目文档、提示模板。官方介绍把 MCP 放在 host、client、server 的连接模型里:host 是你正在用的 AI 应用,client 是 host 里负责连接单个 server 的协议组件,server 则暴露 tools、resources、prompts 等能力。1
所以 MCP 的关键不是"模型怎么更聪明",而是"模型所在的应用怎么安全、稳定、可发现地接上你的工作现场"。
讲解
先把三方分开:
一个 host 可以连多个 server。每个 server 像一个小型能力包:它告诉 client "我有哪些工具可以调用、有哪些资源可以读取、有哪些 prompt 可以拿来用"。协议底层使用 JSON-RPC 消息和明确的生命周期,这让发现、调用、返回结果不再靠一段脆弱 prompt 硬猜。2
判断一个需求适不适合 MCP,看三件事:
- 这个能力是否需要被 AI host 发现和调用。
- 这个能力是否有清楚输入、输出、权限边界。
- 这个能力是否会复用,而不是一次性的聊天要求。
如果只是"帮我总结这段文字",直接聊天就够了。如果是"让 agent 能读取我项目里的 ADR、查询本地任务数据库、调用内部 lint 命令",MCP server 才开始有意义。
跟我做一遍(worked example)
需求:你希望本地 agent 在分析项目时,能读取一个 notes/ 目录里的设计笔记,并回答"最近一次架构决策是什么"。
先不要写代码。先画连接:
再判断是否值得写成 MCP server:
- 需要被 host 发现和复用:是。以后每次分析项目都能用。
- 有清楚边界:是。只读
notes/目录,不碰全盘文件。 - 输入输出清楚:是。输入是 note id 或日期范围,输出是文本内容或摘要材料。
这个需求适合 MCP。它不是让 server "替你聊天",而是把一个安全的本地上下文入口交给 host。
换你补全(faded example)
需求:你想让 agent 帮你查公司 issue 系统里的 bug,并能把状态改成 triaged。
请补全:
参考答案:
关键判断是把"读取"和"改变状态"分开。一个 server 可以同时有读写能力,但写能力的名称、描述、输入 schema、权限都要更紧。
小结 + 通向下一节
MCP server 是 AI host 和外部工作现场之间的能力适配器。它的价值不在"让模型变成另一个模型",而在让 host 用标准方式发现、读取、调用你的上下文和工具。
下一节把 server 暴露的东西拆开:tool、resource、prompt。很多糟糕的 MCP server,第一步就错在把所有东西都写成 tool。
Footnotes
-
MCP Introduction — https://modelcontextprotocol.io/docs/getting-started/intro ↩
-
MCP Base Protocol Overview — https://modelcontextprotocol.io/specification/2025-03-26/basic ↩
练习
Level 1: 在纸上或 markdown 里列 3 个你希望本地 agent 拥有的能力。每个能力写四列:外部系统、是否复用、是否改变状态、是否适合 MCP。
提示 1
先从"只能读什么"写起。
提示 2
再写"绝不碰什么"。
提示 3
最后再写"是否需要用户确认"。