编写你的第一个 MCP 工具

实现编程 Agent 里我们给 Agent 装了三个工具:读文件、写文件、执行命令。工具的定义方式很直接,一段 JSON 描述参数格式,一个 Python 函数实现逻辑,Agent 就能用了。

这种方式足够简单,但你有没有想过一个问题:如果你想把自己的工具给别人用呢?

MCP 的使用场景

MCP 全称 Model Context Protocol(模型上下文协议),听起来挺唬人,但本质就是一套标准化的工具接口协议。

在用它之前,先想清楚你的场景。如果你只是自己本地开发,想让 Claude Code 调一个脚本查个东西、跑个命令,那直接写个 Python 脚本就行了。

Claude Code 本身就能执行命令、读写文件,你写个脚本让它用 run_command 调用,几分钟搞定,完全没必要引入 MCP。

MCP 真正有价值的场景是把工具变成标准化的服务,适合多人使用、需要集中管控的场景,举两个例子:

GitHub 私有仓库查询:假设你有一批私有仓库,团队成员想通过 AI 助手搜代码。你不可能把 Token 给每个人,但可以部署一个 MCP Server,Token 存在服务端,大家在自己的 AI 客户端(Claude Code、Cursor 等)里配一个地址就能查,接触不到 Token。

公司内部文档系统:公司想让所有员工都能通过 AI 助手查内部文档,写个查询脚本分发给大家当然也能用,但每个人都得装脚本,更新了还得确保所有人同步,想做权限控制(不同部门看不同文档)也很难。

MCP Server 就没这些问题,因为它本身就是个 Server 嘛,所有人配一个 URL 就能用,也容易做不同用户的权限隔离。

你加了新功能或者修改了已有的接口,大家那边自动就更新了,因为 MCP client 每次连接 MCP server 都会动态获取最新的工具列表和参数定义,用户无感知。

所以 MCP 的核心价值在于集中维护、标准通用:

敏感信息留在服务端,调用者不需要关心服务端内部的实现;只需要在 MCP Server 端维护一份工具代码,所有支持 MCP 协议的 AI 客户端都能直接用,不用为不同的客户端单独适配,而且更新即时生效。

接下来我们就动手写一个简单 MCP Server 和 MCP client,并且把它接入到你喜欢的 AI 编辑器中。