tt-design-mcp 1.0.3 → 1.0.4
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 +87 -16
- package/package.json +1 -1
- package/src/server.mjs +2 -2
- package/src/tools/list-components.mjs +3 -3
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## 功能概述
|
|
6
6
|
|
|
7
|
-
- 列出基础组件
|
|
7
|
+
- 列出基础组件
|
|
8
8
|
- 查询组件导出位置与推荐导入方式
|
|
9
9
|
- 查询组件 API 元信息(props、默认值、propTypes、forwardRef、memo)
|
|
10
10
|
- 查询组件样式元信息(类名、CSS 变量、主题引用)
|
|
@@ -15,31 +15,47 @@
|
|
|
15
15
|
|
|
16
16
|
## 前置条件
|
|
17
17
|
|
|
18
|
-
1. 本机已安装 Node.js
|
|
18
|
+
1. 本机已安装 Node.js 18+
|
|
19
19
|
2. 当前项目已安装 `tt-design`
|
|
20
|
-
3. 当前项目可安装开发依赖
|
|
21
20
|
|
|
22
21
|
## 快速接入
|
|
23
22
|
|
|
24
|
-
###
|
|
23
|
+
### 推荐原则
|
|
24
|
+
|
|
25
|
+
- 业务项目只安装 `tt-design`
|
|
26
|
+
- `tt-design-mcp` 作为本地开发工具使用,不写入业务项目 `package.json`
|
|
27
|
+
- 推荐通过 `npx`、全局安装或独立工具目录运行 `tt-design-mcp`
|
|
28
|
+
|
|
29
|
+
不推荐在业务项目中执行:
|
|
25
30
|
|
|
26
31
|
```bash
|
|
27
|
-
npm install tt-design
|
|
28
32
|
npm install -D tt-design-mcp
|
|
29
33
|
```
|
|
30
34
|
|
|
35
|
+
原因:
|
|
36
|
+
|
|
37
|
+
- `tt-design-mcp` 依赖 Node.js 18+
|
|
38
|
+
- 一些 Jenkins / CI 环境会安装 `devDependencies`
|
|
39
|
+
- 如果 CI 仍使用 Node.js 14,安装 `tt-design-mcp` 时可能失败
|
|
40
|
+
|
|
41
|
+
### 1. 安装业务依赖
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm install tt-design
|
|
45
|
+
```
|
|
46
|
+
|
|
31
47
|
### 2. 配置 MCP Client
|
|
32
48
|
|
|
33
49
|
如果使用 Claude Code,推荐在已安装 `tt-design` 的项目根目录执行:
|
|
34
50
|
|
|
35
51
|
```bash
|
|
36
|
-
claude mcp add --scope project --transport stdio tt-design -- npx tt-design-mcp
|
|
52
|
+
claude mcp add --scope project --transport stdio tt-design -- npx -y tt-design-mcp
|
|
37
53
|
```
|
|
38
54
|
|
|
39
55
|
如果在 Windows 上使用 Claude Code,请加上 `cmd /c` 包装:
|
|
40
56
|
|
|
41
57
|
```bash
|
|
42
|
-
claude mcp add --scope project --transport stdio tt-design -- cmd /c npx tt-design-mcp
|
|
58
|
+
claude mcp add --scope project --transport stdio tt-design -- cmd /c "npx -y tt-design-mcp"
|
|
43
59
|
```
|
|
44
60
|
|
|
45
61
|
如果需要手动配置,也可以在 Claude Code 等 MCP Client 的配置中添加:
|
|
@@ -65,20 +81,73 @@ claude mcp add --scope project --transport stdio tt-design -- cmd /c npx tt-desi
|
|
|
65
81
|
|
|
66
82
|
能正常返回结果即表示接入成功。
|
|
67
83
|
|
|
84
|
+
## 本地使用规范
|
|
85
|
+
|
|
86
|
+
推荐团队统一采用下面这套流程:
|
|
87
|
+
|
|
88
|
+
1. 业务项目依赖里只保留 `tt-design`
|
|
89
|
+
2. 本地 MCP Client 统一用 `npx -y tt-design-mcp`
|
|
90
|
+
3. `tt-design-mcp` 不进入业务项目的 `dependencies` 或 `devDependencies`
|
|
91
|
+
4. 本地运行 MCP 时使用 Node.js 18+,不影响业务项目现有构建 Node 版本
|
|
92
|
+
|
|
93
|
+
这样可以同时满足:
|
|
94
|
+
|
|
95
|
+
- 开发者本地可正常使用 MCP
|
|
96
|
+
- Jenkins / CI 不会因为安装 `tt-design-mcp` 失败
|
|
97
|
+
- 不污染业务项目锁文件和依赖树
|
|
98
|
+
|
|
99
|
+
## 其他本地接入方案
|
|
100
|
+
|
|
101
|
+
### 方案二:全局安装
|
|
102
|
+
|
|
103
|
+
如果团队成员经常使用,可以在本机全局安装:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
npm install -g tt-design-mcp
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
然后在 MCP Client 中配置:
|
|
110
|
+
|
|
111
|
+
```json
|
|
112
|
+
{
|
|
113
|
+
"mcpServers": {
|
|
114
|
+
"tt-design": {
|
|
115
|
+
"command": "tt-design-mcp",
|
|
116
|
+
"args": []
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### 方案三:独立工具目录
|
|
123
|
+
|
|
124
|
+
如果希望进一步与业务项目隔离,可以在本机单独创建工具目录:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
mkdir -p ~/dev-tools/tt-design-mcp
|
|
128
|
+
cd ~/dev-tools/tt-design-mcp
|
|
129
|
+
npm init -y
|
|
130
|
+
npm install tt-design-mcp
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
然后让 MCP Client 指向该目录下的可执行文件或通过该目录内的 `npx` 启动。
|
|
134
|
+
|
|
68
135
|
## 可用工具
|
|
69
136
|
|
|
70
137
|
### `list_components`
|
|
71
|
-
|
|
138
|
+
|
|
139
|
+
列出基础组件,支持关键字过滤。
|
|
72
140
|
|
|
73
141
|
```
|
|
74
142
|
输入参数:
|
|
75
|
-
category?: "basic"
|
|
143
|
+
category?: "basic" # 可选,仅支持基础组件
|
|
76
144
|
keyword?: string # 可选,按名称子串过滤
|
|
77
145
|
|
|
78
|
-
|
|
146
|
+
适用场景:查看当前有哪些基础组件,按名称筛选基础组件
|
|
79
147
|
```
|
|
80
148
|
|
|
81
149
|
### `find_component_exports`
|
|
150
|
+
|
|
82
151
|
查询组件导出位置和推荐导入方式。
|
|
83
152
|
|
|
84
153
|
```
|
|
@@ -89,6 +158,7 @@ claude mcp add --scope project --transport stdio tt-design -- cmd /c npx tt-desi
|
|
|
89
158
|
```
|
|
90
159
|
|
|
91
160
|
### `get_component_api`
|
|
161
|
+
|
|
92
162
|
查询组件 API 元信息。
|
|
93
163
|
|
|
94
164
|
```
|
|
@@ -99,6 +169,7 @@ claude mcp add --scope project --transport stdio tt-design -- cmd /c npx tt-desi
|
|
|
99
169
|
```
|
|
100
170
|
|
|
101
171
|
### `get_component_style`
|
|
172
|
+
|
|
102
173
|
查询组件样式元信息。
|
|
103
174
|
|
|
104
175
|
```
|
|
@@ -112,12 +183,12 @@ claude mcp add --scope project --transport stdio tt-design -- cmd /c npx tt-desi
|
|
|
112
183
|
|
|
113
184
|
常见错误及排查:
|
|
114
185
|
|
|
115
|
-
| 错误码
|
|
116
|
-
|
|
117
|
-
| `METADATA_LOAD_FAILED`
|
|
118
|
-
| `METADATA_FILE_INVALID`
|
|
119
|
-
| `COMPONENT_NOT_FOUND`
|
|
120
|
-
| `INVALID_COMPONENT_NAME` | 组件名格式无效
|
|
186
|
+
| 错误码 | 说明 | 排查建议 |
|
|
187
|
+
| ------------------------ | ----------------- | ------------------------------------- |
|
|
188
|
+
| `METADATA_LOAD_FAILED` | 未找到 `tt-design` 包 | 确认当前项目已安装 `tt-design` |
|
|
189
|
+
| `METADATA_FILE_INVALID` | 元数据文件损坏或格式不兼容 | 确认 `tt-design` 版本与 `tt-design-mcp` 兼容 |
|
|
190
|
+
| `COMPONENT_NOT_FOUND` | 组件不在元数据中 | 确认组件名大小写正确 |
|
|
191
|
+
| `INVALID_COMPONENT_NAME` | 组件名格式无效 | 组件名只能包含字母、数字、下划线、美元符 |
|
|
121
192
|
|
|
122
193
|
## 发布到 npm
|
|
123
194
|
|
package/package.json
CHANGED
package/src/server.mjs
CHANGED
|
@@ -81,9 +81,9 @@ export function createServer() {
|
|
|
81
81
|
server.registerTool(
|
|
82
82
|
'list_components',
|
|
83
83
|
{
|
|
84
|
-
description: 'List tt-design components with optional
|
|
84
|
+
description: 'List basic tt-design components with optional keyword filtering.',
|
|
85
85
|
inputSchema: {
|
|
86
|
-
category: z.enum(['basic'
|
|
86
|
+
category: z.enum(['basic']).optional(),
|
|
87
87
|
keyword: z.string().min(1).optional(),
|
|
88
88
|
},
|
|
89
89
|
outputSchema: envelopeOutputSchema,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ok, fail } from '../utils/result.mjs';
|
|
2
2
|
|
|
3
|
-
const VALID_CATEGORIES = new Set(['basic'
|
|
3
|
+
const VALID_CATEGORIES = new Set(['basic']);
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* List tt-design components with optional filters.
|
|
@@ -10,10 +10,10 @@ const VALID_CATEGORIES = new Set(['basic', 'business']);
|
|
|
10
10
|
*/
|
|
11
11
|
export function listComponents(meta, { category, keyword } = {}) {
|
|
12
12
|
if (category != null && !VALID_CATEGORIES.has(category)) {
|
|
13
|
-
return fail('INVALID_FILTER', 'category must be one of: basic
|
|
13
|
+
return fail('INVALID_FILTER', 'category must be one of: basic', { category });
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
let components = meta.components.components;
|
|
16
|
+
let components = meta.components.components.filter((component) => component.category === 'basic');
|
|
17
17
|
|
|
18
18
|
if (category) {
|
|
19
19
|
components = components.filter((component) => component.category === category);
|