不期而至🎁 惊喜礼盒
🎁 Surprise · 不定期 · 随缘更新


🎁 Surprise · 不定期 · 随缘更新
🎁 SURPRISE
谢谢你停在这里。愿你被温柔以待,也愿你带着一点勇气继续往前——这是我留给访客的小小礼物 🎀✨。
— threetwoa
(=;ェ;=) 客来不妨坐下,落叶声里续一壶茶;猫会自己找你。
走进数字花园
规范专篇之四:MCP。Claude「先装哪三件」等工具口味保留为旁证章。
合并自原帖
mcp-handbook
很多人把 MCP、Skills、Plugin 当成并列扩展手段,选型时硬选一个。其实它们叠了三层:MCP 管「能否触及」,Skill 管「用得是否像样」,Plugin 只管「怎么打包给人装」。
| 层 | 解决啥 | 类比 |
|---|---|---|
| MCP | 连外部工具/数据 | USB-C |
| Skills | 流程手册,按需加载 | 操作说明书 |
| Plugin | 打包分发 | 应用商店安装包 |
Plugin 是容器,里面可以塞 Skills、.mcp.json、commands、hooks;Skill 读手册;MCP 开通道。缺一层事就做不全,但单干一个 Skill 时没必要硬套插件壳。
sse。claude mcp add 或手写 .mcp.json。local / project / user。MCP 只负责接通;怎么用好那条连接,是 Skill 的事。
SKILL.md(YAML + 正文)。description 决定会不会被自动唤起:写糊了等于白装。.claude/commands/deploy.md 与 .claude/skills/deploy/SKILL.md 都会注册 /deploy。/skill-name;只想手触、别自动:disable-model-invocation: true。~/.claude/skills/ · .claude/skills/ · 插件内 skills/。Skill ≠ 子代理:子代理另起上下文;Skill 是塞给当前 agent 的说明书。
1my-plugin/2├── .claude-plugin/3│ └── plugin.json # 只有清单在这里4├── commands/5├── skills/6├── agents/7├── hooks/8└── .mcp.json何时上 Plugin:已经攒了一组 Skill + MCP,要给团队一键装。单个 Skill 或一条 MCP,直接放就行。
常见误会:Skills 与 MCP 二选一(其实常并用);Skill 只能自动触发;slash 与 Skill 两套机制;还在用已废弃 SSE;插件目录放错。
素材来源:CSDN 原文
合并自原帖
mcp-handbook
「都是给 AI 加能力,所以二选一」——这句把人带沟里了。加能力没错,层位才是坑:一个管接进来,一个管怎么做。

MCP(Model Context Protocol)是开放连接标准:AI 应用用同一套规矩发现、暴露、传递和调用外部能力——数据源、工具、工作流、外部应用。
官方说法(2026-08-11 核对):开源标准,用来把 AI 应用接到外部系统;类比就是 AI 侧的 USB-C——值钱的是统一插头,不是某一个外设。见 modelcontextprotocol.io/introduction。

记住这句就够:重点不是某个工具,而是统一连接方式。
Skills 是可复用能力包:说明、知识、脚本、模板……把领域里怎么把事做稳的经验捆好,任务来了直接调用。
| MCP | Skills | |
|---|---|---|
| 偏什么 | 连接 | 组织 |
| 回答 | 怎么接外部世界 | 怎么把任务做好 |
| 对 AI | 接进来 | 按方法做 |
| 互替? | 否 | 否 |
别空谈互补,看一张销售周报怎么叠。

只有插头没有菜谱,会乱炖;只有菜谱接不上库,是纸上谈兵。
把 MCP / Skills 塞进成熟 AI 的分层里,误会基本消掉。

| 层 | 干什么 | 落点 |
|---|---|---|
| 模型 | 推理 / 生成 / 理解 | 脑子 |
| 连接层 | 数据 · 工具 · 系统 · 工作流 | MCP |
| 任务组织层 | 拆解 · 领域流程 · 复用规范 · 资源打包 | Skills |
公式六个字:模型 + 连接 + 任务组织。
选型时先问「我缺的是插头还是菜谱」,别再问「MCP 和 Skills 哪个更强」。
本篇不讲 CLI,也不讲具体怎么配某个 Host。若要「连接 / 方法 / 执行」三件一起看,站内已有:一张图讲清 MCP、Skills 和 CLI 怎么分工。彼=三件选型;本篇=两概念层位 + 三层栈,别硬并成一篇。
合并自原帖
mcp-handbook
MCP、Skills、CLI,分别解决「连接、方法、执行」三类问题。MCP 让 AI 接入知识库、数据库和外部系统;Skills 沉淀流程与经验,提升复用性;CLI 负责具体命令执行与落地操作。三者并非替代关系,而是协同关系,组合使用效果最佳。
它们分别是什么?彼此什么关系?怎么选?下面按图四段展开,文案尽量跟图面走,不当完整教程。

| 件 | 图面定义 | 典型能力 | 像 AI 的… |
|---|---|---|---|
| CLI | 命令行入口:直接操作电脑和终端 | 安装部署 / 执行命令 / 调试排错 | 手和脚 |
| Skills | 能力包:把经验、流程、脚本打包复用 | 标准流程 / 重复任务 / 稳定输出 | 经验和方法 |
| MCP | 连接协议:让 AI 接入外部工具和数据 | 知识库 / 第三方服务 / 系统集成 | 外部接口 |
分不清时先对号:要不要动手、要不要按套路做事、要不要连外面。
图中间是 AI Assistant,三件分别贴到不同部位:
图脚那句够用:Skills 管方法,CLI 管执行,MCP 管连接。
不是谁取代谁。缺方法会瞎干,缺手脚落不了地,缺连接就困在本地沙盒。
| 优先 | 触发条件 |
|---|---|
| 优先选 CLI | 安装软件、运行脚本、操作文件、排查环境问题 |
| 优先选 Skills | 沉淀 SOP、复用成熟流程、让团队反复调用同一能力 |
| 优先选 MCP | 接知识库、数据库、邮箱、网页、业务系统或 API |
选型顺序可以很粗暴:本地命令/文件/环境 → CLI;要稳定复用同一套做法 → Skills;要跨系统拿数据/调服务 → MCP。
图上三块是叠着的,不是三选一:
最佳实践:通常不是三选一,而是组合使用。
例:用 Skills 固化流程 + 用 CLI 执行命令 + 用 MCP 连接知识库。
页脚快速记忆也顺手背掉:
| 件 | 记法 |
|---|---|
| CLI | 会动手 |
| Skills | 会做事 |
| MCP | 会连接 |
合并自原帖
mcp-handbook
官方明确说过:Windows 用 npx 起 MCP 时,要用 cmd /c 包一层,否则 stdio 管道会被命令解释器截断。这是本机最常见的「装了但连不上」。
| 传输 | 场景 |
|---|---|
| stdio | 本地进程(默认,本文重点) |
| SSE | 远程长连接(旧路径,新接入慎用) |
| HTTP / streamable-http | 远程无状态 / 规范推荐名 |
| scope | 落盘 | 是否进 Git |
|---|---|---|
| local | 项目 .mcp.json | 通常不提交 |
| project | 项目 .mcp.json | 可提交共享 |
| user | ~/.claude/settings.json → mcpServers | 仅本机 |
user:claude mcp add / list / remove;-e 传环境变量,-H 传 HTTP 头。
| 名 | 要点 |
|---|---|
| filesystem | 白名单根目录,别给 C:\ |
| memory | 跨会话知识图谱;和 CLAUDE.md 分工:规则 vs 事实 |
| git | uvx mcp-server-git 或 python -m mcp_server_git |
| github | Token 进 env,权限收紧到 repo/read |
| postgres | 连接串;只读 SELECT,别接生产写库 |
| puppeteer | 首次拉 Chromium,国内可能慢 |
| fetch | HTML→Markdown |
| brave-search | API Key;旧包可能归档,可换 @anthropic-ai/brave-search-mcp-server |
.mcp.json 何时划算批量改多台机器、或 CLI 一行写烦时,直接编 JSON 与 claude mcp add 等价。注意逗号/引号;密码与 token 只放本机,入库前打码。
路径速查:
项目根\.mcp.jsonC:\Users\<用户>\.claude\settings.json 的 mcpServers清单选型看 Claude Code 必装 MCP:先三件,再慢慢加;Windows 可跑命令形态以本篇表格为准。
素材来源:CSDN 原文
合并自原帖
claude-code-handbook
别一口气装二十个 MCP。先全局挂三件基础,跑稳了再按技术栈加第二、三批。命令侧统一 -s user + npx -y,装完 claude mcp list 验一遍。
1claude mcp list2claude mcp add <名> -s user -- <启动命令>3claude mcp remove <名>| 服务器 | 命令要点 | 干什么 |
|---|---|---|
| filesystem | @modelcontextprotocol/server-filesystem + 目录白名单 | 本地读写,别给整盘 |
| Context7 | @upstash/context7-mcp@latest | 库/框架最新文档 |
| Git/GitHub | 官方/社区 GitHub MCP | Issue/PR/协作 |
Playwright 用 @executeautomation/playwright-mcp-server;Sequential Thinking 用 @modelcontextprotocol/server-sequential-thinking。
| MCP | 值得装的理由 | 原文评分 |
|---|---|---|
| Filesystem | 全栈/数据几乎绕不开 | 5/5 |
| Context7 | 少翻墙查文档,像实时 API 字典 | 5/5 |
| Git/GitHub | 协作与托管项目 | 5/5 |
| Playwright | 前端测/截图/爬取 | 4/5 |
| Sequential Thinking | 复杂规划拆步 | 4/5 |
| 数据库 MCP | 查结构、出 SQL(注意只读/非生产) | 4/5 |
| Figma / Task Master | UI 对齐、脑暴规划 | 3/5 |
npx 可能截断 stdio;要 cmd /c 包一层(见 Windows 上 MCP:先记住 cmd /c)。env,别写进仓库;token 打码后再分享配置。素材来源:CSDN 原文
合并自原帖
claude-code-handbook
MediaCrawler 是个挺能打的爬虫项目,七个平台(小红书 / 抖音 / 快手 / B 站 / 微博 / 贴吧 / 知乎)都能采公开内容和评论,但日常使用得手动跑命令行:python main.py --platform xhs --type search --keywords "xxx",登录态、翻页、存库全得自己伺候。
我的想法很直接:既然 Claude Code、Cursor 这些 AI 编程工具能读文件、能跑命令,为什么不把采集能力直接交给它们?让 AI 说一句「去小红书搜 AI 编程最近的热帖」,它自己就能把数据采回来、做分析、写报告。
中间缺的是一座桥:MCP Server。
整个项目最关键的设计决策,根子在一个历史包袱上——MediaCrawler 的配置全挂在全局 config 模块上。CLI 解析完直接改写 config.KEYWORDS、config.PLATFORM 这些全局变量,平台采集代码内部也直接读它们。
这意味着什么?一个进程里跑两个任务,全局配置互相污染。 你给任务 A 设的关键词,任务 B 也跟着变。而 MCP Server 恰恰要支持多任务、要并发,跟「全局单例」天然冲突。
三条路摆面前:
| 方案 | 思路 | 代价 |
|---|---|---|
| 子进程隔离 | 每个任务独立 subprocess 跑 main.py CLI | 每次冷启动浏览器,慢几秒 |
| 进程内驱动 | import 后改 config 再跑 async 任务 | 全局状态共享,并发=数据竞争,只能退化成串行 |
| 常驻 worker 池 | 预登录 N 个子进程排队分发 | 要自己管进程池、崩溃回收,复杂度最高 |
我选了子进程隔离。理由特别实在:MediaCrawler 自带完整 CLI,子进程方案零改动复用源码,进程边界天然把 config 污染问题解决了,代价只是每次冷启动 Chromium 那几秒——完全可接受。为快那么一点去背进程池的复杂度,不划算。
MCP 侧最终暴露六件工具:search_posts / get_post_detail / get_comments 负责提交采集任务,get_task_status 轮询进度,get_login_state / list_platforms 查状态。
采集是分钟级的活:一个关键词搜 20 条帖子带评论,三到五分钟很正常。而 MCP 工具调用是有超时约束的,同步阻塞不可行。
所以接口拆两类:
task_id,AI 自己轮询 get_task_statusAI 拿到的是一套能自主编排的流程:提交 → 轮询 → 拿到 save_dir → 按需读文件。数据量大时绝不能整包塞回 MCP 返回值——会直接撑爆 agent 上下文,只回摘要和落盘路径。
MediaCrawler 的登录态不是存个 cookie 文件,而是用 Playwright 的 launch_persistent_context(user_data_dir="browser_data/{platform}")——整个 Chromium 用户目录落盘。扫码登录一次,之后每次启动浏览器自动带上 cookie。
所以 MCP 侧根本不用管登录流程,只做两件事:
main.py --lt qrcode 扫码,登录态落到 browser_data/get_login_state 探测该目录在不在,就能判断有没有登录态比自己在 MCP 里重新实现一遍登录流程省事得多,也稳得多。
照着自己的命名习惯拼了 --crawler_max_comments_count_singlenotes,结果子进程一启动就 NoSuchOption 崩溃。MediaCrawler 真实的参数名是 --max_comments_count_singlenotes——没有 crawler 前缀。拼参数前老老实实 grep 一眼上游 cmd_arg/arg.py,别猜。
以为传 --crawler_max_notes_count 3 就只采 3 条,实际 core.py 里写死 if CRAWLER_MAX_NOTES_COUNT < 20: 强制抬到 20。于是 search 最少采一整页 20 条加评论,一个任务三到五分钟。想「只采几条试试」在 search 模式做不到,得用 detail(指定帖子)模式。这也意味着测试脚本的轮询超时得设得比服务器超时长,否则任务还在采,脚本先放弃了。
一开始 config.py 放在项目根,core/ 子目录里 import config。运行时没问题(sys.path 能找到),但 Pyright 会把 config 解析成 core.config(包内同名模块优先),满屏红线。解法是把代码收进正式 package(mediacrawler_mcp/),用相对导入 from .. import config。注意 IDE 的语言服务器可能缓存旧解析,命令行 pyright 已经 0 错误了 IDE 还飘红,重启一下就好。
测试脚本里 print("✅ 通过"),中文 Windows(代码页 936/GBK)控制台直接 UnicodeEncodeError。不是业务 bug,是测试打印的锅。要么启动时设 PYTHONIOENCODING=utf-8,要么打印内容别用 emoji。
爬虫最怕封号,测试策略必须克制:每种采集类型各测一次、量调到最小、严格串行。
验证到这一步,三条采集路径全部真实跑通:search 采到「AI编程」关键词的 20 条帖子加评论;detail / comments(指定帖子、指定帖子评论)在修好参数 bug 后也都成功,单个任务三到四分钟。
1mediacrawler-mcp/2├── server.py # MCP 入口,注册 6 个工具3├── mediacrawler_mcp/core/ # 子进程编排 + 任务状态机(并发/超时/回收)4├── tests/ # 协议层冒烟 + 编排链路 + 场景 loop 测试5└── README.md # 安装 / 登录 / 挂载到 Claude Code 的说明整套做下来最大的感受:CLI 项目封装成 MCP 的难度不在写工具,而在摸清上游的架构约束——全局状态、参数命名、平台行为,每个都可能是坑。先把这些摸清楚,剩下就是把「拼参数、起进程、收日志」这种机械活写对而已。
配置纪律:密钥走环境变量;Windows 上注意 cmd /c 与 JSON 转义;少而精的 MCP 胜过一排僵尸服务器。
复制链接或生成海报,发给感兴趣的人。

把分散的 Claude Code 笔记收成一篇:能力全景、Loop、项目结构、美化与状态栏、MCP、记忆、插件 Skill 与 Windows 坑。
2026-08-04部分内容可能已过时
分享你的想法,与大家交流讨论
像发消息一样写就好:点工具栏插入表情 / 图片,表情会直接显示。插图 ≤5MB。

🎁 Surprise · 不定期 · 随缘更新
🎁 SURPRISE
谢谢你停在这里。愿你被温柔以待,也愿你带着一点勇气继续往前——这是我留给访客的小小礼物 🎀✨。
— threetwoa
有什么想了解的?
我基于博客内容回答