上周我在公司茶水间被同事截胡:「你那个 Claude Code 是不是开了挂?我让它读飞书文档,它说不会;我让它查我数据库,它说不会;我让它跑 Playwright 截图,它还说不会。这玩意儿不就是个穿着马甲的 GPT?」
我笑了笑,打开他的
~/.claude/,里面空空如也——一个 Skill 没装,一个 MCP 没配。这就像买了一台 ThinkPad 但只用浏览器打开 Word,怪不得他觉得不香。
裸装的 Claude Code,本质上是个会写代码但什么外部世界都接触不到的实习生。它能在你当前目录里 read/write/edit/exec,但它读不到你的 Notion、连不上你的 Postgres、也跑不了 Playwright 自动化。
而装好 32 个 Skills + 8 个 MCP 之后,它会从「写代码的助手」一路升级到「全栈数字员工」——能查文档、能跑数据库、能画 Mermaid 图、能调浏览器,甚至能直接帮你发飞书消息。
这篇文章把整套配置流程、踩坑记录和实战场景一次讲透。读完你只需要复制粘贴,就能拥有一个真正长脑子的 Claude Code。
一、为什么裸装的 Claude Code「不够用」
先说一个反直觉的事实:Claude Code 默认能力其实很弱。
它默认只有 read / write / edit / exec / search 这几把刀,所有「外部知识」都得从你当前的代码仓库里现读。这意味着:
- 你想让它写一个调用 Stripe 的支付模块?它得先猜 API、再让你纠错。
- 你想让它帮你查昨天的飞书会议纪要?它会礼貌地说「我没有联网能力」。
- 你想让它跑一段 SQL 验证数据?它只能写出 SQL 让你自己去跑。
这三个问题的解法不一样:
| 问题类型 | 解法 | 关键词 |
|---|---|---|
| 缺少领域知识 / 操作流程 | Skill | 写好的 Markdown 指令包 |
| 缺少外部系统访问 | MCP Server | 进程化的工具协议 |
| 缺少长期记忆 | Memory + Skill | 持久化文件 |
Skill 是「方法论」,MCP 是「连接器」——这是整篇文章的核心认知。搞清楚这两者的边界,你就明白了为什么我装 32 个 Skill + 8 个 MCP 而不是反过来。
二、Skill 和 MCP 的本质差异
很多人第一次接触 Claude Code 生态会被概念绕晕:Skill、MCP、Tool、Agent 听起来都像。我用一句话给你拆开:
Skill 是 Claude 自己读的「员工手册」,MCP 是 Claude 调用的「外部 API」。

2.1 Skill:一份让 Claude「学会一项专业」的 Markdown
一个 Skill 本质上就是一个目录,里面一定包含 SKILL.md,可能还有辅助脚本和模板:
~/.claude/skills/my-skill/
├── SKILL.md # 主入口,描述触发条件和操作流程
├── templates/ # 可选:复用模板
└── scripts/ # 可选:辅助脚本
SKILL.md 顶部的 description 字段是关键——Claude 会扫描所有 Skills 的 description,只在任务匹配时才加载主体内容,避免上下文爆炸。
举个例子:当你说「帮我写一篇小红书图文」,Claude 看到 xiaohongshu-article Skill 的描述「小红书图文创作规范,包含标题模板、来源声明、合规检查」,就会主动 read SKILL.md,按里面的规则办事。
Skill 不带任何外部权限,它只是「让 Claude 读一遍说明书」。
2.2 MCP:让 Claude 拥有「真·外部能力」的协议
MCP 全称 Model Context Protocol,由 Anthropic 在 2024 年底开源。简单说:
- MCP Server 是一个独立进程,对外暴露
tools / resources / prompts三类接口。 - MCP Client(Claude Code 就是其一)通过 stdio 或 SSE 连接 Server。
- Claude 调用 MCP 工具就像调用本地函数,但执行体在 Server 进程里。
这套设计意味着你可以让任何系统接入 Claude,而不用改 Claude 本体一行代码。Postgres、Notion、Linear、Slack、飞书……官方和社区已经写了上百个 MCP Server。
MCP 带真权限——你给它 token,它就能动你的真实数据。所以 MCP 配置必然涉及凭据管理。
2.3 怎么选:何时写 Skill,何时挂 MCP
我自己的判断标准就一句话:
「这件事需要外部系统数据吗?需要 → MCP;不需要 → Skill。」
- 写文章风格、代码 Review 清单、命名规范、审计流程 → 全是 Skill。
- 查飞书文档、读 Postgres、调浏览器、发邮件 → 全是 MCP。
混淆这两者的代价是配置膨胀——把方法论写进 MCP,每次调用都要起进程;把外部 API 塞进 Skill,Claude 只会照着 Markdown 念经。
三、32 个 Skills:我的完整清单
我把 Skills 按「写作 / 开发 / 运维 / 个人」四类分组管理,目录结构长这样:
~/.claude/skills/
├── writing/
│ ├── xiaohongshu-article/
│ ├── wechat-public-account/
│ ├── hugo-blog/
│ └── ...
├── coding/
│ ├── code-review/
│ ├── git-workflow/
│ ├── test-driven-dev/
│ └── ...
├── ops/
│ ├── healthcheck/
│ ├── docker-compose/
│ ├── ssh-tunnel/
│ └── ...
└── personal/
├── inbox-triage/
├── memory-curator/
└── ...

3.1 写作类(10 个)
| Skill | 触发场景 | 核心价值 |
|---|---|---|
xiaohongshu-article |
小红书图文 | 标题模板 + 来源声明 + 合规自检 |
wechat-public-account |
公众号长文 | 排版规范 + 字段头 + 互链建议 |
hugo-blog |
个人站点 | TOML 头 + slug 命名 + 文章互链 |
zhihu-answer |
知乎回答 | 起手 hook + 数据引用规范 |
tweet-thread |
X 长推 | 280 字切分 + 钩子节奏 |
email-formal |
正式邮件 | 称谓 / 主题 / 结尾自动校准 |
meeting-minutes |
会议纪要 | 决议 / Action / Owner 三段式 |
prd-template |
产品 PRD | 用户故事 + 验收标准 + 边界声明 |
release-notes |
版本说明 | 用户视角动词开头 + 分组 |
daily-summary |
日报 | 完成 / 遇阻 / 明日 三段 |
3.2 编程类(11 个)
| Skill | 触发场景 |
|---|---|
code-review |
用户说「review 这段代码」 |
git-workflow |
提交 / 分支 / PR 操作 |
test-driven-dev |
写测试先于写实现 |
refactor-extract |
重构抽取函数 / 类 |
bug-investigate |
复现 + 定位 + 假设三步 |
migration-plan |
数据库 / API 迁移规划 |
monorepo-pnpm |
pnpm workspaces 操作 |
python-uv |
uv 包管理标准动作 |
rust-cargo |
Cargo 工程惯例 |
nextjs-15 |
Next.js App Router 规范 |
tailwind-shadcn |
UI 实现风格统一 |
3.3 运维类(7 个)
涵盖 healthcheck / docker-compose / ssh-tunnel / caddy-reverse-proxy / cloudflare-tunnel / proxmox-lxc / nas-backup。这些 Skill 主要是把「正确姿势」固化下来——比如 healthcheck 会强制 Claude 先查 SSH、再查防火墙、再查 cron,避免它瞎跑命令。
3.4 个人类(4 个)
inbox-triage(邮件分级)、memory-curator(长期记忆维护)、weekly-review(周复盘模板)、reading-notes(读书笔记结构)。
⚡ 小贴士:Skill 不是越多越好,每多一个都意味着 Claude 启动时多扫一眼描述。建议保持在 30-40 个,触发率低的果断淘汰。
四、8 个 MCP Server:连通你的真实世界
Skills 让 Claude「知道怎么办」,MCP 才让它「真的去办」。我精挑了 8 个最常用的:
| MCP Server | 功能 | 接入难度 |
|---|---|---|
mcp-postgres |
直接读写本地/远程 Postgres | ⭐ |
mcp-feishu |
读写飞书文档 / 发消息 | ⭐⭐ |
mcp-playwright |
浏览器自动化 + 截图 | ⭐⭐ |
mcp-filesystem |
跨目录文件操作(沙箱外) | ⭐ |
mcp-github |
Issue / PR / Release | ⭐ |
mcp-linear |
任务 / 项目状态 | ⭐⭐ |
mcp-fetch |
通用 HTTP 抓取 + Markdown 化 | ⭐ |
mcp-sequential-thinking |
复杂规划脚手架 | ⭐ |
4.1 配置文件长什么样
Claude Code 的 MCP 配置在 ~/.claude.json 或项目 .mcp.json 里,结构清晰:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres",
"postgresql://user:pass@localhost:5432/mydb"]
},
"feishu": {
"command": "npx",
"args": ["-y", "@larksuiteoapi/lark-mcp"],
"env": {
"APP_ID": "cli_xxx",
"APP_SECRET": "xxx"
}
},
"playwright": {
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
},
"github": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "GITHUB_TOKEN",
"ghcr.io/github/github-mcp-server"],
"env": { "GITHUB_TOKEN": "ghp_xxx" }
}
}
}
注意三件事:
- 凭据走环境变量,不要硬编码到 args 里——避免被
claude --debug日志泄露。 - 本地 npx 启动慢,第一次会下包;推荐写一个本地 wrapper 脚本预热。
- Docker 化的 MCP 启动更稳(GitHub 官方推荐用
ghcr.io/github/github-mcp-server),但首启需要拉镜像。
4.2 验证 MCP 是否生效
启动 Claude Code 后,敲:
/mcp
会列出所有已加载的 Server 和它们暴露的 tools。我的工作机现在显示:
✔ postgres (8 tools)
✔ feishu (12 tools)
✔ playwright (15 tools)
✔ filesystem (5 tools)
✔ github (29 tools)
✔ linear (10 tools)
✔ fetch (1 tool)
✔ sequential-thinking (1 tool)
如果某个 Server 启动失败,/mcp 会显示红色 ✗ 和错误日志,多半是 token 过期或 npm 包名拼错。
五、实战:4 个真实场景串联 Skill + MCP
光看清单没意思,看几个我每天都在用的真实流程。

场景一:周一早会,自动生成上周战报
我说一句:「拉一下我上周的 Linear 已完成任务,写成日报发到 #weekly 飞书群。」
Claude 的执行链:
- 触发
weekly-reviewSkill → 加载日报模板。 - 调用
mcp-linear的list_issues,filterstatus=Done&updated_at>=last_monday。 - 用 Skill 模板格式化为「完成 / 遇阻 / 下周计划」三段。
- 调用
mcp-feishu的send_message,target 是#weekly群。
整个过程我只敲一句话,2 分钟搞定。Skill 提供格式,MCP 提供数据,两者完美分工。
场景二:客户报 Bug,5 分钟出复现报告
客户截图发过来:「点这个按钮没反应」。
/skill bug-investigate
帮我复现这个问题,使用线上环境 https://app.example.com
Claude 执行:
- 加载
bug-investigateSkill → 拿到「复现 / 假设 / 验证」三步框架。 - 调用
mcp-playwright的browser_navigate+browser_click,真去点那个按钮。 - 出错时自动
browser_screenshot,保存到~/bugs/2026-05-20/。 - 调用
mcp-postgres查相关数据状态。 - 输出一份带截图 + SQL 结果的复现报告。
以前我手工做这一套要 30 分钟,现在 5 分钟。
场景三:博客文章自动发布
写完一篇 Hugo 文章,我说:「发出去。」
Claude 执行:
- 加载
hugo-blogSkill → 校验 TOML 头、slug、互链。 - 调用
mcp-github的create_pull_request,把文章 PR 到我的博客仓库。 - 调用
mcp-feishu的send_message,给我自己发条「PR 已建,等 Vercel 预览」。
场景四:周五下班前,自动备份
「今天的工作记忆 dump 到 NAS。」
- 加载
nas-backupSkill → 拿到 SMB 路径和命名规范。 - 调用
mcp-filesystem把~/.claude/sessions/打包。 - 调用
exec跑smbclient上传到飞牛 NAS。 - 触发
memory-curatorSkill → 把今日对话精华抽到MEMORY.md。
六、踩坑实录:这些坑我替你踩过了
不藏着掖着,这套配置我前后改了 7 版才稳定,几个核心坑:
坑 1:MCP Server 启动慢导致 Claude 卡死
第一次跑会卡 30+ 秒,因为 npx -y 在拉包。解法:要么换 bunx,要么先 npm i -g 把 Server 装到本地,args 改成本地路径。
坑 2:飞书 MCP 频繁 401
tenant_access_token 默认有效期 2 小时。解法:用社区维护的 lark-mcp 自带刷新逻辑,别自己在 env 里塞死 token。
坑 3:Skill 描述太抽象,Claude 不触发
写过一个 Skill 描述是「文章写作辅助」——结果 Claude 一次没主动加载。解法:description 里塞触发关键词:
「触发:用户说『写公众号』『发推文』『发小红书』时启用」
加上明显的关键词,触发率直接上去。
坑 4:MCP 工具名冲突
我同时挂了两个 GitHub MCP(官方和社区版),两边都有 create_issue。解法:手动去掉一个,或者用 disabled 配置屏蔽冲突 tool。
坑 5:上下文爆炸
32 个 Skill 全启时,描述加起来约 4k token。解法:把低频 Skill 拆到 ~/.claude/skills/_archive/,用软链按需挂载——一周用不到就归档。
坑 6:MCP 凭据泄露到日志
claude --debug 会打印 MCP 启动命令,包含 token。解法:所有 MCP 凭据走 env,不进 args;调试日志单独存到加密目录。

七、写在最后:Skill + MCP 重塑了我对 AI 工具的认知
装完这 32 + 8,我做了一件事:回看自己最近 30 天和 Claude Code 的对话日志。
最直观的变化是——我不再写"提示词",我写"指令"。
以前要小心翼翼地铺垫:「假设你是一个资深前端工程师,我们要做一个……」。现在我直接说:「按 code-review 规范看下这个 PR」「用 feishu MCP 发到 #dev 群」。简洁得像在跟同事下任务。
Claude 不再是一个「需要哄着干活的实习生」,而是一个有规章制度、有外部权限、有长期记忆的资深员工。
Skill 给它「专业素养」,MCP 给它「工作权限」,Memory 给它「连续记忆」——这三件事拼起来,AI 才真正从「玩具」走向「生产力工具」。
如果你还在用裸装的 Claude Code,相信我,配上这套你会回不去。
最后留个互动:你正在用哪些 MCP?最离不开哪个 Skill? 评论区交个底,我把社区呼声最高的整理到下一篇里。