最近小半年,程序员群里高频出现的词,一个是 Claude Code,一个是 MCP。我自己在主力项目里已经用上了一套组合:Claude Code 负责读代码、改文件、跑测试,MCP 负责把它跟本地数据、设计稿、数据库接起来。这套组合解决的核心问题很直白:AI 不再只是“聊天工具”,而是能真正操作你电脑里那些数据的执行者。如果你写过几个脚本、用 JavaScript 碰过命令行,或者正在研究怎么把 AI 塞进自己工作流,这篇文章就是给你准备的。我会从协议原理、环境安装、配置实操,一路讲到自研 Server 和排错技巧,尽量把你踩坑的时间省下来。
1. 先搞清楚 MCP 到底是什么
1.1 用点外卖的类比理解 MCP
很多人第一次看到 MCP 三个字母就懵了,全称是 Model Context Protocol,模型上下文协议。我的理解方式是用点外卖来类比:Claude Code 是你本人,坐在家里想吃饭,但你没有厨师技能,也没有食材;MCP Server 就是各个餐厅,有的是湘菜馆,有的是甜品店,各有各的拿手菜;而 MCP 协议就是那张统一的点餐单——你不需要知道每家餐厅后厨怎么运作,只需要照着单子下单,菜就会送过来。
放在真实场景里,所谓“下单”,就是让 Claude Code 去调用一个外部工具。比如读取本地文件、查询数据库、抓取网页、读取设计稿样式。没有 MCP 的时候,这些事都得靠你手动写完代码再喂给 AI,或者让 AI 生成一段代码你去执行。有了 MCP,AI 自己就能直接调用工具拿结果,然后基于结果继续推理。这个“拿到结果再继续干活”的闭环,才是 MCP 真正的价值。
1.2 三个角色:Host、Client、Server
MCP 架构里主要有三个角色,搞清楚谁是谁,后面配置就不会乱。
第一个是 Host,宿主。它就是 Claude Code 本身,或者任何支持 MCP 的 AI 应用,比如桌面客户端、VS Code 插件、Trae 这类 AI IDE。Host 负责提供对话界面,管理上下文,决定什么时候需要调用工具。
第二个是 Client,客户端。它在 Host 内部运行,负责跟 MCP Server 建立连接、发送请求、接收响应。很多教程里不区分 Host 和 Client,但你自己看日志时会发现两者的区别:Host 是业务入口,Client 是协议层。
第三个是 Server,服务端。它是真正干活的进程,独立于 Claude Code 运行。Server 通过一套标准接口暴露“工具”(Tools)、“资源”(Resources)和“提示”(Prompts)。工具是可以执行的操作,资源是可以读取的数据,提示是可复用的模板。Claude Code 启动时会把已配置的 Server 拉起,按需调用。
打个比方:你(用户)去银行办业务,Host 是大厅经理,Client 是柜台窗口,Server 是后面帮你调账目的业务系统。大厅经理负责接待,窗口负责走流程,真正处理数据的在后面。
1.3 为什么这件事值得折腾
有人会问:我让 Claude Code 直接生成一段 Python 脚本,再去跑,效果不也一样吗?表面看是一样的,但差别很大。
没有 MCP 时,AI 对环境的感知是“黑盒”的。它不知道你电脑里有哪些文件,不知道数据库里有哪些表,不知道接口返回了什么。它只能凭训练记忆和经验猜,猜错了就给你一段跑不通的代码,然后你们俩陷入“报错—修改—再报错”的死循环。这种方式不是不能用,而是效率太低。
有了 MCP,AI 可以自己列出目录、读取文件内容、看数据库表结构、执行查询,拿到真实结果再做决策。这个过程不仅快,而且准确率高得多——因为它的每一步判断都建立在真实数据上,而不是猜测上。我自己体验下来,最明显的感觉是“AI 从顾问变成了真正干活的副手”。这也是为什么像蓝湖 MCP、Figma MCP、通达信这类专业领域 MCP 一出来就被大量讨论,因为大家都想要这种“AI 直接操作专业数据”的能力。
2. Claude Code 安装与环境准备
2.1 前置条件:Node 环境怎么补
Claude Code 本质上是 Node.js 写的命令行工具,所以第一步是确保你机器上有可用的 Node.js 和 npm。建议用 nvm 安装,不要图省事去官网下安装包。nvm 的好处是版本切换方便,Claude Code 官方要求 Node 18 以上,但你完全可以直接装最新的 LTS,比如 20 或者 22,实测没有任何问题。
macOS 和 Linux 用户,终端里执行:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash装完后重新打开终端,再装 Node:
nvm install --lts nvm use --ltsWindows 用户建议直接用 WSL2,在里面走同样的流程。如果你坚持在原生 Windows 环境里折腾,也可以用 nvm-windows,但后续一些 MCP Server 依赖的原生模块在 Windows 下会出莫名其妙的问题。我个人的经验是:Win11 下跑 Claude Code 没问题,但跑 MCP Server 时遇到过的坑比 WSL2 里多一半。所以如果你有选择,优先 WSL2。
验证环境是否就绪:
node -v npm -v能正常输出版本号,就说明环境没问题。
2.2 安装与登录
安装 Claude Code 本身非常简单,全局安装一个 npm 包:
npm install -g @anthropic-ai/claude-code装完以后,在终端里直接输入claude就能启动。首次启动会让你登录账号,流程是打开浏览器、授权、回到终端继续。如果你在一个没有浏览器的远程机器上,可以用claude /login命令,它会输出一个登录链接,你在任何一台有浏览器的设备上打开、登录、拿到授权码,再填回去就行。
登录状态可以用claude /status查看。如果哪天发现工具不识别你的身份,多半是登录过期了,重新跑一次/login就好。
这里有一个细节:Claude Code 实际是支持通过环境变量指定 API 端点的,也就是说你不一定非要用默认的模型服务。社区里有些用户会把ANTHROPIC_BASE_URL指向自建的兼容网关,或者通过ANTHROPIC_MODEL环境变量切换模型,比如换成 DeepSeek、通义这些国内厂商的兼容接口。这么做的好处是灵活,坏处是不同厂商对工具调用的支持程度不一样,有些模型即使能接上,工具调用能力也很差。如果你只是想验证“能不能接”,可以试;如果真正要跑项目,请优先用模型本身的工具调用能力强的那档。
2.3 不同系统的注意点
安装这东西本身不复杂,复杂的是运行环境。macOS 上如果你用的是 M 系列芯片,一切正常,但要注意第一次运行时会触发 Gatekeeper 对 npm 全局命令的校验,去“系统设置—隐私与安全性”里允许一下即可。
Linux 服务器上安装,建议不要用 root 用户跑 Claude Code,因为 MCP Server 以子进程方式启动,root 权限下如果 Server 有漏洞,影响面会很大。用普通用户跑,问题少很多。
Windows 原生环境下,我再强调一次:用 PowerShell 跑 npm 全局安装时,如果遇到执行策略限制,可以先执行Set-ExecutionPolicy RemoteSigned -Scope CurrentUser放开脚本限制。另外,某些 MCP Server 依赖的 FFI 原生模块在 Windows 上需要安装 Visual Studio Build Tools,否则编译不过。等你真的遇到了再去装也不迟。
2.4 如何验证装好了
启动claude后,你先做三件事验证。
第一,随便问一个问题,比如“帮我看看当前目录下有哪些文件”,它能正常回答。第二,输入/status,确认身份信息正确。第三,在项目目录里运行它,让它读一下这个项目的核心文件,比如package.json或者README.md,看它能不能自己找到并读取。
验证完这三步,说明基础环境是通的。接下来才轮到 MCP 的配置。
3. MCP Server 配置实操
3.1 stdio 与 HTTP 两类 Server 怎么选
MCP Server 从通信方式上分两类:stdio 型和 HTTP/SSE 型。
stdio Server 的特点是:Claude Code 启动时本地拉起一个子进程,通过标准输入输出和它通信。这种 Server 的好处是零网络开销、响应快、本地数据不出机器,适合文件系统、数据库、命令行工具这类场景。缺点是不能跨机器调用,Claude Code 停了对应进程也就停了。
HTTP/SSE Server 则是作为一个独立的网络服务运行,Claude Code 通过 HTTP 请求去访问。它的好处是服务可以部署在远端,多台机器共享一套 MCP,适合团队协作、云端资源。缺点是多了网络层,延迟更高,而且要做鉴权,不然谁都能访问你的数据。
实际项目里怎么选?我的经验是:本地开发优先用 stdio,省心;团队共享或部署在服务器上时用 HTTP。Claude Code 的命令行claude mcp add默认加 stdio,如果你想加远程 Server,用--transport http参数。
3.2 用命令行添加 MCP Server
Claude Code 提供了一个内置的 MCP 管理命令。先看帮助:
claude mcp add --help你会看到支持的选项。添加一个 stdio Server 的基本格式是:
claude mcp add 名称 -- 启动命令 参数比如添加一个文件系统 Server,允许 Claude Code 读取两个目录:
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /Users/me/data /Users/me/projects这里filesystem是你在 Claude Code 里看到的 Server 名称,后面--之后是完整的启动命令。Claude Code 会在需要的时候自己拉起这个子进程。
有些 Server 需要环境变量,比如 Figma MCP 需要 API Key。语法是这样:
claude mcp add figma --env FIGMA_API_KEY=你的token -- npx -y figma-developer-mcp --stdio查看已配置的 Server:
claude mcp list删除不再用的 Server:
claude mcp remove 名称配置完所有 Server 后,重启claude。不要尝试在会话运行中热加载,实测下来会有各种状态不同步的问题。
3.3 用配置文件管理 MCP:.mcp.json
命令行配置适合快速验证,但项目成员共享时需要一种更稳定的方式,这就是.mcp.json配置文件。
在项目根目录创建一个.mcp.json,内容类似这样:
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/me/data" ] }, "figma": { "command": "npx", "args": ["-y", "figma-developer-mcp", "--stdio"], "env": { "FIGMA_API_KEY": "你的token" } } } }只要项目里有了这个文件,团队里任何人 clone 代码后启动 Claude Code,它都会自动识别这些 Server。这样就不需要每个人手动敲命令了。
需要提醒的是:不要把敏感 token 直接写进.mcp.json再推到代码仓库。正确做法是利用环境变量替换,比如配置里写"env": { "FIGMA_API_KEY": "${FIGMA_API_KEY}" },每个人在自己的 shell 配置文件里定义这个变量。虽然 Claude Code 支持在.mcp.json里写字面量,但这不是好习惯。泄露一个 Figma token 还好说,泄露数据库密码就不是小事了。
3.4 参数与权限控制
MCP Server 暴露出的工具,Claude Code 默认是可以直接调用的。但不同场景下你可能不想让它碰某些东西。比如文件系统 Server 你配置了/Users/me/data,Claude Code 就只能访问这个目录,基本做到了最小权限。
另外,Claude Code 每一个会话的权限模型是独立的。你在对话中会经常看到弹窗或者提示,让你确认某个操作是否允许执行。这个确认机制有两个作用:一是防止 AI 误执行危险命令,二是让你能及时叫停。项目里如果有一些操作你希望 AI 自动执行,可以用/permissions命令调整策略,但我的建议是:除非你很清楚这个 Server 是干什么的,否则保持默认的“每次确认”。
还有一个常见的坑:多个 Server 之间的工具名冲突。比如两个 Server 都叫read_file,Claude Code 会随机选一个或者报错。解决方法是配置时给 Server 起不同的名称,并在对话时点名告诉它用哪个。这一点在配置大量 Server 时尤其重要。
4. 实战场景:让 Claude Code 真正干活
4.1 本地文件与代码仓库管理
文件系统 MCP 是最基础也最实用的配置。挂上之后,Claude Code 可以列目录、读文件、写文件,甚至批量重命名和移动文件。
我实际项目里用得最多的是“跨文件重构”。以前让 AI 改一个跨多文件的逻辑,它只能靠我复制粘贴内容,改完还不一定能对。现在挂了文件系统,我直接说“把 src/utils 下面所有工具函数里的 console.log 统一替换成 logger.info,并补上对应的 import”,它会自己遍历目录、读文件、改文件,改完还知道跑一遍测试来验证。这个过程里我能看到它每一步的动作,随时可以叫停,比手动改快太多了。
适用人群很广:前端、后端、数据分析师、写文档的人,都能从中受益。只要你的工作对象是本地文件,文件系统 MCP 就是刚需。
4.2 设计稿联动:Figma MCP 与蓝湖 MCP
前端开发最讨厌的活之一是对着设计稿量尺寸、取颜色、导出图标。Figma MCP 出现之后,这个场景被大幅度简化。
Figma MCP 要正常使用,你需要一个 Figma 的 Personal Access Token。获取路径是:登录 Figma 账号后,打开账号设置,找到“Security”或“Personal access tokens”,点击生成新 token。生成时可以选择权限范围,建议只勾选 File content 相关的读取权限,不要给账号管理权限。拿到 token 后,按前面 3.2 节的命令配置即可。
配置好后,在 Claude Code 里,你可以直接说“打开这个设计文件,把首页 Header 部分的背景色、字体大小、间距整理成 CSS 变量”。它会通过 Figma MCP 读取设计稿的数据,把精确的数值拉回来,你只需要复制粘贴进代码就行。
蓝湖 MCP 的思路类似。蓝湖是很多国内团队的协作设计平台,官方也接入了 MCP 能力。配置时你需要在蓝湖后台生成访问令牌,然后把蓝湖 MCP 挂到 Claude Code 上,具体启动命令以蓝湖官方文档为准。配置完成后,AI 可以读取设计图上的标注、下载切图资源,极大地减少开发里“目测像素”的误差。
这套组合适合所有前端开发者,特别是日常需要跟 Figma 或者蓝湖打交道的团队。哪怕你只接一个 Figma MCP,也会发现“手动量尺寸”的日子回不去了。
4.3 金融数据分析:通达信本地数据 MCP
股票、基金类数据是最典型的“本地数据量巨大、手动处理繁琐”的场景。通达信是国内用户量很大的股票行情软件,它的本地数据目录里存着分时、日线、财务等大量数据文件。社区里已经有人封装了“通达信本地数据 MCP Server”,通常是用 Python 写的。
这类 Server 的原理很简单:通过 Python 脚本读取通达信目录下的数据文件(比如 Vipdoc 下的 day、minline 数据),然后把读取能力暴露成一个个工具。配置上去之后,你可以在 Claude Code 里直接说“读取 600519 最近一年的日K线数据,计算 20 日均线和 60 日均线,看看最近有没有金叉”。Claude Code 会调用这个工具拿到数据,再自己写代码做分析。
这里有几个注意点。第一,给 MCP Server 配置时,尽量指向通达信的数据目录只读访问,不要让 AI 有写入能力。第二,本地数据文件格式是二进制或者专有的,Server 的作者需要做解析,不同版本通达信数据格式可能有细微差异,遇到读取失败先升级 Server 或者检查路径。第三,这属于本地分析工具,输出的内容只能作为辅助参考。
除了通达信,其他金融数据源也可以走类似思路。比如有些人把富途、东方财富的接口封装成 MCP Server,给 Claude Code 用。核心逻辑都一样:找数据入口,封装成工具,配置进 Claude Code。
4.4 数据库操作:连接 PostgreSQL / MySQL
数据库 MCP 是把 AI 变成“临时 DBA”的利器。挂上数据库 MCP 后,Claude Code 可以直接列出所有表、查看表结构、执行查询、分析慢查询日志。
以 PostgreSQL 为例,添加方式类似:
claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres "postgresql://user:password@localhost:5432/mydb"配置完成后,你可以在对话里说“帮我看看 orders 表里最近 30 天的订单量变化趋势,按天聚合”,它会自己去查询,然后生成图表或者统计数据。再比如“这个查询为什么慢”,它可以解释执行计划,甚至给出索引建议。
使用数据库 MCP 最大的前提是安全。默认情况下,Claude Code 会要你确认每个操作,但你一旦在权限设置里放开,它就可能在数据库里执行任意 SQL。我的建议是:配置数据库 MCP 时,使用一个最小权限账号,只给 SELECT 权限;需要写操作时,单独用另一个 MCP 或者手动执行。宁可麻烦一点,也不要让 AI 拿到一把能删库的钥匙。
4.5 其他值得装的 MCP
除了上面几个,我再罗列一些实测好用或者在特定领域口碑不错的 MCP。
GitHub MCP:可以把代码仓库的 issue、PR、代码扫描结果暴露给 Claude Code。适合做代码审查和仓库管理自动化,配置时需要一个 GitHub Personal Access Token。
DevSpace MCP:如果你用 DevSpace 做云原生开发环境,这个 MCP 能让 Claude Code 直接操作你的远程开发容器,比如同步文件、执行远程命令、查看日志。
Spring Boot MCP:Java 生态目前对 MCP 的支持主要走 Spring AI 模块,它提供了 MCP Server 的 starter,你可以用注解把自己的 Service 方法暴露成 MCP 工具。这意味着企业内部的老系统可以低成本接入 AI。身边有不少 Java 团队已经开始在 Spring Boot 项目里引入 MCP,让 AI 直接调用封装好的业务方法,而不是让 AI 去写 SQL。
Burp Suite MCP:做安全测试的朋友会在授权测试中用 Burp Suite 抓包,社区里有它的 MCP 桥接方案,让 Claude Code 读取抓包数据、分析请求特征。这个只建议在合规授权的测试场景里使用。
专业软件领域也在跟进。像 CATIA(工业设计)、Vivado(FPGA 开发)这类专业软件,社区里陆续有人做 MCP 实现。甚至是很多效率工具,比如浏览器自动化、看板管理、邮件处理,都有现成 MCP Server 可以接。原则就是:凡是 AI 需要通过数据来决策的地方,都值得挂一个 MCP。
5. 常见问题排查与优化
5.1 症状-原因-解法速查表
遇到问题先别慌,大部分 MCP 配置问题都集中在少数几个原因上。我整理了一张排查表,你先对照看看。
| 症状 | 可能原因 | 解法 |
|---|---|---|
| Claude Code 启动时报 MCP Server 启动失败 | 依赖未安装或路径不对 | 运行claude mcp list查看配置,手动在终端执行启动命令看报错 |
| MCP Server 启动成功但对话里调用不到工具 | Server 未加入当前会话上下文 | 重启 Claude Code,或用/mcp命令查看当前会话可用的工具 |
| npx 下载包很慢或者超时 | 网络问题 | 配置 npm 镜像,把 registry 指向国内镜像,再重试 |
| 工具调用时提示权限被拒绝 | 权限模型限制了操作 | 检查项目权限设置,确认该 Server 是否被允许执行对应操作 |
| 两个 Server 工具名冲突 | 工具命名未做隔离 | 修改 MCP Server 名称,或指定只加载某一个 Server |
| 连接数据库 MCP 后查询乱码 | 编码配置不对 | 在连接串里加上?charset=utf8之类参数 |
5.2 排查思路:看日志、分步验证
排查 MCP 问题,我总结了一套固定流程。
第一步,确认 Server 本身能不能跑。手动在终端里执行一遍配置文件里的启动命令,看它能不能正常起来。比如文件系统 Server 配置的是npx -y @modelcontextprotocol/server-filesystem /path,那你在终端单独跑这个命令,如果它报错,说明问题在 Server 本身,先解决依赖或者路径问题。
第二步,确认 Server 能不能被 Claude Code 识别。运行claude mcp list查看状态,如果显示connected,说明协议层握手成功。如果显示failed,看一下终端的完整日志,通常会有具体报错信息。
第三步,确认工具能不能真正被调用。在对话里明确要求它调用某个工具,然后看日志里有没有对应的调用记录。如果 Claude Code 表示“没有可用工具”,先重启,再查。很多问题都出在“改完配置没重启”,这不是段子,是真实高频事故。
第四步,绕开 Claude Code 单独调试。MCP Server 大多提供了测试客户端,或者你可以写一个几行的脚本,直接连接 Server 并调用工具看结果。这一步能把问题定位到“Server 返回数据有问题”还是“Claude Code 没把工具暴露出来”。
这套思路帮我解决过至少几十个问题,从包版本冲突到环境变量没加载,基本都能覆盖。
5.3 配置最佳实践与安全提醒
配置多了以后,我形成了一套自己的规范,分享出来供参考。
一是命名清晰。每个 MCP Server 的名字要让人一眼看懂是干什么的,比如figma-reader、local-db-analyst,不要叫test1、server2这种。命名一旦混乱,会话里你很难判断该让 AI 调用哪个工具。
二是最小权限。文件系统只给需要的目录,数据库只给需要的权限,API token 只给需要的 scope。这个原则重复多少次都不为过。AI 本身没有“恶意”,但你无法预料它在理解错误时会不会执行危险操作,权限越少,事故范围越小。
三是版本锁定。很多 MCP Server 是npx方式启动的,默认拉最新版,某一天上游发布了不兼容版本,你的流程可能突然就断了。建议在配置里锁版本,比如@modelcontextprotocol/server-filesystem@0.0.36这样的写法。
四是环境变量统一管理。不要把密钥散落在各处,统一在.env或者 shell 配置里定义,然后在.mcp.json里引用。团队协作时,把.env.example推上去,真实密钥留在本地。
安全这块我再多提醒一句:MCP Server 是一段可以访问你本地数据的进程,安装来源不明的 Server 前,最好先读一遍源码。Claude Code 只负责拉起进程、传参数,不会帮你鉴别 Server 是否安全。特别是那些来自个人开发者、代码量又不大的 Server,谨慎使用。
5.4 VS Code 里面怎么配
除了终端,Claude Code 在 VS Code 里也能用。装好官方扩展后,你可以直接把 VS Code 当作 Host 使用。MCP 配置和终端是共享的,你不需要在 VS Code 里重复添加 Server,只要终端里配置好了,扩展启动时会自动读取。
但要注意一点:VS Code 扩展有自己的权限对话框,第一次调用某个工具时会弹窗问你是否允许。这个和终端里的确认逻辑不完全一样,别因为之前终端里点过“总是允许”,就以为 VS Code 里也不会问。两者是独立的状态。
如果你用 Trae 或者其他 AI IDE,原理也一样。MCP 协议本身是开放的,只要这个 IDE 支持作为 Host,同一套 Server 配置基本都能用。比如你给 Claude Code 配了 Figma MCP,要在 Trae 里用,就在 Trae 的 MCP 设置页面里把同样命令加进去就行。跨工具迁移的成本很低,这是协议标准化带来的红利。
6. 进阶:自己写一个 MCP Server
6.1 为什么值得自己写
现成的 MCP Server 很多,但真正贴合自己业务的场景,往往没有现成的。比如你想让 AI 直接调用公司内部接口查询订单状态,或者读取某个私有系统的数据,这些都需要自己写一个 Server。
自己写的好处有三个:一是精准,暴露什么工具、允许什么操作完全由你定;二是可控,代码在自己手上,安全边界你说了算;三是复用,写完以后可以共享给团队,甚至发布出去帮到更多人。难度没有想象中高,一个最小的 Server 二三十行代码就够了。
6.2 TypeScript 入门骨架
官方 SDK 是 TypeScript 优先,这里给一个最小实现。先建一个空目录,初始化项目并安装依赖:
mkdir my-mcp-server cd my-mcp-server npm init -y npm install @modelcontextprotocol/sdk zod然后创建index.js:
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: "demo-server", version: "1.0.0" }); server.tool( "add", "两个数字相加", { a: z.number(), b: z.number() }, async ({ a, b }) => ({ content: [{ type: "text", text: String(a + b) }] }) ); const transport = new StdioServerTransport(); await server.connect(transport);这段代码做的事情很简单:定义一个叫add的工具,接收两个数字参数,返回它们的和。运行后,任何 MCP Host 连接上来,都能调用这个工具。
启动命令写入package.json:
{ "scripts": { "start": "node index.js" } }然后在 Claude Code 里添加这个本地 Server:
claude mcp add demo -- node /绝对路径/index.js重启后,在对话里说“帮我用 demo 的 add 工具算一下 12345 加 67890”,它就会调用你的自定义工具。
6.3 Python 版本怎么顺手
如果你更熟悉 Python,也可以直接用官方 Python SDK。安装依赖:
pip install mcp然后写一个脚本:
from mcp.server.fastmcp import FastMCP mcp = FastMCP("demo-server") @mcp.tool() def add(a: int, b: int) -> int: """两个数字相加""" return a + b if __name__ == "__main__": mcp.run(transport="stdio")Python 版本对类型注解支持得很好,写起来更简洁。一个 Server 里你可以定义多个工具,比如查询订单、获取用户信息、生成报表,只要是一段能函数化的逻辑,都能暴露出去。
6.4 调试与发布
自己写 Server 的过程中,大概率会遇到工具调用了但结果不对的情况。这时候不要猜,直接在终端里单独运行你的 Server,用官方提供的 MCP Inspector 工具连接调试。
npx @modelcontextprotocol/inspector node index.js它会打开一个本地调试页面,你可以看到 Server 暴露了哪些工具、参数格式是什么、返回结果长什么样。这个工具是排查自研 Server 问题的一大利器,强烈建议先学会。
调试通过后,如果你用的是 Python,可以用uvx方式共享依赖;如果是 Node,发布到 npm,别人就能直接用npx拉起来用了。发布前记得补好 README,写清楚启动命令、工具列表、参数说明和权限要求,这些对使用者来说是救命文档。
7. 我对 Claude Code + MCP 的实际体会
文章写到这里,核心内容基本讲完了,最后分享一点个人感受。
我见过不少人一开始配了好几个 MCP,最后发现真正高频用的其实就一两个。所以我的建议是:不要追求“全家桶”,先把你最高频、最痛的那个场景解决了。比如你是前端,先接 Figma 或者蓝湖;你是后端,先接数据库;你是数据分析,先接文件系统。跑顺一个,你自然会理解这个协议能给你带来什么,然后再慢慢扩展。
还有一个经常被忽略的点:MCP 让 AI 变强,但没有让 AI 变“对”。它只是让你和 AI 之间多了一条高效获取真实数据的通道,最终做决策的还是你。用的时候保持审视,特别涉及数据变更、权限敏感的操作,每一步确认都不要手滑。
最后再讲一个小技巧:如果你在同一个目录下长期开发多个项目,尽量让每个项目的.mcp.json只配置本项目需要的 Server,不要全量加载。好处是启动更快,上下文更干净,Claude Code 也不会因为工具太多而出现选择困难。这套“项目内按需配置”的习惯,是我用了三个月之后才总结出来的,早期全量加载导致的调用混乱,回想起来全是泪。现在按项目隔离之后,整个流程稳定了很多。你自己动手试试,应该很快就能感受到差别。