agentmentoragentmentor

第 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 的关键不是"模型怎么更聪明",而是"模型所在的应用怎么安全、稳定、可发现地接上你的工作现场"。

讲解

先把三方分开:

角色它是谁它不该做什么
HostCodex、Claude Desktop、Cursor 这类用户实际打开的 AI 应用不该把每个外部系统都硬编码进自己
MCP clienthost 内部为某个 server 建立的一条连接不负责业务逻辑
MCP server你写的能力适配器,暴露工具、资源、提示模板不负责替用户做所有决策

一个 host 可以连多个 server。每个 server 像一个小型能力包:它告诉 client "我有哪些工具可以调用、有哪些资源可以读取、有哪些 prompt 可以拿来用"。协议底层使用 JSON-RPC 消息和明确的生命周期,这让发现、调用、返回结果不再靠一段脆弱 prompt 硬猜。2

判断一个需求适不适合 MCP,看三件事:

  1. 这个能力是否需要被 AI host 发现和调用。
  2. 这个能力是否有清楚输入、输出、权限边界。
  3. 这个能力是否会复用,而不是一次性的聊天要求。

如果只是"帮我总结这段文字",直接聊天就够了。如果是"让 agent 能读取我项目里的 ADR、查询本地任务数据库、调用内部 lint 命令",MCP server 才开始有意义。

跟我做一遍(worked example)

需求:你希望本地 agent 在分析项目时,能读取一个 notes/ 目录里的设计笔记,并回答"最近一次架构决策是什么"。

先不要写代码。先画连接:

text
你打开的 host  └─ MCP client: notes-server 这条连接       └─ MCP server: 读取 notes/ 目录,暴露笔记列表和内容

再判断是否值得写成 MCP server:

  • 需要被 host 发现和复用:是。以后每次分析项目都能用。
  • 有清楚边界:是。只读 notes/ 目录,不碰全盘文件。
  • 输入输出清楚:是。输入是 note id 或日期范围,输出是文本内容或摘要材料。

这个需求适合 MCP。它不是让 server "替你聊天",而是把一个安全的本地上下文入口交给 host。

换你补全(faded example)

需求:你想让 agent 帮你查公司 issue 系统里的 bug,并能把状态改成 triaged

请补全:

text
Host: ____________________MCP server 暴露的外部系统: ____________________只读能力: ____________________会改变状态的能力: ____________________最小安全边界: ____________________

参考答案:

text
Host: 你正在使用的 Codex/Claude/Cursor 等 AI 应用MCP server 暴露的外部系统: 公司 issue 系统 API只读能力: 按 id/status 搜 issue、读取 issue 详情会改变状态的能力: 把 issue 标记为 triaged最小安全边界: token 只允许访问目标项目;写操作需要明确确认或只允许特定字段

关键判断是把"读取"和"改变状态"分开。一个 server 可以同时有读写能力,但写能力的名称、描述、输入 schema、权限都要更紧。

小结 + 通向下一节

MCP server 是 AI host 和外部工作现场之间的能力适配器。它的价值不在"让模型变成另一个模型",而在让 host 用标准方式发现、读取、调用你的上下文和工具。

下一节把 server 暴露的东西拆开:tool、resource、prompt。很多糟糕的 MCP server,第一步就错在把所有东西都写成 tool。

Footnotes

  1. MCP Introduction — https://modelcontextprotocol.io/docs/getting-started/intro

  2. MCP Base Protocol Overview — https://modelcontextprotocol.io/specification/2025-03-26/basic

练习

Level 1: 在纸上或 markdown 里列 3 个你希望本地 agent 拥有的能力。每个能力写四列:外部系统是否复用是否改变状态是否适合 MCP

提示 1

先从"只能读什么"写起。

提示 2

再写"绝不碰什么"。

提示 3

最后再写"是否需要用户确认"。

自评