用 MCP 把 Claude 连接到本地工具与智能体
你希望 Claude 做大脑、你的机器提供双手——读取你的文件、查询你的数据库、运行你的脚本,甚至调用一个本地模型或一个本地智能体,而这一切都不让你的数据离开这台笔记本。这种协同其实早已有了标准:Model Context Protocol(MCP)。一句话概括:MCP 是一个开放标准,让 AI 客户端通过被称为 MCP 服务器 的小程序去调用外部工具和数据——而这些服务器可以私密地、在本地、在你自己的机器上运行。本页展示 MCP 是什么、本地架构如何拼合、如何把一个本地服务器添加到 Claude,以及如何自建一个小小的服务器。
- 用一句话解释 MCP——一个开放标准,让 AI 客户端能通过 MCP 服务器调用外部工具和数据
- 看清本地架构:一个 MCP 客户端(Claude Code / Claude Desktop)通过 stdio 与一个本地 MCP 服务器对话
- 理解为什么这正是你想要的「Claude 作大脑 + 本地提供能力」的协同
- 用一条命令把一个本地 MCP 服务器添加到 Claude
- 自建一个暴露单个工具的小小 MCP 服务器
- 认清信任边界——MCP 服务器以「你的」权限行事,所以只安装你信任的东西
MCP 是什么(一句话)
MCP 是一个把 AI 应用连接到外部系统的开放标准。 一个 AI 客户端(比如 Claude)说一种协议;任何会说这种协议的 MCP 服务器 都能插进来,给客户端提供新能力。官方的类比是 AI 的 USB-C 接口:你不必为每个工具做定制集成,只需对准一个连接器构建,它就能到处工作。
Anthropic 提出并开源了 MCP,而且从第一天起它就带着本地 MCP 服务器支持发布,好让 Claude 能连接到运行在你自己机器上的内部系统和数据集。
一个 MCP 服务器可以向客户端暴露三类东西:
- 工具(Tools)——模型可以调用的动作(读取文件、运行查询、访问 API)。它和模型原生的 工具使用 是同一种形态:一个带类型化输入的具名能力。
- 资源(Resources)——客户端可以读取的数据(文件、记录、文档)。
- 提示(Prompts)——服务器提供的可复用、可参数化的提示模板。
在本页中,主角是 工具:一个本地 MCP 服务器就是你把一个全新的、私密的能力交到 Claude 手上的方式。
为什么这正是你想要的协同
人们说的「Claude 作大脑、我的电脑作身体」,恰恰就是 MCP 的客户端/服务器分工:
- Claude 是编排者。 它读懂你的目标,决定该调用哪个工具,调用它,读取结果,再决定下一步。
- 本地 MCP 服务器是能力。 每一个都是你在你自己机器上运行的小程序:一个文件系统服务器、一个数据库服务器、一个对本地脚本的包装,甚至一个调用 本地模型 或把工作交给本地智能体的服务器。
因为服务器在本地运行,而 Claude 通过你自己机器的标准输入/输出与它对话,你的数据和动作都留在你的硬件上——模型负责编排,但文件读取、SQL、脚本执行都在本地发生。这就是保护隐私版本的智能体式工作:大脑在云端(或也在本地),双手严格待在你的机器上。
而且因为 MCP 是一个被众多客户端采用的开放标准,你构建的服务器不会被锁死在某一个应用里。你接进 Claude Code 的那个本地服务器,也能被其他会说 MCP 的客户端使用——构建一次,处处复用。
本地架构
最小的有用图景有两个部分和一条通道:
- MCP 客户端(宿主)。 AI 应用——例如 Claude Code 或 Claude Desktop。它持有模型,并决定要调用哪些工具。
- MCP 服务器。 一个独立进程,它宣告工具/资源/提示,并在被请求时执行它们。
- 传输(Transport)。 对于本地服务器,客户端把服务器作为子进程启动,二者通过 stdio(标准输入/输出)用 JSON-RPC 消息对话。没有网络、没有端口——只是你机器上两个进程之间的一条本地管道。(也存在远程服务器,走 HTTP;本页讲的是本地、stdio 的情形。)
┌─────────────────────────┐ stdio (JSON-RPC) ┌──────────────────────────┐
│ MCP CLIENT / HOST │ ──── launches as subprocess ──▶ │ LOCAL MCP SERVER │
│ Claude Code / Desktop │ ◀── tools/resources/prompts ─── │ filesystem · db · script │
│ (the model = the brain) │ │ · local model / agent │
└─────────────────────────┘ └──────────────────────────┘
runs on YOUR machine, YOUR data
模型从不直接碰你的磁盘——它请求本地服务器,而服务器(以你的权限运行)完成工作并返回一个结果。
把一个本地 MCP 服务器添加到 Claude
最快的路径是 Claude Code 的 claude mcp add 命令,它注册一个客户端将通过 stdio 启动的服务器。总体形态是一个名字,后面跟启动服务器的命令。
- 从官方参考服务器开始(例如文件系统服务器),这样行为是已知的。Anthropic 维护着一套可在本地运行的参考 MCP 服务器——filesystem、git、memory、fetch 等等。
- 使用 `claude mcp add <name> -- <command...>`。`--` 之后的部分正是 Claude Code 用来把服务器作为本地子进程启动的命令;它通过 stdio 与之对话。
- 运行 `claude mcp list` 查看已注册的服务器,然后开一个会话,问问 Claude 它现在有哪些工具。服务器的工具应当作为可调用的能力出现。
- 给 Claude 一个需要这项新能力的目标("读取 ./notes 下的文件并总结它们")。Claude 会调用服务器的工具;工作在本地发生。
一个针对本地文件系统服务器的最小 claude mcp add(-- 之后的一切都是启动命令):
把一个本地文件系统 MCP 服务器添加到 Claude Code
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /path/to/allowed/dir
如果你更喜欢直接编辑配置,一个 stdio 服务器是由启动它的命令声明的。形态如下:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
}
}
}
自建一个小小的 MCP 服务器
一个服务器不过是一个程序:它使用一个 MCP SDK、声明一个工具、启动一个 stdio 传输。这是整个思路的 TypeScript 版——一个把两个数字相加的工具(把工具体换成「运行我的脚本」「查询我的数据库」「调用我的本地模型」):
npm install @modelcontextprotocol/sdk zod
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({ name: "my-local-tools", version: "0.1.0" });
// Declare ONE tool. Inputs are typed; the body runs locally with your privileges.
server.registerTool(
"add",
{
description: "Add two numbers",
inputSchema: { a: z.number(), b: z.number() },
},
async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }],
}),
);
// Talk to the client over stdio — this is what makes it a LOCAL server.
await server.connect(new StdioServerTransport());
把它注册到 Claude,和任何其他 stdio 服务器完全一样——让启动命令指向你的文件:
把你自己的本地服务器添加到 Claude Code
claude mcp add my-local-tools -- node /abs/path/to/server.js
这就是完整的闭环:Claude(大脑)看到一个新工具,在相关时调用它,而你的代码(双手)在本地运行并返回结果。因为它说的是同一个开放协议,这个服务器无需改动也能在其他 MCP 客户端里工作。
- MCP 服务器以你的权限运行,并且能采取真实的动作——只安装你信任的服务器,并当心通过工具结果传来的提示注入(prompt-injection)。
自测一下
自测一下
0/4- MCP 是一个开放标准,让 AI 客户端能通过 MCP 服务器调用外部工具和数据——Anthropic 从一开始就带着本地服务器支持提出了它。
- 本地架构很简单:一个 MCP 客户端(Claude Code / Desktop)把一个本地 MCP 服务器作为子进程启动,并通过 stdio 与之对话——你的数据留在你的机器上。
- 这就是「Claude 作大脑 + 本地提供能力」的协同:Claude 负责编排;本地服务器(文件系统、数据库、一个脚本,甚至一个本地模型或智能体)提供双手。
- 用一条命令添加一个服务器(claude mcp add ... -- <启动命令>);用一个 MCP SDK 通过注册一个工具并连接一个 stdio 传输来自建一个。
- MCP 被广泛采用,所以你构建的一个本地服务器能跨众多客户端工作——构建一次,处处复用。
- 服务器以你的权限行事:只安装你信任的,并把工具结果当作一个可能的提示注入向量。
下一步
- 日常在终端里使用 MCP → Claude Code:MCP
- 编排者是什么 → 什么是 Claude Code
- MCP 工具遵循的工具调用形态 → 工具使用
- 运行一个服务器可以包装的本地模型或智能体 → 本地 AI 智能体