mcp-probe-kit 1.6.0 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -5
- package/build/index.js +30 -1
- package/build/tools/design2code.d.ts +29 -0
- package/build/tools/design2code.js +400 -0
- package/build/tools/index.d.ts +1 -0
- package/build/tools/index.js +1 -0
- package/docs/BEST_PRACTICES.md +4 -0
- package/docs/HOW_TO_TRIGGER.html +4 -2
- package/docs/HOW_TO_TRIGGER.md +31 -1
- package/docs/specs/design2code/README.md +0 -0
- package/docs/specs/design2code/requirements.md +0 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
# MCP Probe Kit
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/mcp-probe-kit)
|
|
4
|
+
[](https://www.npmjs.com/package/mcp-probe-kit)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://github.com/mybolide/mcp-probe-kit/stargazers)
|
|
7
|
+
|
|
3
8
|
> 🚀 AI 开发增强工具集 - 让 AI 更懂你的开发流程
|
|
4
9
|
|
|
5
|
-
一个强大的 MCP (Model Context Protocol) 服务器,提供 **
|
|
10
|
+
一个强大的 MCP (Model Context Protocol) 服务器,提供 **39 个实用工具**(31 个基础工具 + 8 个智能编排),覆盖代码质量、开发效率、项目管理全流程。
|
|
6
11
|
|
|
7
12
|
**支持所有 MCP 客户端**:Cursor、Claude Desktop、Cline、Continue 等
|
|
8
13
|
|
|
9
|
-
**作者**: [小墨 (Kyle)](https://www.bytezonex.com/) | **项目**: [GitHub](https://github.com/mybolide/mcp-probe-kit)
|
|
14
|
+
**作者**: [小墨 (Kyle)](https://www.bytezonex.com/) | **项目**: [GitHub](https://github.com/mybolide/mcp-probe-kit) | **npm**: [mcp-probe-kit](https://www.npmjs.com/package/mcp-probe-kit)
|
|
10
15
|
|
|
11
16
|
---
|
|
12
17
|
|
|
@@ -22,7 +27,7 @@
|
|
|
22
27
|
- **`perf`** - 性能分析
|
|
23
28
|
- **`fix`** - 自动修复代码问题
|
|
24
29
|
|
|
25
|
-
### 🛠️ 开发效率(
|
|
30
|
+
### 🛠️ 开发效率(15 个工具)
|
|
26
31
|
- **`gencommit`** - Git 提交消息生成
|
|
27
32
|
- **`genapi`** - API 文档生成
|
|
28
33
|
- **`gendoc`** - 代码注释生成
|
|
@@ -31,6 +36,7 @@
|
|
|
31
36
|
- **`gensql`** - SQL 查询生成器
|
|
32
37
|
- **`genui`** - UI 组件生成器(React + Vue)
|
|
33
38
|
- **`gen_mock`** - Mock 数据生成器 🆕
|
|
39
|
+
- **`design2code`** - 设计稿转代码(图片/描述/HTML → Vue/React)🆕
|
|
34
40
|
- **`explain`** - 代码解释器
|
|
35
41
|
- **`convert`** - 代码转换器
|
|
36
42
|
- **`css_order`** - CSS 属性顺序规范
|
|
@@ -677,6 +683,59 @@ feat: 🎸 添加用户登录功能
|
|
|
677
683
|
|
|
678
684
|
---
|
|
679
685
|
|
|
686
|
+
#### `design2code` - 设计稿转代码 🆕
|
|
687
|
+
1:1 还原设计稿或将 HTML 转换为 Vue/React 项目页面。
|
|
688
|
+
|
|
689
|
+
**用法**:`design2code` 然后提供设计稿
|
|
690
|
+
|
|
691
|
+
**输入方式**:
|
|
692
|
+
- **图片 URL** - 设计稿图片链接(支持 jpg/png/gif/webp/svg)
|
|
693
|
+
- **Base64 图片** - 直接粘贴 base64 编码的图片
|
|
694
|
+
- **设计稿描述** - 用文字描述页面布局和功能
|
|
695
|
+
- **HTML 代码** - 现有的 HTML 代码
|
|
696
|
+
|
|
697
|
+
**参数**:
|
|
698
|
+
- `input` - 设计稿图片/描述/HTML(必填)
|
|
699
|
+
- `framework` - vue/react(默认 vue)
|
|
700
|
+
- `style_solution` - tailwind/css-modules/styled-components(默认 tailwind)
|
|
701
|
+
- `component_type` - page/component(默认 page)
|
|
702
|
+
|
|
703
|
+
**功能特性**:
|
|
704
|
+
- 🎨 **精确还原** - 1:1 还原布局、颜色、字体、间距
|
|
705
|
+
- 📱 **响应式设计** - 自动生成移动端/平板/桌面端适配
|
|
706
|
+
- 🧩 **组件化** - 智能拆分可复用组件
|
|
707
|
+
- 💎 **TypeScript** - 完整的类型定义
|
|
708
|
+
- ♿ **可访问性** - 语义化 HTML + ARIA 属性
|
|
709
|
+
- ⚡ **性能优化** - 图片懒加载、代码分割
|
|
710
|
+
|
|
711
|
+
**适用场景**:
|
|
712
|
+
- 🎨 UI 设计稿转前端代码
|
|
713
|
+
- 🔄 HTML 页面迁移到 Vue/React
|
|
714
|
+
- 📄 落地页快速开发
|
|
715
|
+
- 🎯 原型转生产代码
|
|
716
|
+
|
|
717
|
+
**输出内容**:
|
|
718
|
+
- 完整的组件代码(Vue 3 Composition API / React Hooks)
|
|
719
|
+
- TypeScript 类型定义
|
|
720
|
+
- Tailwind CSS 样式(或其他方案)
|
|
721
|
+
- 使用示例和说明
|
|
722
|
+
- 响应式断点设计
|
|
723
|
+
- 性能优化建议
|
|
724
|
+
|
|
725
|
+
**示例**:
|
|
726
|
+
```
|
|
727
|
+
# 图片转代码
|
|
728
|
+
design2code https://example.com/design.png
|
|
729
|
+
|
|
730
|
+
# 描述转代码
|
|
731
|
+
design2code "创建一个登录页面,包含用户名、密码输入框和登录按钮"
|
|
732
|
+
|
|
733
|
+
# HTML 转 Vue
|
|
734
|
+
design2code <div class="container">...</div>
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
---
|
|
738
|
+
|
|
680
739
|
### 📦 项目管理工具
|
|
681
740
|
|
|
682
741
|
#### `init_setting` - 配置初始化
|
|
@@ -1174,9 +1233,10 @@ mcp-probe-kit/
|
|
|
1174
1233
|
│ ├── gendoc.ts # 注释生成
|
|
1175
1234
|
│ ├── genpr.ts # PR 生成
|
|
1176
1235
|
│ ├── genchangelog.ts # Changelog 生成
|
|
1177
|
-
│ ├── gensql.ts
|
|
1236
|
+
│ ├── gensql.ts # SQL 生成器
|
|
1178
1237
|
│ ├── genui.ts # UI 组件生成器
|
|
1179
1238
|
│ ├── gen_mock.ts # Mock 数据生成 🆕
|
|
1239
|
+
│ ├── design2code.ts # 设计稿转代码 🆕
|
|
1180
1240
|
│ ├── explain.ts # 代码解释器
|
|
1181
1241
|
│ ├── convert.ts # 代码转换器
|
|
1182
1242
|
│ ├── css_order.ts # CSS 顺序规范
|
|
@@ -1418,7 +1478,7 @@ MIT License
|
|
|
1418
1478
|
├── perf 性能分析
|
|
1419
1479
|
└── fix 自动修复
|
|
1420
1480
|
|
|
1421
|
-
开发效率 (
|
|
1481
|
+
开发效率 (15)
|
|
1422
1482
|
├── gencommit 提交生成
|
|
1423
1483
|
├── genapi 文档生成
|
|
1424
1484
|
├── gendoc 注释生成
|
|
@@ -1427,6 +1487,7 @@ MIT License
|
|
|
1427
1487
|
├── gensql SQL 生成器
|
|
1428
1488
|
├── genui UI 组件生成器
|
|
1429
1489
|
├── gen_mock Mock 数据生成 🆕
|
|
1490
|
+
├── design2code 设计稿转代码 🆕
|
|
1430
1491
|
├── explain 代码解释器
|
|
1431
1492
|
├── convert 代码转换器
|
|
1432
1493
|
├── css_order CSS 顺序规范
|
package/build/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
5
|
-
import { detectShell, initSetting, initProject, gencommit, debug, genapi, codeReview, gentest, genpr, checkDeps, gendoc, genchangelog, refactor, perf, fix, gensql, resolveConflict, genui, explain, convert, cssOrder, genreadme, split, analyzeProject, initProjectContext, addFeature, securityScan, fixBug, estimate, genMock, startFeature, startBugfix, startReview, startRelease, startRefactor, startOnboard, startApi, startDoc } from "./tools/index.js";
|
|
5
|
+
import { detectShell, initSetting, initProject, gencommit, debug, genapi, codeReview, gentest, genpr, checkDeps, gendoc, genchangelog, refactor, perf, fix, gensql, resolveConflict, genui, explain, convert, cssOrder, genreadme, split, analyzeProject, initProjectContext, addFeature, securityScan, fixBug, estimate, genMock, design2code, startFeature, startBugfix, startReview, startRelease, startRefactor, startOnboard, startApi, startDoc } from "./tools/index.js";
|
|
6
6
|
import { VERSION, NAME } from "./version.js";
|
|
7
7
|
// 创建MCP服务器实例
|
|
8
8
|
const server = new Server({
|
|
@@ -584,6 +584,32 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
584
584
|
required: ["schema"],
|
|
585
585
|
},
|
|
586
586
|
},
|
|
587
|
+
{
|
|
588
|
+
name: "design2code",
|
|
589
|
+
description: "【设计稿转代码】1:1 还原设计稿或将 HTML 转换为 Vue/React 项目页面,支持图片、描述、HTML 三种输入方式",
|
|
590
|
+
inputSchema: {
|
|
591
|
+
type: "object",
|
|
592
|
+
properties: {
|
|
593
|
+
input: {
|
|
594
|
+
type: "string",
|
|
595
|
+
description: "设计稿图片(URL 或 base64)、设计稿描述或 HTML 代码",
|
|
596
|
+
},
|
|
597
|
+
framework: {
|
|
598
|
+
type: "string",
|
|
599
|
+
description: "目标框架:vue, react(默认 vue)",
|
|
600
|
+
},
|
|
601
|
+
style_solution: {
|
|
602
|
+
type: "string",
|
|
603
|
+
description: "样式方案:tailwind, css-modules, styled-components(默认 tailwind)",
|
|
604
|
+
},
|
|
605
|
+
component_type: {
|
|
606
|
+
type: "string",
|
|
607
|
+
description: "组件类型:page, component(默认 page)",
|
|
608
|
+
},
|
|
609
|
+
},
|
|
610
|
+
required: ["input"],
|
|
611
|
+
},
|
|
612
|
+
},
|
|
587
613
|
// ========== 智能编排工具 ==========
|
|
588
614
|
{
|
|
589
615
|
name: "start_feature",
|
|
@@ -813,6 +839,8 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
813
839
|
return await estimate(args);
|
|
814
840
|
case "gen_mock":
|
|
815
841
|
return await genMock(args);
|
|
842
|
+
case "design2code":
|
|
843
|
+
return await design2code(args);
|
|
816
844
|
// 智能编排工具
|
|
817
845
|
case "start_feature":
|
|
818
846
|
return await startFeature(args);
|
|
@@ -908,6 +936,7 @@ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
|
908
936
|
fix_bug: "enabled",
|
|
909
937
|
estimate: "enabled",
|
|
910
938
|
gen_mock: "enabled",
|
|
939
|
+
design2code: "enabled",
|
|
911
940
|
// 智能编排
|
|
912
941
|
start_feature: "enabled",
|
|
913
942
|
start_bugfix: "enabled",
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* design2code - 设计稿转代码工具
|
|
3
|
+
*
|
|
4
|
+
* 功能:
|
|
5
|
+
* 1. 根据设计稿图片生成页面代码(支持图片 URL 或 base64)
|
|
6
|
+
* 2. 根据设计稿描述生成页面代码
|
|
7
|
+
* 3. 将 HTML 转换为 Vue/React 组件
|
|
8
|
+
* 4. 1:1 还原设计稿布局和样式
|
|
9
|
+
*/
|
|
10
|
+
export declare function design2code(args: any): Promise<{
|
|
11
|
+
content: ({
|
|
12
|
+
type: string;
|
|
13
|
+
text: string;
|
|
14
|
+
data?: undefined;
|
|
15
|
+
mimeType?: undefined;
|
|
16
|
+
} | {
|
|
17
|
+
type: string;
|
|
18
|
+
data: any;
|
|
19
|
+
mimeType: any;
|
|
20
|
+
text?: undefined;
|
|
21
|
+
})[];
|
|
22
|
+
isError?: undefined;
|
|
23
|
+
} | {
|
|
24
|
+
content: {
|
|
25
|
+
type: string;
|
|
26
|
+
text: string;
|
|
27
|
+
}[];
|
|
28
|
+
isError: boolean;
|
|
29
|
+
}>;
|
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* design2code - 设计稿转代码工具
|
|
3
|
+
*
|
|
4
|
+
* 功能:
|
|
5
|
+
* 1. 根据设计稿图片生成页面代码(支持图片 URL 或 base64)
|
|
6
|
+
* 2. 根据设计稿描述生成页面代码
|
|
7
|
+
* 3. 将 HTML 转换为 Vue/React 组件
|
|
8
|
+
* 4. 1:1 还原设计稿布局和样式
|
|
9
|
+
*/
|
|
10
|
+
const PROMPT_TEMPLATE = `# 🎨 设计稿转代码指南
|
|
11
|
+
|
|
12
|
+
## 📋 任务信息
|
|
13
|
+
|
|
14
|
+
{task_info}
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 🎯 转换目标
|
|
19
|
+
|
|
20
|
+
**目标框架**: {framework}
|
|
21
|
+
**样式方案**: {style_solution}
|
|
22
|
+
**组件类型**: {component_type}
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 📐 设计还原要求
|
|
27
|
+
|
|
28
|
+
### 1. 布局还原(Layout)
|
|
29
|
+
- ✅ 使用 Flexbox/Grid 实现响应式布局
|
|
30
|
+
- ✅ 严格按照设计稿的间距、对齐方式
|
|
31
|
+
- ✅ 保持元素的相对位置和层级关系
|
|
32
|
+
- ✅ 考虑不同屏幕尺寸的适配
|
|
33
|
+
|
|
34
|
+
### 2. 样式还原(Styling)
|
|
35
|
+
- ✅ 精确还原颜色值(使用设计稿中的色值)
|
|
36
|
+
- ✅ 还原字体大小、行高、字重
|
|
37
|
+
- ✅ 还原圆角、阴影、边框等细节
|
|
38
|
+
- ✅ 还原动画和过渡效果
|
|
39
|
+
|
|
40
|
+
### 3. 交互还原(Interaction)
|
|
41
|
+
- ✅ 实现 hover、active、focus 等状态
|
|
42
|
+
- ✅ 添加点击、滚动等交互效果
|
|
43
|
+
- ✅ 实现表单验证和反馈
|
|
44
|
+
- ✅ 添加加载状态和错误处理
|
|
45
|
+
|
|
46
|
+
### 4. 响应式设计(Responsive)
|
|
47
|
+
- ✅ 移动端适配(< 768px)
|
|
48
|
+
- ✅ 平板适配(768px - 1024px)
|
|
49
|
+
- ✅ 桌面端适配(> 1024px)
|
|
50
|
+
- ✅ 使用媒体查询或响应式单位
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 🛠️ 技术实现
|
|
55
|
+
|
|
56
|
+
### React 实现要点
|
|
57
|
+
\`\`\`typescript
|
|
58
|
+
// 1. 使用 TypeScript 定义 Props
|
|
59
|
+
interface ComponentProps {
|
|
60
|
+
// 定义属性类型
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// 2. 使用 Hooks 管理状态
|
|
64
|
+
const [state, setState] = useState()
|
|
65
|
+
|
|
66
|
+
// 3. 使用 CSS Modules 或 Tailwind CSS
|
|
67
|
+
import styles from './Component.module.css'
|
|
68
|
+
|
|
69
|
+
// 4. 组件拆分原则
|
|
70
|
+
// - 单一职责
|
|
71
|
+
// - 可复用性
|
|
72
|
+
// - 性能优化(memo, useMemo, useCallback)
|
|
73
|
+
\`\`\`
|
|
74
|
+
|
|
75
|
+
### Vue 3 实现要点
|
|
76
|
+
\`\`\`vue
|
|
77
|
+
<script setup lang="ts">
|
|
78
|
+
// 1. 使用 Composition API
|
|
79
|
+
import { ref, computed, onMounted } from 'vue'
|
|
80
|
+
|
|
81
|
+
// 2. 定义 Props 和 Emits
|
|
82
|
+
interface Props {
|
|
83
|
+
// 定义属性类型
|
|
84
|
+
}
|
|
85
|
+
const props = defineProps<Props>()
|
|
86
|
+
const emit = defineEmits<{
|
|
87
|
+
// 定义事件类型
|
|
88
|
+
}>()
|
|
89
|
+
|
|
90
|
+
// 3. 响应式状态管理
|
|
91
|
+
const state = ref()
|
|
92
|
+
|
|
93
|
+
// 4. 生命周期钩子
|
|
94
|
+
onMounted(() => {
|
|
95
|
+
// 初始化逻辑
|
|
96
|
+
})
|
|
97
|
+
</script>
|
|
98
|
+
|
|
99
|
+
<template>
|
|
100
|
+
<!-- 模板内容 -->
|
|
101
|
+
</template>
|
|
102
|
+
|
|
103
|
+
<style scoped>
|
|
104
|
+
/* 样式内容 */
|
|
105
|
+
</style>
|
|
106
|
+
\`\`\`
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 🎨 样式方案选择
|
|
111
|
+
|
|
112
|
+
### Tailwind CSS(推荐)
|
|
113
|
+
\`\`\`jsx
|
|
114
|
+
<div className="flex items-center justify-between p-4 bg-white rounded-lg shadow-md">
|
|
115
|
+
<h2 className="text-xl font-bold text-gray-900">标题</h2>
|
|
116
|
+
<button className="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600">
|
|
117
|
+
按钮
|
|
118
|
+
</button>
|
|
119
|
+
</div>
|
|
120
|
+
\`\`\`
|
|
121
|
+
|
|
122
|
+
### CSS Modules
|
|
123
|
+
\`\`\`css
|
|
124
|
+
.container {
|
|
125
|
+
display: flex;
|
|
126
|
+
align-items: center;
|
|
127
|
+
justify-content: space-between;
|
|
128
|
+
padding: 1rem;
|
|
129
|
+
background: white;
|
|
130
|
+
border-radius: 0.5rem;
|
|
131
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
132
|
+
}
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
### Styled Components
|
|
136
|
+
\`\`\`typescript
|
|
137
|
+
const Container = styled.div\`
|
|
138
|
+
display: flex;
|
|
139
|
+
align-items: center;
|
|
140
|
+
justify-content: space-between;
|
|
141
|
+
padding: 1rem;
|
|
142
|
+
background: white;
|
|
143
|
+
border-radius: 0.5rem;
|
|
144
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
145
|
+
\`;
|
|
146
|
+
\`\`\`
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 📦 组件结构
|
|
151
|
+
|
|
152
|
+
### 页面级组件(Page Component)
|
|
153
|
+
\`\`\`
|
|
154
|
+
src/pages/
|
|
155
|
+
├── HomePage/
|
|
156
|
+
│ ├── index.tsx # 页面主文件
|
|
157
|
+
│ ├── components/ # 页面专用组件
|
|
158
|
+
│ │ ├── Header.tsx
|
|
159
|
+
│ │ ├── Hero.tsx
|
|
160
|
+
│ │ └── Footer.tsx
|
|
161
|
+
│ ├── hooks/ # 页面专用 Hooks
|
|
162
|
+
│ │ └── usePageData.ts
|
|
163
|
+
│ ├── types.ts # 类型定义
|
|
164
|
+
│ └── styles.module.css # 样式文件
|
|
165
|
+
\`\`\`
|
|
166
|
+
|
|
167
|
+
### 通用组件(Common Component)
|
|
168
|
+
\`\`\`
|
|
169
|
+
src/components/
|
|
170
|
+
├── Button/
|
|
171
|
+
│ ├── index.tsx
|
|
172
|
+
│ ├── Button.test.tsx
|
|
173
|
+
│ └── styles.module.css
|
|
174
|
+
├── Input/
|
|
175
|
+
└── Card/
|
|
176
|
+
\`\`\`
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## ✅ 代码质量要求
|
|
181
|
+
|
|
182
|
+
### 1. TypeScript 类型安全
|
|
183
|
+
- ✅ 所有 Props 都有类型定义
|
|
184
|
+
- ✅ 事件处理函数有类型注解
|
|
185
|
+
- ✅ API 响应有类型定义
|
|
186
|
+
|
|
187
|
+
### 2. 可访问性(A11y)
|
|
188
|
+
- ✅ 使用语义化 HTML 标签
|
|
189
|
+
- ✅ 添加 ARIA 属性
|
|
190
|
+
- ✅ 键盘导航支持
|
|
191
|
+
- ✅ 屏幕阅读器友好
|
|
192
|
+
|
|
193
|
+
### 3. 性能优化
|
|
194
|
+
- ✅ 图片懒加载
|
|
195
|
+
- ✅ 代码分割
|
|
196
|
+
- ✅ 避免不必要的重渲染
|
|
197
|
+
- ✅ 使用虚拟滚动(长列表)
|
|
198
|
+
|
|
199
|
+
### 4. 代码规范
|
|
200
|
+
- ✅ 遵循 ESLint 规则
|
|
201
|
+
- ✅ 统一的命名规范
|
|
202
|
+
- ✅ 添加必要的注释
|
|
203
|
+
- ✅ 组件拆分合理
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 📝 输出内容
|
|
208
|
+
|
|
209
|
+
请生成以下内容:
|
|
210
|
+
|
|
211
|
+
### 1. 组件代码
|
|
212
|
+
- 完整的组件实现
|
|
213
|
+
- TypeScript 类型定义
|
|
214
|
+
- 样式文件
|
|
215
|
+
|
|
216
|
+
### 2. 使用示例
|
|
217
|
+
- 组件的使用方法
|
|
218
|
+
- Props 说明
|
|
219
|
+
- 常见场景示例
|
|
220
|
+
|
|
221
|
+
### 3. 注意事项
|
|
222
|
+
- 浏览器兼容性
|
|
223
|
+
- 性能优化建议
|
|
224
|
+
- 可能的改进方向
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 🎯 开始转换
|
|
229
|
+
|
|
230
|
+
{conversion_guide}
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
*工具: MCP Probe Kit - design2code*
|
|
235
|
+
`;
|
|
236
|
+
export async function design2code(args) {
|
|
237
|
+
try {
|
|
238
|
+
const input = args?.input;
|
|
239
|
+
const framework = args?.framework || "vue";
|
|
240
|
+
const styleSolution = args?.style_solution || "tailwind";
|
|
241
|
+
const componentType = args?.component_type || "page";
|
|
242
|
+
if (!input) {
|
|
243
|
+
throw new Error("缺少必填参数: input(设计稿图片 URL/base64、设计稿描述或 HTML 代码)");
|
|
244
|
+
}
|
|
245
|
+
// 判断输入类型
|
|
246
|
+
const isImageUrl = /^https?:\/\/.+\.(jpg|jpeg|png|gif|webp|svg)/i.test(input.trim());
|
|
247
|
+
const isBase64Image = /^data:image\/(png|jpeg|jpg|gif|webp|svg);base64,/.test(input.trim());
|
|
248
|
+
const isHTML = input.trim().startsWith("<");
|
|
249
|
+
let taskInfo = "";
|
|
250
|
+
let conversionGuide = "";
|
|
251
|
+
if (isImageUrl || isBase64Image) {
|
|
252
|
+
// 图片转换模式
|
|
253
|
+
const imageType = isImageUrl ? "图片 URL" : "Base64 图片";
|
|
254
|
+
taskInfo = `**输入类型**: 设计稿图片\n**图片来源**: ${imageType}\n${isImageUrl ? `**图片地址**: ${input}` : "**图片**: [Base64 编码图片]"}`;
|
|
255
|
+
conversionGuide = `### 设计稿图片分析步骤
|
|
256
|
+
|
|
257
|
+
1. **视觉分析**
|
|
258
|
+
- 仔细观察设计稿的整体布局
|
|
259
|
+
- 识别页面的主要区域(导航栏、内容区、侧边栏、底部等)
|
|
260
|
+
- 分析颜色方案、字体、间距等设计规范
|
|
261
|
+
- 识别重复使用的设计模式和组件
|
|
262
|
+
|
|
263
|
+
2. **元素识别**
|
|
264
|
+
- 标题、段落、按钮、输入框等基础元素
|
|
265
|
+
- 卡片、列表、表格等容器组件
|
|
266
|
+
- 图标、图片、背景等视觉元素
|
|
267
|
+
- 导航菜单、下拉框、弹窗等交互组件
|
|
268
|
+
|
|
269
|
+
3. **布局还原**
|
|
270
|
+
- 使用 Flexbox/Grid 实现主体布局
|
|
271
|
+
- 精确测量元素间距和尺寸
|
|
272
|
+
- 实现响应式断点设计
|
|
273
|
+
- 保持视觉层次和对齐关系
|
|
274
|
+
|
|
275
|
+
4. **样式还原**
|
|
276
|
+
- 提取颜色值(主色、辅助色、文字色、背景色)
|
|
277
|
+
- 还原字体大小、行高、字重
|
|
278
|
+
- 实现圆角、阴影、边框等细节
|
|
279
|
+
- 添加 hover、active 等交互状态
|
|
280
|
+
|
|
281
|
+
5. **组件化开发**
|
|
282
|
+
- 将设计稿拆分为可复用组件
|
|
283
|
+
- 使用 ${framework === "vue" ? "Vue 3 Composition API" : "React Hooks"}
|
|
284
|
+
- 添加 TypeScript 类型定义
|
|
285
|
+
- 实现组件间的数据传递
|
|
286
|
+
|
|
287
|
+
6. **交互实现**
|
|
288
|
+
- 添加点击、滚动等事件处理
|
|
289
|
+
- 实现表单验证和提交
|
|
290
|
+
- 添加加载状态和错误处理
|
|
291
|
+
- 实现动画和过渡效果
|
|
292
|
+
|
|
293
|
+
7. **响应式适配**
|
|
294
|
+
- 移动端布局调整(< 768px)
|
|
295
|
+
- 平板端优化(768px - 1024px)
|
|
296
|
+
- 桌面端完整展示(> 1024px)
|
|
297
|
+
- 使用媒体查询或响应式单位
|
|
298
|
+
|
|
299
|
+
**注意事项**:
|
|
300
|
+
- 如果图片中有文字,请尽量识别并使用真实文本而非图片
|
|
301
|
+
- 图标优先使用 SVG 或图标库(如 Heroicons、Lucide)
|
|
302
|
+
- 图片资源使用占位符,并注明实际使用时需要替换
|
|
303
|
+
- 保持代码的可维护性和可扩展性`;
|
|
304
|
+
}
|
|
305
|
+
else if (isHTML) {
|
|
306
|
+
// HTML 转换模式
|
|
307
|
+
taskInfo = `**输入类型**: HTML 代码转换\n**源代码**:\n\`\`\`html\n${input}\n\`\`\``;
|
|
308
|
+
conversionGuide = `### HTML 转换步骤
|
|
309
|
+
|
|
310
|
+
1. **分析 HTML 结构**
|
|
311
|
+
- 识别语义化标签
|
|
312
|
+
- 提取 class 和 id
|
|
313
|
+
- 分析嵌套层级
|
|
314
|
+
|
|
315
|
+
2. **转换为组件**
|
|
316
|
+
- 将 HTML 转换为 ${framework === "vue" ? "Vue 模板" : "JSX"}
|
|
317
|
+
- 提取可复用的子组件
|
|
318
|
+
- 添加 TypeScript 类型
|
|
319
|
+
|
|
320
|
+
3. **样式迁移**
|
|
321
|
+
- 将内联样式转换为 ${styleSolution}
|
|
322
|
+
- 提取公共样式变量
|
|
323
|
+
- 优化样式结构
|
|
324
|
+
|
|
325
|
+
4. **添加交互逻辑**
|
|
326
|
+
- 识别需要状态管理的部分
|
|
327
|
+
- 添加事件处理
|
|
328
|
+
- 实现表单验证
|
|
329
|
+
|
|
330
|
+
5. **优化和完善**
|
|
331
|
+
- 添加响应式设计
|
|
332
|
+
- 优化性能
|
|
333
|
+
- 添加可访问性支持`;
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
// 设计稿描述模式
|
|
337
|
+
taskInfo = `**输入类型**: 设计稿描述\n**设计需求**:\n${input}`;
|
|
338
|
+
conversionGuide = `### 设计稿实现步骤
|
|
339
|
+
|
|
340
|
+
1. **理解设计需求**
|
|
341
|
+
- 分析页面布局结构
|
|
342
|
+
- 识别设计元素和组件
|
|
343
|
+
- 确定交互流程
|
|
344
|
+
|
|
345
|
+
2. **规划组件结构**
|
|
346
|
+
- 划分页面区域(Header、Main、Footer)
|
|
347
|
+
- 识别可复用组件
|
|
348
|
+
- 设计组件层级关系
|
|
349
|
+
|
|
350
|
+
3. **实现布局**
|
|
351
|
+
- 使用 Flexbox/Grid 布局
|
|
352
|
+
- 实现响应式设计
|
|
353
|
+
- 确保跨浏览器兼容
|
|
354
|
+
|
|
355
|
+
4. **实现样式**
|
|
356
|
+
- 还原设计稿的视觉效果
|
|
357
|
+
- 使用 ${styleSolution} 编写样式
|
|
358
|
+
- 添加动画和过渡效果
|
|
359
|
+
|
|
360
|
+
5. **实现交互**
|
|
361
|
+
- 添加状态管理
|
|
362
|
+
- 实现用户交互
|
|
363
|
+
- 添加数据获取逻辑
|
|
364
|
+
|
|
365
|
+
6. **测试和优化**
|
|
366
|
+
- 测试不同屏幕尺寸
|
|
367
|
+
- 优化性能
|
|
368
|
+
- 确保可访问性`;
|
|
369
|
+
}
|
|
370
|
+
const guide = PROMPT_TEMPLATE
|
|
371
|
+
.replace(/{task_info}/g, taskInfo)
|
|
372
|
+
.replace(/{framework}/g, framework === "vue" ? "Vue 3 + TypeScript" : "React + TypeScript")
|
|
373
|
+
.replace(/{style_solution}/g, styleSolution === "tailwind" ? "Tailwind CSS" : styleSolution === "css-modules" ? "CSS Modules" : "Styled Components")
|
|
374
|
+
.replace(/{component_type}/g, componentType === "page" ? "页面组件" : "通用组件")
|
|
375
|
+
.replace(/{conversion_guide}/g, conversionGuide);
|
|
376
|
+
// 如果是图片输入,添加图片内容
|
|
377
|
+
if (isImageUrl || isBase64Image) {
|
|
378
|
+
return {
|
|
379
|
+
content: [
|
|
380
|
+
{ type: "text", text: guide },
|
|
381
|
+
{
|
|
382
|
+
type: "image",
|
|
383
|
+
data: isBase64Image ? input.split(',')[1] : input,
|
|
384
|
+
mimeType: isBase64Image ? input.match(/data:image\/([^;]+);/)?.[1] || "png" : "image/png"
|
|
385
|
+
}
|
|
386
|
+
],
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
return {
|
|
390
|
+
content: [{ type: "text", text: guide }],
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
catch (error) {
|
|
394
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
395
|
+
return {
|
|
396
|
+
content: [{ type: "text", text: `❌ 错误: ${errorMsg}` }],
|
|
397
|
+
isError: true,
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
}
|
package/build/tools/index.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export { securityScan } from "./security_scan.js";
|
|
|
28
28
|
export { fixBug } from "./fix_bug.js";
|
|
29
29
|
export { estimate } from "./estimate.js";
|
|
30
30
|
export { genMock } from "./gen_mock.js";
|
|
31
|
+
export { design2code } from "./design2code.js";
|
|
31
32
|
export { startFeature } from "./start_feature.js";
|
|
32
33
|
export { startBugfix } from "./start_bugfix.js";
|
|
33
34
|
export { startReview } from "./start_review.js";
|
package/build/tools/index.js
CHANGED
|
@@ -28,6 +28,7 @@ export { securityScan } from "./security_scan.js";
|
|
|
28
28
|
export { fixBug } from "./fix_bug.js";
|
|
29
29
|
export { estimate } from "./estimate.js";
|
|
30
30
|
export { genMock } from "./gen_mock.js";
|
|
31
|
+
export { design2code } from "./design2code.js";
|
|
31
32
|
// 智能编排工具
|
|
32
33
|
export { startFeature } from "./start_feature.js";
|
|
33
34
|
export { startBugfix } from "./start_bugfix.js";
|
package/docs/BEST_PRACTICES.md
CHANGED
package/docs/HOW_TO_TRIGGER.html
CHANGED
|
@@ -30,7 +30,7 @@ table tr:nth-child(even) { background-color: #f9f9f9; }
|
|
|
30
30
|
<body>
|
|
31
31
|
<h1>MCP 工具触发快速手册</h1>
|
|
32
32
|
|
|
33
|
-
<h2>🔑 基础工具(
|
|
33
|
+
<h2>🔑 基础工具(31个)</h2>
|
|
34
34
|
|
|
35
35
|
<h3>代码质量(8个)</h3>
|
|
36
36
|
<p><strong>detect_shell</strong> <span class="keyword">套壳</span><span class="keyword">检测</span> | "detect_shell"</p>
|
|
@@ -42,7 +42,7 @@ table tr:nth-child(even) { background-color: #f9f9f9; }
|
|
|
42
42
|
<p><strong>perf</strong> <span class="keyword">性能</span><span class="keyword">优化</span><span class="keyword">慢</span><span class="keyword">瓶颈</span> | "分析性能" "有没有性能瓶颈"</p>
|
|
43
43
|
<p><strong>fix</strong> <span class="keyword">修复</span><span class="keyword">fix</span><span class="keyword">lint错误</span> | "修复lint错误" "自动修复格式"</p>
|
|
44
44
|
|
|
45
|
-
<h3>开发效率(
|
|
45
|
+
<h3>开发效率(15个)</h3>
|
|
46
46
|
<p><strong>gencommit</strong> <span class="keyword">commit</span><span class="keyword">提交</span> | "生成commit信息" "帮我写提交信息"</p>
|
|
47
47
|
<p><strong>genapi</strong> <span class="keyword">API文档</span><span class="keyword">文档</span> | "生成API文档" "为这个方法添加文档"</p>
|
|
48
48
|
<p><strong>gendoc</strong> <span class="keyword">注释</span><span class="keyword">JSDoc</span> | "添加注释" "生成JSDoc"</p>
|
|
@@ -51,6 +51,7 @@ table tr:nth-child(even) { background-color: #f9f9f9; }
|
|
|
51
51
|
<p><strong>gensql</strong> <span class="keyword">SQL</span><span class="keyword">查询</span><span class="keyword">数据库</span> | "生成SQL查询" "写个查询语句"</p>
|
|
52
52
|
<p><strong>genui</strong> <span class="keyword">组件</span><span class="keyword">UI</span><span class="keyword">界面</span> | "生成Button组件" "创建登录表单"</p>
|
|
53
53
|
<p><strong>gen_mock</strong> <span class="keyword">Mock</span><span class="keyword">模拟数据</span> | "生成Mock数据" "创建测试数据"</p>
|
|
54
|
+
<p><strong>design2code</strong> <span class="keyword">设计稿</span><span class="keyword">图片转代码</span><span class="keyword">HTML转Vue</span> | "把设计稿转成Vue" "图片转代码"</p>
|
|
54
55
|
<p><strong>explain</strong> <span class="keyword">解释</span><span class="keyword">说明</span><span class="keyword">理解</span> | "解释这段代码" "这个方法是干什么的"</p>
|
|
55
56
|
<p><strong>convert</strong> <span class="keyword">转换</span><span class="keyword">改成</span><span class="keyword">迁移</span> | "转成TypeScript" "Class改Hooks"</p>
|
|
56
57
|
<p><strong>css_order</strong> <span class="keyword">CSS顺序</span><span class="keyword">CSS规范</span> | "css_order"</p>
|
|
@@ -122,6 +123,7 @@ table tr:nth-child(even) { background-color: #f9f9f9; }
|
|
|
122
123
|
<tr><td>SQL生成</td><td>SQL、查询、数据库</td><td><code>gensql</code></td></tr>
|
|
123
124
|
<tr><td>UI组件</td><td>组件、UI、界面</td><td><code>genui</code></td></tr>
|
|
124
125
|
<tr><td>Mock数据</td><td>Mock、模拟数据</td><td><code>gen_mock</code></td></tr>
|
|
126
|
+
<tr><td>设计稿转代码</td><td>设计稿、图片转代码、HTML转Vue</td><td><code>design2code</code></td></tr>
|
|
125
127
|
<tr><td>代码转换</td><td>转换、改成、迁移</td><td><code>convert</code></td></tr>
|
|
126
128
|
<tr><td>CSS规范</td><td>CSS顺序</td><td><code>css_order</code></td></tr>
|
|
127
129
|
<tr><td>README</td><td>README、项目文档</td><td><code>genreadme</code></td></tr>
|
package/docs/HOW_TO_TRIGGER.md
CHANGED
|
@@ -346,6 +346,27 @@ AI 需要理解你的意图才能调用正确的工具。使用明确的关键
|
|
|
346
346
|
|
|
347
347
|
---
|
|
348
348
|
|
|
349
|
+
### 1️⃣7️⃣ 设计稿转代码 → `design2code`
|
|
350
|
+
|
|
351
|
+
**触发关键词**:设计稿、图片转代码、HTML转Vue、HTML转React、还原设计
|
|
352
|
+
|
|
353
|
+
**✅ 推荐说法**
|
|
354
|
+
```
|
|
355
|
+
"把这个设计稿转成 Vue 代码"
|
|
356
|
+
"design2code https://example.com/design.png"
|
|
357
|
+
"将这个 HTML 转换为 React 组件"
|
|
358
|
+
"还原这个设计稿"
|
|
359
|
+
"图片转代码"
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**❌ 不推荐说法**
|
|
363
|
+
```
|
|
364
|
+
"做个页面"(没说基于什么)
|
|
365
|
+
"转一下"(没说转什么)
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
---
|
|
369
|
+
|
|
349
370
|
---
|
|
350
371
|
|
|
351
372
|
## 🚀 智能编排工具触发
|
|
@@ -356,7 +377,7 @@ AI 需要理解你的意图才能调用正确的工具。使用明确的关键
|
|
|
356
377
|
|
|
357
378
|
#### 🎯 开发流程类
|
|
358
379
|
|
|
359
|
-
|
|
380
|
+
####### 1️⃣7️⃣ 新功能开发 → `start_feature`
|
|
360
381
|
|
|
361
382
|
**触发关键词**:新功能、开发功能、添加功能、实现功能、feature
|
|
362
383
|
|
|
@@ -822,6 +843,7 @@ AI: [自动调用 start_review 编排]
|
|
|
822
843
|
| 提交代码 | commit、提交信息 | `gencommit` |
|
|
823
844
|
| 代码转换 | 转换、改成、迁移 | `convert` |
|
|
824
845
|
| Mock数据 | Mock、模拟数据 | `gen_mock` |
|
|
846
|
+
| 设计稿转代码 | 设计稿、图片转代码、HTML转Vue | `design2code` |
|
|
825
847
|
| Bug修复流程 | 修复Bug、完整修复 | `fix_bug` |
|
|
826
848
|
| 工作量估算 | 估算、工作量、需要多久 | `estimate` |
|
|
827
849
|
|
|
@@ -908,6 +930,14 @@ AI: [自动调用 start_review 编排]
|
|
|
908
930
|
"重构这个方法,提高可读性"
|
|
909
931
|
```
|
|
910
932
|
|
|
933
|
+
### 设计稿转代码
|
|
934
|
+
```
|
|
935
|
+
"design2code https://example.com/design.png"
|
|
936
|
+
"把这个设计稿转成 Vue 代码"
|
|
937
|
+
"将这个 HTML 转换为 React 组件"
|
|
938
|
+
"design2code" 然后提供设计稿描述
|
|
939
|
+
```
|
|
940
|
+
|
|
911
941
|
### 开发新功能
|
|
912
942
|
```
|
|
913
943
|
"start_feature user-profile '用户个人资料管理'"
|
|
File without changes
|
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-probe-kit",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "AI Development Enhancement Toolkit - MCP Server with
|
|
3
|
+
"version": "1.7.0",
|
|
4
|
+
"description": "AI Development Enhancement Toolkit - MCP Server with 39 practical tools (31 basic + 8 orchestration) for code quality, development efficiency, and project management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/index.js",
|
|
7
7
|
"bin": {
|