引言
如果有mcp了,是否还要skill?这是个很有意思的问题。我们来拆解一下“把 MCP 实现成 Skill”这个想法,看看它能带来什么价值,以及是否值得做。
先理清概念:MCP 和 Skill 的关系
-
MCP (Model Context Protocol) 是一个让 AI 助手(如 Claude Code)能动态调用外部工具的协议。
-
Skill 在 Claude 生态中通常指一套封装好的指令、脚本或知识库,可以让 AI 完成一个更高级、更完整的任务(比如“代码审查”、“生成单元测试”等)。
简单理解:MCP 提供的是“原子能力”(工具),Skill 封装的是“场景化工作流”(怎么用这些工具)。
现在有这么一款工具:llmapi-mcp,它是一个专为 Claude Code 设计的 MCP 服务器,能让 AI 能够直接分析你本地的代码项目。这个服务器为 Claude Code 提供了以下 6 个核心工具:
| 工具名称 | 功能 | 应用场景 | CLI 示例(CMD) |
|---|---|---|---|
| project_map | 生成项目结构概览,包含目录树、关键文件和语言统计等。 | 让 AI 快速了解项目全貌和主要使用的技术栈。 | llmapi-mcp --call project_map "{\"depth\":3,\"focus\":\"src\",\"include_stats\":true}" |
| file_context | 提取文件的摘要信息,如函数和类的签名,可节省 70-90% 的上下文令牌。 | 需要分析大文件时,避免上下文窗口被撑爆。 | llmapi-mcp --call file_context "{\"file_path\":\"src/main.js\",\"detail\":\"outline\"}"llmapi-mcp --call file_context "{\"file_path\":\"src/api.py\",\"detail\":\"summary\"}" |
| lint_check | 对更改过的文件运行代码检查和类型检查。 | AI 在帮你修改代码后,可以自动检查是否引入了新的语法或格式问题。 | llmapi-mcp --call lint_check "{\"files\":[\"src/api.js\",\"src/utils.ts\"]}" |
| run_tests | 智能运行测试,只执行与更改文件相关的测试用例。 | 大幅节省测试时间,让 AI 能快速验证代码变更的正确性。 | llmapi-mcp --call run_tests "{\"files\":[\"src/api.js\"]}" |
| dep_graph | 分析文件的导入/依赖关系,明确它引入了什么,以及谁依赖了它。 | 在进行重构或分析模块影响范围时非常有用。 | llmapi-mcp --call dep_graph "{\"file_path\":\"src/api.js\"}" |
| quality_report | 生成一份代码质量报告,包含修改统计和检查摘要。 | 用于代码审查前,提供一份客观的质量快照。 | llmapi-mcp --call quality_report "{}" |
使用前需启动服务:llmapi-mcp --serve
停止服务:llmapi-mcp --stop
它的核心思路是零配置、自动检测。对于 Node.js、Python、Rust、Go 等项目,它能自动识别并使用对应的工具(如 ESLint、ruff、cargo clippy 等),然后以 MCP 工具的形式提供给你的 AI 助手调用。你只需要打开(或创建)Claude Code 的 MCP 设置文件 ~/.claude/settings.json,将以下配置添加进去:
{
"mcpServers": {
"llmapi": {
"command": "npx",
"args": ["-y", "@llmapi/mcp-supervisor"]
}
}
}
安装目录:C:/Users/xxx/AppData/Roaming/npm/node_modules/llmapi-mcp/dist/tools
配置保存后,下次与 Claude Code 对话时,直接说“帮我跑一下 lint”就行,AI 会自动调用对应工具来分析你的代码了。如果你在 Claude Code 中已经配置好了 MCP,那么再加一层 Skill 属于多余,意义不大 。但是如果是以下情况,有些场景就会非常有意义:
| 场景 | 理由 |
|---|---|
| 你想在 Claude Pro(网页版)或 API 里使用 | 网页版不支持 MCP,但支持自定义 Skill(通过上传指令文件)。你可以写一个 Skill,让 Claude 通过执行命令行来调用 llmapi-mcp(例如用 npx @llmapi/mcp-supervisor 的某个子命令)。 |
| 你想把多个 MCP 工具串成一个自动化流程 | 比如:project_map → 识别修改的文件 → lint_check → 如果有错误 → 调用 file_context 获取相关代码 → 自动修复 → 再跑 run_tests。这个工作流可以写成一个 Skill,一键触发。 |
| 你想给非技术用户(或新手)提供极简入口 | 封装成"代码质量体检"Skill,用户不需要知道 MCP、npm、npx 等概念,只需要说"帮我检查项目健康度"。 |
| 你想跨平台复用(比如同时用在 Cursor、Windsurf 等) | 如果这些平台都支持 MCP,那直接配置 MCP 更通用。但如果它们只支持 Skill(比如自定义 Prompt + 脚本),那封装一下就有用。 |
llmapi-mcp Skill 设计
1. 整体架构图
+---------------------------------------------------------------------+
| llmapi-mcp |
+---------------------------------------------------------------------+
| 输入:用户请求(触发词:代码质量/检查项目/自动化流程等) |
| 工具:@llmapi/mcp-supervisor (Node.js MCP服务器) |
| 输出:质量报告 + 自动化流程执行结果 |
+---------------------------------------------------------------------+
|
+-------------------------+-------------------------+
| | |
v v v
+----------------+ +----------------+ +----------------+
| 触发词识别 | | 触发词库 | | 版本管理 |
| 25+ 触发关键词 | | 质量体检 等 | | v1.0.0 |
+----------------+ +----------------+ +----------------+
2. 核心执行流程(状态机)
+---------------------------------------------------------------------+
| 执行流程状态机 |
+---------------------------------------------------------------------+
| |
| +----------+ +----------+ +----------+ +----------+ |
| | 阶段1 |--->| 阶段2 |--->| 阶段3 |--->| 阶段4 | |
| | 环境检查 | | 项目检测 | | 执行工具 | | 输出报告 | |
| +----------+ +----------+ +----------+ +----------+ |
| |
+---------------------------------------------------------------------+
3. 各阶段详细实现逻辑
阶段1:环境检查
+---------------------------------------------------------------------+
| 1. 环境检查 |
+---------------------------------------------------------------------+
| |
| 检查项目: |
| +--------------------------------------------------------------+ |
| | 检查项 | 说明 | 工具 | |
| +--------------------------------------------------------------+ |
| | Node.js版本 | >= 18.0.0 | node -v | |
| | Git | 已安装 | git --version| |
| | llmapi-mcp | 检查是否已安装 | npm list | |
| +--------------------------------------------------------------+ |
| |
| 逻辑流程: |
| +-----------------+ |
| | 检查 Node.js | |
| | 版本 | |
| +--------+--------+ |
| | |
| +-----+-----+ |
| v v |
| 满足要求 不满足要求 |
| | | |
| v v |
| 继续检查 提示安装 |
| |
+---------------------------------------------------------------------+
实现要点:
- 使用
child_process.execSync()调用系统命令 - 检测版本是否满足最低要求
- 提供安装指引
阶段2:项目检测
+---------------------------------------------------------------------+
| 2. 项目检测 |
+---------------------------------------------------------------------+
| |
| 自动检测项目类型: |
| +--------------------------------------------------------------+ |
| | 项目类型 | 标识文件 | 自动检测工具 | |
| +--------------------------------------------------------------+ |
| | Node.js | package.json | ESLint/Biome, Jest/Vitest/Mocha, tsc | |
| | Python | pyproject.toml | ruff/flake8, pytest, mypy | |
| | Rust | Cargo.toml | cargo clippy, cargo check, cargo test | |
| | Go | go.mod | go vet, go test | |
| +--------------------------------------------------------------+ |
| |
| 支持的MCP工具 (6个核心工具): |
| +--------------------------------------------------------------+ |
| | 工具名称 | 功能 | 应用场景 | |
| +--------------------------------------------------------------+ |
| | project_map | 生成项目结构概览 | 快速了解项目全貌 | |
| | file_context | 提取文件摘要信息 | 分析大文件,节省上下文 | |
| | lint_check | 运行代码检查和类型检查 | 自动检查代码问题 | |
| | run_tests | 智能运行相关测试 | 快速验证代码变更 | |
| | dep_graph | 分析导入/依赖关系 | 重构和影响分析 | |
| | quality_report | 生成代码质量报告 | 代码审查前质量快照 | |
| +--------------------------------------------------------------+ |
| |
| 自定义配置 (.llmapi-mcp.json): |
| +--------------------------------------------------------------+ |
| | { | |
| | "linter": { "command": "npm", "args": ["run", "lint:custom"] }, | |
| | "testRunner": { "command": "npm", "args": ["run", "test:unit"] } | |
| | } | |
| +--------------------------------------------------------------+ |
| |
+---------------------------------------------------------------------+
阶段3:执行工具
+---------------------------------------------------------------------+
| 3. 执行工具 |
+---------------------------------------------------------------------+
| |
| 工具执行模式: |
| +--------------------------------------------------------------+ |
| | 模式 | 说明 | |
| +--------------------------------------------------------------+ |
| | 单工具模式 | 单独执行某个工具 | |
| | 工作流模式 | 串接多个工具形成自动化流程 | |
| | 体检模式 | 一键执行全面检查(极简入口) | |
| +--------------------------------------------------------------+ |
| |
| 工作流示例: |
| +--------------------------------------------------------------+ |
| | project_map --> 识别修改的文件 --> lint_check --> | |
| | 如果有错误 --> file_context --> 自动修复 --> run_tests | |
| +--------------------------------------------------------------+ |
| |
| 执行命令: |
| +--------------------------------------------------------------+ |
| | # 单工具执行 | |
| | npx llmapi-mcp project_map | |
| | npx llmapi-mcp lint_check | |
| | npx llmapi-mcp run_tests | |
| | | |
| | # 执行工作流 | |
| | npx llmapi-mcp workflow --name code-review | |
| | | |
| | # 代码质量体检(极简入口) | |
| | npx llmapi-mcp health-check | |
| +--------------------------------------------------------------+ |
| |
| 工具执行流程: |
| +--------------------------------------------------------------+ |
| | 1. lint_check: 检查代码是否有lint错误 | |
| | - ESLLint/Biome (Node.js) | |
| | - ruff/flake8 (Python) | |
| | - cargo clippy (Rust) | |
| | | |
| | 2. run_tests: 智能运行相关测试 | |
| | - Jest/Vitest/Mocha (Node.js) | |
| | - pytest (Python) | |
| | - cargo test (Rust) | |
| | | |
| | 3. dep_graph: 分析依赖关系 | |
| | - 展示文件引入了什么 | |
| | - 展示谁依赖了这个文件 | |
| | | |
| | 4. quality_report: 生成质量报告 | |
| | - 修改统计 | |
| | - 检查摘要 | |
| +--------------------------------------------------------------+ |
| |
+---------------------------------------------------------------------+
阶段4:输出报告
+---------------------------------------------------------------------+
| 4. 输出报告 |
+---------------------------------------------------------------------+
| |
| 报告结构: |
| +--------------------------------------------------------------+ |
| | # 代码质量报告 | |
| | | |
| | ## 项目概况 | |
| | - 项目类型: Node.js | |
| | - 技术栈: JavaScript, TypeScript | |
| | - 目录结构: 12个主要目录 | |
| | | |
| | ## 修改统计 | |
| | | 文件类型 | 修改数量 | | |
| | |------------|----------| | |
| | | .js | 15 | | |
| | | .ts | 8 | | |
| | | .json | 3 | | |
| | | |
| | ## Lint检查结果 | |
| | - 总问题数: 23 | |
| | - 错误: 5 | |
| | - 警告: 10 | |
| | - 提示: 8 | |
| | | |
| | ## 测试结果 | |
| | - 执行测试: 45 | |
| | - 通过: 42 | |
| | - 失败: 3 | |
| | | |
| | ## 质量建议 | |
| | 1. src/utils/auth.js:123 - 空指针检查建议 | |
| | 2. src/api/user.js:45 - 建议使用async/await | |
| +--------------------------------------------------------------+ |
| |
| 输出路径: .llmapi-mcp/report_<timestamp>.md |
| |
+---------------------------------------------------------------------+
4. 关键数据结构
4.1 触发词列表
trigger:
- 代码质量 / 检查代码质量 / 质量报告
- 项目健康 / 项目体检 / 代码体检
- 检查项目 / 项目检查 / 扫描项目
- lint检查 / 代码检查 / 代码扫描
- 运行测试 / 执行测试 / 测试验证
- 依赖分析 / 分析依赖 / 依赖关系
- 项目结构 / 目录结构 / 项目概览
- 代码审查 / 审查代码 / review
- 自动化流程 / 工作流 / 一键检查
4.2 项目检测结果
{
"project_type": "nodejs",
"config_file": "package.json",
"detected": {
"linter": "ESLint",
"test_runner": "Jest",
"type_checker": "TypeScript"
},
"files_changed": 26,
"languages": [
{
"name": "TypeScript", "percentage": 65},
{
"name": "JavaScript", "percentage": 25},
{
"name": "JSON", "percentage": 10}
]
}
4.3 工具执行结果
{
"lint_check": {
"status": "completed",
"errors": 5,
"warnings": 10,
"infos": 8,
"files": [
{
"file": "src/utils/auth.js", "line": 123, "severity": "error", "message": "Unused variable"}
]
},
"run_tests": {
"status": "completed",
"total": 45,
"passed": 42,
"failed": 3,
"duration": "12.3s"
},
"dep_graph": {
"imports": ["lodash", "express", "./utils"],
"imported_by": ["src/api/user.js", "src/api/order.js"]
},
"quality_report": {
"summary": "代码质量良好,建议修复3个错误",
"score": 85
}
}
5. 流程决策表
| 输入条件 | 执行路径 | 说明 |
|---|---|---|
| 用户说"代码质量体检" | 体检模式 | 一键执行全面检查 |
| 用户说"lint检查" | lint_check | 只执行代码检查 |
| 用户说"运行测试" | run_tests | 只执行测试 |
| 用户说"依赖分析" | dep_graph | 分析依赖关系 |
| 用户说"项目结构" | project_map | 生成项目概览 |
| 用户说"质量报告" | quality_report | 生成质量报告 |
6. 核心设计原则
| 原则 | 实现 |
|---|---|
| 零配置自动检测 | 自动识别项目类型和技术栈 |
| 极简入口 | "代码质量体检"一句话完成全面检查 |
| 工作流串联 | 多个工具串成自动化流程 |
| 多语言支持 | Node.js/Python/Rust/Go |
| 安全 | API Key等敏感信息支持环境变量 |
7. 与外部组件交互
+---------------------------------------------------------------------+
| 组件交互图 |
+---------------------------------------------------------------------+
| |
| llmapi-mcp |
| | |
| +---> Node.js/npm (运行时环境) |
| | | |
| | +---> package.json (项目检测) |
| | +---> ESLint/Jest (Node.js工具) |
| | +---> ruff/pytest (Python工具) |
| | +---> cargo/go (Rust/Go工具) |
| | |
| +---> Claude Code (LLM客户端) |
| | | |
| | +---> 自动调用MCP工具 |
| | |
| +---> .llmapi-mcp.json (自定义配置) |
| | |
| +---> 用户 (交互确认) |
| |
+---------------------------------------------------------------------+
8. Skill 配置信息
| 字段 | 值 |
|---|---|
| name | llmapi-mcp |
| version | 1.0.0 |
| allowed_tools | Read, Write, Edit, Glob, Grep, Bash, task |
| 输出目录 | .llmapi-mcp/ |
9. 技术实现要点
9.1 项目自动检测
// 项目类型检测
const PROJECT_DETECTORS = {
'nodejs': {
'indicator': 'package.json',
'linter': ['ESLint', 'Biome'],
'test_runner': ['Jest', 'Vitest', 'Mocha'],
'type_checker': 'TypeScript'
},
'python': {
'indicator': 'pyproject.toml',
'linter': ['ruff', 'flake8'],
'test_runner': 'pytest',
'type_checker': 'mypy'
},
'rust': {
'indicator': 'Cargo.toml',
'linter': 'cargo clippy',
'test_runner': 'cargo test',
'type_checker': 'cargo check'
},
'go': {
'indicator': 'go.mod',
'linter': 'go vet',
'test_runner': 'go test',
'type_checker': 'go build'
}
};
9.2 工作流执行
// 工作流定义
const WORKFLOWS = {
'code-review': [
{
'tool': 'project_map', 'description': '生成项目概览'},
{
'tool': 'lint_check', 'description': '检查代码问题'},
{
'tool': 'run_tests', 'description': '运行相关测试'},
{
'tool': 'quality_report', 'description': '生成质量报告'}
],
'quick-fix': [
{
'tool': 'lint_check', 'description': '检查代码问题'},
{
'tool': 'file_context', 'description': '获取错误相关代码'},
{
'tool': 'auto_fix', 'description': '自动修复'},
{
'tool': 'run_tests', 'description': '验证修复'}
]
};
9.3 质量体检实现
# 代码质量体检 - 一键执行
npx llmapi-mcp health-check
# 等价于执行以下工具:
# 1. project_map - 了解项目结构
# 2. lint_check - 检查代码问题
# 3. run_tests - 验证代码正确性
# 4. quality_report - 生成综合报告
10. 使用场景示例
场景1: 代码质量体检(非技术用户)
用户: "帮我检查项目健康度"
Skill执行:
1. 自动检测项目类型(Node.js)
2. 自动调用 lint_check + run_tests
3. 生成质量报告
用户看到: "您的代码质量得分 85 分,建议修复 3 个错误"
场景2: 开发者工作流
用户: "检查最近修改的代码有没有问题"
Skill执行:
1. 调用 git diff 获取修改文件
2. 对修改文件执行 lint_check
3. 运行与修改文件相关的测试
4. 生成质量报告
场景3: 自动化流程
用户: "跑一下完整的代码审查流程"
Skill执行:
1. project_map - 生成项目概览
2. lint_check - 检查代码问题
3. 如果有错误: file_context - 获取相关代码
4. 自动修复
5. run_tests - 验证修复
6. quality_report - 生成最终报告
这样便设计了一个智能化代码质量分析与自动化工作流工具,通过零配置自动检测、多工具串联、极简入口设计,让任何用户都能轻松获得专业的代码质量分析和自动化流程能力。
llmapi-mcp Skill 实现
├── SKILL.md # Skill 定义文件(已完成)
├── README.md
├── scripts\
│ ├── init.py # 环境初始化脚本
│ ├── main.py # 主执行逻辑(整合各模块)
│ ├── project_detector.py # 项目检测模块
│ └── mcp_executor.py # 工具执行模块
└── references\ # 参考文档目录
SKILL.md - Skill 定义文件
---
name: llmapi-mcp
version: 1.0.0
description: 智能化代码质量分析与自动化工作流工具。通过零配置自动检测、多工具串联、极简入口设计,让任何用户都能轻松获得专业的代码质量分析。支持6个核心MCP工具:project_map、file_context、lint_check、run_tests、dep_graph、quality_report。
trigger:
- 代码质量
- 检查代码质量
- 质量报告
- 项目健康
- 项目体检
- 代码体检
- 检查项目
- 项目


89

被折叠的 条评论
为什么被折叠?



