Claude Code Skills/MCP/Plugin 安装目录与权限指南
Claude Code :Skills、MCP、Plugin 安装目录、权限问题
Claude Code 的扩展体系里,总共包含三大金刚:Skills、MCP Servers 和 Plugins。对于刚入门的用户来说,这三者的安装位置、启用方式以及权限逻辑,的确容易让人混淆。经常是某个技能在项目里死活不响应,或者改了一堆配置才意识到路径搞错了。
这篇文章就把这三类扩展从安装目录到配置方式再到权限层级,一次性理清楚,方便日后遇到问题直接翻出来看。
一、三种扩展类型概览
先用一张对比表快速建立整体认知:
| 特性 | Skills | MCP Servers | Plugins |
|---|---|---|---|
| 安装位置 | ~/.claude/skills/ 或 .claude/skills/ |
配置在 settings.json | ~/.claude/plugins/ |
| 文件格式 | Markdown (.md) | JSON 配置 | 目录 + 配置 |
| 调用方式 | /skill-name |
自动加载工具 | 自动加载功能 |
| 禁用方式 | 删除文件 | "disabled": true |
"enabledPlugins": false |
| 典型用途 | 自定义工作流、模板 | 外部工具集成 | 功能扩展包 |
二、Skills:技能文件
Skills 是三种扩展里门槛最低的,实现方式极其简单——它就是一些 Markdown 文件。
安装目录
# 用户级(所有项目生效)
~/.claude/skills/
# 项目级(仅当前项目生效)
.claude/skills/
使用方式
在对应目录下扔一个 .md 文件,然后通过 /skill-name 的形式调用。比如说放了一个 code-review.md,那么直接在对话里输入 /code-review 就能触发。
权限规则
- 项目级 Skills 的优先级高于用户级
- 如果出现同名文件,项目级版本会覆盖用户级版本
- 禁用方式也很直白:删除文件就是禁用,没有多余的开关选项
三、MCP Servers:模型上下文协议服务
MCP 的定位是集成外部工具,比如文件系统操作、数据库访问这类能力。它的配置方式比 Skills 稍微复杂一点,但也更灵活。
配置位置
MCP 的配置写在 settings.json 中,而且可以分布在三个层级:
# 用户全局配置
~/.claude/settings.json
# 项目级配置(可提交 Git)
.claude/settings.json
# 项目本地配置(不提交 Git)
.claude/settings.local.json
配置示例
一个典型的 MCP Server 配置长这样:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["@anthropic/mcp-filesystem"]
},
"project-db": {
"command": "node",
"args": ["./mcp-server.js"],
"env": {
"DB_URL": "postgresql://localhost/mydb"
}
}
}
}
禁用单个 MCP Server
只需要在对应的 MCP 配置里加一行 "disabled": true 即可:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["@anthropic/mcp-filesystem"],
"disabled": true
}
}
}
常用命令
通过命令行管理 MCP Server 也很方便:
# 添加 MCP Server
claude mcp add <command>
# 列出所有 MCP Server
claude mcp list
# 移除 MCP Server
claude mcp remove
四、Plugins:插件扩展
Plugins 是三种扩展中功能最完整的一种,但权限控制也是最让人迷惑的——需要花点心思搞清楚。
安装目录
~/.claude/plugins/
插件安装到用户级目录后,逻辑上所有项目都可以访问。但真正让人头疼的地方来了:光装上去还没完,还需要在 settings 里显式启用。
启用配置
在 ~/.claude/settings.json 里通过 enabledPlugins 字段控制:
{
"enabledPlugins": {
"my-plugin": true,
"code-formatter": true
}
}
项目级禁用
如果某个特定项目不想加载某个全局启用的插件,可以在项目级 settings 里将其设为 false:
// .claude/settings.json
{
"enabledPlugins": {
"my-plugin": false
}
}
这个配置会覆盖全局设置,且作用范围仅限于当前项目。
五、配置优先级
这一块是踩坑的重灾区。Claude Code 的配置采用三层覆盖机制:
项目本地配置 (.claude/settings.local.json)
↓ 覆盖
项目级配置 (.claude/settings.json)
↓ 覆盖
用户全局配置 (~/.claude/settings.json)
优先级从高到低排列:项目本地 > 项目级 > 用户全局。
拿一个真实场景来理解:
- 全局配置里把
my-plugin设置为true - 项目级配置里却把它改成了
false - 最终这个项目里,
my-plugin就是被禁用的状态
settings.local.json 的作用
.claude/settings.local.json 是不进 Git 版本控制的,因此特别适合存放个人偏好或敏感配置,比如数据库密码这类东西:
{
"mcpServers": {
"personal-db": {
"command": "node",
"args": ["./my-personal-server.js"],
"env": {
"DB_PASSWORD": "xxx"
}
}
}
}
六、实际使用建议
1. Skills 适合什么场景?
- 代码审查模板
- 提交信息规范
- 常用的代码片段
- 团队共享的工作流
2. MCP Servers 适合什么场景?
- 文件系统操作
- 数据库查询
- API 调用
- 外部工具集成
3. Plugins 适合什么场景?
- 代码格式化
- AI 辅助功能
- 复杂的工作流扩展
4. 权限管理最佳实践
一个比较靠谱的分层策略是这样的:
# 全局配置放通用的、大家都需要的
~/.claude/settings.json
# 项目配置放项目特定的、需要版本控制的
.claude/settings.json
# 本地配置放个人的、敏感的
.claude/settings.local.json
七、常见问题
Q: 插件安装了但不生效?
检查两件事:
enabledPlugins里是否真的设置为true- 项目级配置是否存在覆盖全局设置的情况
Q: MCP Server 配置了但没反应?
从命令行先确认当前状态:
# 先检查配置是否正确
claude mcp list
# 如果配置有问题,重新添加
claude mcp remove
claude mcp add <command>
Q: 想在某个项目里禁用全局插件?
在项目根目录创建 .claude/settings.json:
{
"enabledPlugins": {
"plugin-name": false
}
}
Q: 配置改了需要重启吗?
不需要重启 Claude Code,运行 /reload-plugins 即可重新加载配置。
总结
三种扩展类型定位分明:
- Skills:最简单,本质就是 Markdown 文件,适合模板和工作流
- MCP Servers:配置驱动,适合外部工具集成
- Plugins:功能最完整,但权限控制也最复杂
权限管理的核心在于理解三层配置的覆盖规则:项目本地 > 项目级 > 用户全局。遇到插件不生效之类的问题,优先检查当前层级是否存在配置覆盖,通常都能找到原因。
