@bimatrix-aud-platform/aud_mcp_server 1.1.77 → 1.1.78
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 +492 -492
- package/dist/resources/encrypted-commands.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,492 +1,492 @@
|
|
|
1
|
-
# @bimatrix-aud-platform/aud_mcp_server
|
|
2
|
-
|
|
3
|
-
i-AUD 플랫폼용 MCP(Model Context Protocol) Server입니다.
|
|
4
|
-
|
|
5
|
-
MTSD/design.json 검증·생성·보정, DB 쿼리 실행, 보고서 저장/동기화, MX-GRID 검증, BoxStyle 관리, WorkFlow 모듈 조회 등
|
|
6
|
-
Claude AI가 i-AUD 보고서를 정확하게 개발할 수 있도록 **26개의 도구**를 제공합니다.
|
|
7
|
-
|
|
8
|
-
## 설치 및 등록
|
|
9
|
-
|
|
10
|
-
### 방법 1: npx로 바로 사용 (권장)
|
|
11
|
-
|
|
12
|
-
별도 설치 없이 MCP 설정에 다음을 추가합니다.
|
|
13
|
-
|
|
14
|
-
**Claude Code 프로젝트 설정** (`.mcp.json`):
|
|
15
|
-
|
|
16
|
-
```json
|
|
17
|
-
{
|
|
18
|
-
"mcpServers": {
|
|
19
|
-
"aud_mcp_server": {
|
|
20
|
-
"command": "npx",
|
|
21
|
-
"args": ["-y", "@bimatrix-aud-platform/aud_mcp_server"]
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
**Claude Desktop 전역 설정** (`%APPDATA%\Claude\claude_desktop_config.json`):
|
|
28
|
-
|
|
29
|
-
```json
|
|
30
|
-
{
|
|
31
|
-
"mcpServers": {
|
|
32
|
-
"aud_mcp_server": {
|
|
33
|
-
"command": "npx",
|
|
34
|
-
"args": ["-y", "@bimatrix-aud-platform/aud_mcp_server"]
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
### 방법 2: 글로벌 설치 후 사용
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
npm install -g @bimatrix-aud-platform/aud_mcp_server
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
MCP 설정:
|
|
47
|
-
|
|
48
|
-
```json
|
|
49
|
-
{
|
|
50
|
-
"mcpServers": {
|
|
51
|
-
"aud_mcp_server": {
|
|
52
|
-
"command": "aud_mcp_server"
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### 방법 3: 로컬 경로 직접 지정
|
|
59
|
-
|
|
60
|
-
```json
|
|
61
|
-
{
|
|
62
|
-
"mcpServers": {
|
|
63
|
-
"aud_mcp_server": {
|
|
64
|
-
"command": "node",
|
|
65
|
-
"args": ["C:/source/aud_report_develop/aud_mcp_server/dist/index.js"]
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## 제공 도구 (26개)
|
|
72
|
-
|
|
73
|
-
### MTSD 검증 도구
|
|
74
|
-
|
|
75
|
-
#### validate_mtsd
|
|
76
|
-
MTSD 또는 `.design.json` 문서 전체를 스키마 검증합니다. `format='design'`이면 간소화된 스키마(기본값 생략 허용)로 검증합니다.
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
입력: { document: <JSON 문자열 또는 객체>, format?: "mtsd" | "design" }
|
|
80
|
-
출력: { valid: boolean, errors?: [...] }
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
#### validate_part
|
|
84
|
-
MTSD 또는 `.design.json` 문서의 특정 부분만 검증합니다. 점진적 문서 생성 시 유용합니다.
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
입력: { partName: "Form", data: <JSON>, format?: "mtsd" | "design" }
|
|
88
|
-
출력: { valid: boolean, errors?: [...] }
|
|
89
|
-
|
|
90
|
-
partName 목록 (Display):
|
|
91
|
-
LabelElement, ButtonElement, ImageElement
|
|
92
|
-
partName 목록 (Input):
|
|
93
|
-
TextBoxElement, MaskTextBoxElement, NumberBoxElement, RichTextBoxElement,
|
|
94
|
-
ComboBoxElement, MultiComboBoxElement, PickListElement,
|
|
95
|
-
CheckBoxElement, RadioButtonElement, ColorSelectorElement, SliderElement,
|
|
96
|
-
CalendarElement, FileUploadButtonElement
|
|
97
|
-
partName 목록 (Grid):
|
|
98
|
-
DataGridElement, TreeGridElement, OlapGridElement, iGridElement
|
|
99
|
-
partName 목록 (Chart/Container):
|
|
100
|
-
ChartElement, GroupElement, TabElement, TableLayoutElement,
|
|
101
|
-
UserComponentElement, WebContainerElement
|
|
102
|
-
partName 목록 (공통):
|
|
103
|
-
ReportInfo, DataSource, DataSources, Form, Element,
|
|
104
|
-
Variable, Module, ExecutionPlan, ServerScript, MetaDataSources
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### MTSD 스키마 조회 도구
|
|
108
|
-
|
|
109
|
-
#### get_schema_info
|
|
110
|
-
특정 타입의 스키마 정보(필수/선택 속성, 속성별 설명)를 반환합니다.
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
입력: { typeName: "Form" }
|
|
114
|
-
출력: { required: [...], optional: [...], properties: {...} }
|
|
115
|
-
|
|
116
|
-
typeName 목록 (공통):
|
|
117
|
-
ReportInfo, DataSource, DataSources, Form, Element,
|
|
118
|
-
Position, Style, Font, Border, Background
|
|
119
|
-
typeName 목록 (Element 타입):
|
|
120
|
-
LabelElement, ButtonElement, ImageElement, TextBoxElement, MaskTextBoxElement,
|
|
121
|
-
NumberBoxElement, RichTextBoxElement, ComboBoxElement, MultiComboBoxElement,
|
|
122
|
-
PickListElement, CheckBoxElement, RadioButtonElement, ColorSelectorElement,
|
|
123
|
-
SliderElement, CalendarElement, FileUploadButtonElement,
|
|
124
|
-
DataGridElement, TreeGridElement, OlapGridElement, iGridElement, GridColumn,
|
|
125
|
-
ChartElement, GroupElement, TabElement, TableLayoutElement,
|
|
126
|
-
UserComponentElement, WebContainerElement
|
|
127
|
-
typeName 목록 (비 Element):
|
|
128
|
-
Variable, Module, ExecutionPlan, ServerScript,
|
|
129
|
-
MetaDataSources, MetaField, ConditionSet
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
#### get_element_types
|
|
133
|
-
사용 가능한 모든 Element 타입의 목록과 설명을 반환합니다.
|
|
134
|
-
|
|
135
|
-
```
|
|
136
|
-
입력: {} (파라미터 없음)
|
|
137
|
-
출력: { elementTypes: [{ type, description }, ...] }
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
#### get_root_structure
|
|
141
|
-
MTSD 문서의 루트 구조(최상위 필수/선택 속성)를 반환합니다.
|
|
142
|
-
|
|
143
|
-
```
|
|
144
|
-
입력: {} (파라미터 없음)
|
|
145
|
-
출력: { required: [...], properties: {...} }
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### MTSD 생성 도구
|
|
149
|
-
|
|
150
|
-
#### generate_element
|
|
151
|
-
간소화된 입력으로 완전한 Element JSON을 생성합니다. 도킹, 폰트, 배경, 테두리 등의 단축 표기를 지원합니다.
|
|
152
|
-
|
|
153
|
-
```
|
|
154
|
-
입력: {
|
|
155
|
-
type: "Label", // 필수. Element 타입
|
|
156
|
-
id: "LBL001", // 선택. 생략 시 자동 생성
|
|
157
|
-
text: "제목", // 선택. 표시 텍스트
|
|
158
|
-
position: { left: 10, top: 10, width: 200, height: 30 },
|
|
159
|
-
docking: "top", // 단축: left, right, top, bottom, fill, left+right 등
|
|
160
|
-
font: { size: 14, bold: true, color: "#333333", align: "center" },
|
|
161
|
-
background: "#FFFFFF",
|
|
162
|
-
border: "solid 1px #DDD",
|
|
163
|
-
compact: false // true이면 기본값과 동일한 속성 제거 (.design.json용)
|
|
164
|
-
}
|
|
165
|
-
출력: { success: true, element: <완전한 Element JSON>, warnings?: [...] }
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
#### generate_grid_column
|
|
169
|
-
간소화된 입력으로 DataGrid의 GridColumn 배열을 생성합니다.
|
|
170
|
-
|
|
171
|
-
```
|
|
172
|
-
입력: {
|
|
173
|
-
columns: [
|
|
174
|
-
{ name: "USER_ID", header: "사용자ID", width: 120 },
|
|
175
|
-
{ name: "CHK", type: "checkbox", width: 40, editable: true },
|
|
176
|
-
{ name: "STATUS", type: "combo", width: 100 },
|
|
177
|
-
{ name: "AMOUNT", align: "right", format: "#,##0" }
|
|
178
|
-
],
|
|
179
|
-
compact: false
|
|
180
|
-
}
|
|
181
|
-
출력: { success: true, columns: [...], count: 4 }
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
#### generate_datasource
|
|
185
|
-
간소화된 입력으로 완전한 DataSource JSON을 생성합니다. SQL에서 파라미터를 자동 추출합니다.
|
|
186
|
-
|
|
187
|
-
```
|
|
188
|
-
입력: {
|
|
189
|
-
name: "DS_USER", // 필수
|
|
190
|
-
connection: "CONN_CODE", // 필수
|
|
191
|
-
sql: "SELECT * FROM USERS WHERE USER_ID = @VS_USER_ID",
|
|
192
|
-
columns: [{ name: "USER_ID" }, { name: "USER_NM" }],
|
|
193
|
-
dsType: 0, // 0:DataSource, 1:MetaData, 2:Template, 3:ServerDataSource
|
|
194
|
-
useMeta: false,
|
|
195
|
-
useCache: false,
|
|
196
|
-
compact: false
|
|
197
|
-
}
|
|
198
|
-
출력: { success: true, dataSource: <완전한 DataSource JSON> }
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
#### generate_olap_fields
|
|
202
|
-
OlapGrid의 `iOLAPView.Fields` 배열을 생성합니다. Dimension/Measure 분류, Area 자동 배치, SummaryType 설정이 완료된 OlapField 배열을 반환합니다.
|
|
203
|
-
|
|
204
|
-
```
|
|
205
|
-
입력: {
|
|
206
|
-
columns: [
|
|
207
|
-
{ name: "DEPT_NM", caption: "부서명", type: "string" },
|
|
208
|
-
{ name: "SALE_AMT", caption: "매출액", type: "number", summaryType: "sum" }
|
|
209
|
-
],
|
|
210
|
-
autoPlace: true, // Area 자동 배치 (기본: true)
|
|
211
|
-
includeOptions: false, // iOLAPView 전체 구조 포함 여부
|
|
212
|
-
compact: false
|
|
213
|
-
}
|
|
214
|
-
출력: { success: true, fields: [...] }
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
#### generate_uuid
|
|
218
|
-
i-AUD 보고서용 UUID를 생성합니다. `prefix + 32자리 HEX` 형식입니다.
|
|
219
|
-
|
|
220
|
-
```
|
|
221
|
-
입력 (단일):
|
|
222
|
-
{ prefix: "Label", count: 3 }
|
|
223
|
-
입력 (다중 prefix):
|
|
224
|
-
{ items: [{ prefix: "Label", count: 2 }, { prefix: "DS", count: 1 }] }
|
|
225
|
-
출력: { ids: [...] }
|
|
226
|
-
```
|
|
227
|
-
|
|
228
|
-
#### build_mtsd
|
|
229
|
-
MtsdBuilder Fluent API를 사용하는 JavaScript 스크립트를 실행하여 MTSD 문서를 생성합니다.
|
|
230
|
-
|
|
231
|
-
```
|
|
232
|
-
입력: {
|
|
233
|
-
script: "const doc = new MtsdBuilder('보고서명'); doc.addLabel(...); return doc.build();"
|
|
234
|
-
}
|
|
235
|
-
출력: <완전한 MTSD JSON>
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
### MTSD 보정 도구
|
|
239
|
-
|
|
240
|
-
#### fix_mtsd
|
|
241
|
-
MTSD 문서 파일(`.design.json`, `.mtsd`, `.sc`)을 읽어 자동 보정 규칙을 적용하고 파일을 덮어씁니다.
|
|
242
|
-
|
|
243
|
-
```
|
|
244
|
-
입력: { path: "C:/reports/sample/sample.design.json" }
|
|
245
|
-
출력: { success: true, fixCount: 5, fixes: [...] }
|
|
246
|
-
|
|
247
|
-
보정 항목:
|
|
248
|
-
[Rule1] DataSource Name→Id 참조 보정
|
|
249
|
-
[Rule2] OlapGrid DataSource 기반 Fields 자동 생성
|
|
250
|
-
[Rule2-2] OlapGrid Fields 내 CreateType=1 중복 보정 (#MEASURES_HEADER#만 허용)
|
|
251
|
-
[Rule3] Enum/Range 값 범위 초과 보정 (Border.LineType, Font 정렬, Color RGBA clamp, GridColumn/OlapField 속성 등)
|
|
252
|
-
Params ParamType 누락 보정
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
### 검증 도구
|
|
256
|
-
|
|
257
|
-
#### validate_module
|
|
258
|
-
모듈 JSON(`.module.json`) 파일을 검증합니다. 스키마 준수 여부 및 비즈니스 로직 경고를 포함합니다.
|
|
259
|
-
|
|
260
|
-
```
|
|
261
|
-
입력 (둘 중 하나):
|
|
262
|
-
{ path: "C:/reports/sample/모듈제목.module.json" }
|
|
263
|
-
{ document: <JSON 문자열 또는 객체> }
|
|
264
|
-
출력: { valid: boolean, warnings?: [...], errors?: [...] }
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
#### validate_mxgrid
|
|
268
|
-
MX-GRID 템플릿(`.json2`) 및 데이터셋(`.ds`) 파일을 검증합니다. 스타일/시트 참조 불일치 등 비즈니스 로직 경고도 포함합니다.
|
|
269
|
-
|
|
270
|
-
```
|
|
271
|
-
입력 (파일 경로):
|
|
272
|
-
{ path: "C:/reports/sample/template.json2" }
|
|
273
|
-
입력 (JSON 직접):
|
|
274
|
-
{ document: <JSON>, type: "json2" | "ds" }
|
|
275
|
-
출력: { valid: boolean, warnings?: [...], errors?: [...] }
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
### 컨트롤 정보 도구
|
|
279
|
-
|
|
280
|
-
#### get_control_info
|
|
281
|
-
MTSD 파일에서 컨트롤의 Name과 Type 매핑 정보를 추출합니다. TypeScript 스크립트 작성 시 타입 확인 또는 import 문 생성에 사용합니다.
|
|
282
|
-
|
|
283
|
-
```
|
|
284
|
-
입력: { path: "C:/reports/sample/sample.mtsd", name: "GRD001" }
|
|
285
|
-
- name 생략 시 전체 컨트롤 목록 반환
|
|
286
|
-
출력: { controls: [{ name: "GRD001", type: "DataGrid" }, ...] }
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
### i-AUD 서버 연동 도구
|
|
290
|
-
|
|
291
|
-
#### get_dbms_list
|
|
292
|
-
현재 사용자에게 권한이 있는 데이터베이스 연결(DBMS) 목록을 조회합니다.
|
|
293
|
-
|
|
294
|
-
```
|
|
295
|
-
입력: {} (파라미터 없음)
|
|
296
|
-
출력: { connections: [{ connectionCode, name, dbType }, ...] }
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
#### execute_query
|
|
300
|
-
i-AUD 서버를 통해 SQL 쿼리를 실행하고 결과를 반환합니다.
|
|
301
|
-
|
|
302
|
-
```
|
|
303
|
-
입력: {
|
|
304
|
-
connectionCode: "AUD_SAMPLE_DB",
|
|
305
|
-
sql: "SELECT * FROM USERS WHERE USER_ID = :VS_USER_ID",
|
|
306
|
-
limitRows: 100, // 기본: 100, 최대: 1000
|
|
307
|
-
params: { "VS_USER_ID": "U001" }
|
|
308
|
-
}
|
|
309
|
-
출력: { rows: [...], columns: [...] }
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
#### get_table_list
|
|
313
|
-
i-AUD 메타 데이터에서 테이블/뷰 목록을 조회합니다.
|
|
314
|
-
|
|
315
|
-
```
|
|
316
|
-
입력: {
|
|
317
|
-
connectionCode: "AUD_SAMPLE_DB",
|
|
318
|
-
filter: "USER", // 검색어 (선택)
|
|
319
|
-
limitRows: 500
|
|
320
|
-
}
|
|
321
|
-
출력: { tables: [{ TABLE_ID, SCHEMA_NM, TABLE_NM, TABLE_DESC }, ...] }
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
#### get_table_columns
|
|
325
|
-
특정 테이블의 컬럼 목록을 조회합니다.
|
|
326
|
-
|
|
327
|
-
```
|
|
328
|
-
입력: {
|
|
329
|
-
connectionCode: "AUD_SAMPLE_DB",
|
|
330
|
-
tableId: "TABLE_ID값" // get_table_list 결과의 TABLE_ID
|
|
331
|
-
}
|
|
332
|
-
출력: { columns: [{ COLUMN_NM, DATA_TYPE, DATA_LEN, IS_PK, NULLABLE, COLUMN_DESC }, ...] }
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
#### get_boxstyle_list
|
|
336
|
-
i-AUD 서버에서 BoxStyle 목록을 조회합니다.
|
|
337
|
-
|
|
338
|
-
```
|
|
339
|
-
입력: {} (파라미터 없음)
|
|
340
|
-
출력: { boxStyles: [{ Name, StyleName, Background, Border, Font }, ...] }
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
#### save_boxstyle
|
|
344
|
-
i-AUD 서버에 BoxStyle을 저장(생성/수정)합니다. 단일 객체 또는 배열로 여러 개를 한 번에 저장할 수 있습니다.
|
|
345
|
-
|
|
346
|
-
```
|
|
347
|
-
입력: {
|
|
348
|
-
boxStyle: {
|
|
349
|
-
Name: "BTN_DEFAULT",
|
|
350
|
-
StyleName: "기본 버튼 스타일",
|
|
351
|
-
Background: { ColorR: 66, ColorG: 133, ColorB: 244, ColorA: 1 },
|
|
352
|
-
Border: { LineType: "solid", Thickness: "1,1,1,1", CornerRadius: "4,4,4,4" },
|
|
353
|
-
Font: { Bold: true, Size: 13, HorizontalAlignment: "center" }
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
출력: { success: true }
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
#### save_report
|
|
360
|
-
보고서를 i-AUD 서버에 저장(Publish)합니다. MTSD, DataSource, ServerScript, JScript를 수집하여 서버에 전송하고 `.mtsd` 및 `.design.json` 파일을 갱신합니다.
|
|
361
|
-
|
|
362
|
-
```
|
|
363
|
-
입력: {
|
|
364
|
-
reportPath: "C:/reports/sample", // .design.json 또는 .mtsd가 있는 폴더
|
|
365
|
-
build: false // TypeScript 빌드(tsc) 실행 여부
|
|
366
|
-
}
|
|
367
|
-
출력: { success: true, ... }
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
#### pull_report
|
|
371
|
-
i-AUD 서버에서 보고서의 최신 내용을 로컬 폴더에 동기화합니다. `.mtsd` 및 `.design.json`을 생성/갱신합니다.
|
|
372
|
-
|
|
373
|
-
```
|
|
374
|
-
입력: {
|
|
375
|
-
reportPath: "C:/reports/sample"
|
|
376
|
-
}
|
|
377
|
-
출력: { success: true, ... }
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
#### run_designer
|
|
381
|
-
i-AUD Designer를 브라우저에서 실행합니다.
|
|
382
|
-
|
|
383
|
-
```
|
|
384
|
-
입력: {
|
|
385
|
-
reportPath: "C:/reports/sample"
|
|
386
|
-
}
|
|
387
|
-
출력: { success: true, url: "..." }
|
|
388
|
-
```
|
|
389
|
-
|
|
390
|
-
### WorkFlow 모듈 도구
|
|
391
|
-
|
|
392
|
-
#### get_module_list
|
|
393
|
-
i-AUD 서버에서 WorkFlow 모듈 목록을 조회합니다.
|
|
394
|
-
|
|
395
|
-
```
|
|
396
|
-
입력: {
|
|
397
|
-
filter: "검색어", // 선택. 모듈명/설명에서 검색
|
|
398
|
-
limitRows: 500
|
|
399
|
-
}
|
|
400
|
-
출력: { modules: [{ MODULE_CODE, MODULE_NM, ... }, ...] }
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
#### get_module_params
|
|
404
|
-
특정 모듈의 파라미터 목록을 조회합니다.
|
|
405
|
-
|
|
406
|
-
```
|
|
407
|
-
입력: {
|
|
408
|
-
moduleCode: "MODULE_CODE값" // get_module_list로 조회
|
|
409
|
-
}
|
|
410
|
-
출력: { params: [{ PARAM_NM, PARAM_TYPE, ... }, ...] }
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
## 프로젝트 구조
|
|
414
|
-
|
|
415
|
-
```
|
|
416
|
-
aud_mcp_server/
|
|
417
|
-
├── src/
|
|
418
|
-
│ ├── index.ts # MCP 서버 메인 (도구 정의 + 핸들러)
|
|
419
|
-
│ ├── generators/
|
|
420
|
-
│ │ ├── element.ts # generate_element 구현
|
|
421
|
-
│ │ ├── grid-column.ts # generate_grid_column 구현
|
|
422
|
-
│ │ ├── datasource.ts # generate_datasource 구현
|
|
423
|
-
│ │ ├── olap-field.ts # generate_olap_fields 구현
|
|
424
|
-
│ │ ├── compact.ts # compact 출력 변환
|
|
425
|
-
│ │ ├── mtsd-builder.ts # build_mtsd 구현
|
|
426
|
-
│ │ ├── fixer.ts # fix_mtsd 구현
|
|
427
|
-
│ │ ├── control-info.ts # get_control_info 구현
|
|
428
|
-
│ │ └── defaults.ts # Element 기본값 정의
|
|
429
|
-
│ └── utils/
|
|
430
|
-
│ ├── aud-api-client.ts # i-AUD 서버 API 클라이언트
|
|
431
|
-
│ ├── report-publisher.ts # save_report / pull_report 구현
|
|
432
|
-
│ ├── mtsd-file-ref.ts # .design.json 파일 경로 참조 처리
|
|
433
|
-
│ ├── color.ts # 색상 변환 유틸
|
|
434
|
-
│ ├── docking.ts # 도킹 단축 표기 변환
|
|
435
|
-
│ └── uuid.ts # UUID 생성
|
|
436
|
-
├── schemas/
|
|
437
|
-
│ ├── mtsd.schema.json # MTSD JSON Schema (AJV 검증용)
|
|
438
|
-
│ ├── design.schema.json # .design.json JSON Schema (간소화 형식)
|
|
439
|
-
│ ├── module.schema.json # 모듈 JSON Schema
|
|
440
|
-
│ ├── json2.schema.json # MX-GRID 템플릿 Schema
|
|
441
|
-
│ └── ds.schema.json # MX-GRID 데이터셋 Schema
|
|
442
|
-
├── dist/ # 빌드 결과물
|
|
443
|
-
├── package.json
|
|
444
|
-
├── tsconfig.json
|
|
445
|
-
└── README.md
|
|
446
|
-
```
|
|
447
|
-
|
|
448
|
-
## 사용 예시
|
|
449
|
-
|
|
450
|
-
### MTSD 문서 생성 워크플로우
|
|
451
|
-
|
|
452
|
-
1. `get_root_structure`로 전체 구조 파악
|
|
453
|
-
2. `get_schema_info`로 각 섹션의 필수/선택 속성 확인
|
|
454
|
-
3. `generate_element`, `generate_grid_column`, `generate_datasource`로 각 파트 생성
|
|
455
|
-
4. `validate_part`로 부분별 즉시 검증
|
|
456
|
-
5. 전체 완성 후 `validate_mtsd`로 최종 검증
|
|
457
|
-
6. `fix_mtsd`로 자동 보정 적용
|
|
458
|
-
7. `save_report`로 서버에 저장
|
|
459
|
-
|
|
460
|
-
### 보고서 서버 동기화 워크플로우
|
|
461
|
-
|
|
462
|
-
1. `pull_report`로 서버→로컬 최신 내용 동기화
|
|
463
|
-
2. 로컬에서 코드 수정
|
|
464
|
-
3. `save_report`(build: true)로 빌드 후 서버에 저장
|
|
465
|
-
4. `run_designer`로 브라우저에서 결과 확인
|
|
466
|
-
|
|
467
|
-
### DB 스키마 탐색 워크플로우
|
|
468
|
-
|
|
469
|
-
1. `get_dbms_list`로 연결 코드 확인
|
|
470
|
-
2. `get_table_list`로 테이블 검색
|
|
471
|
-
3. `get_table_columns`로 컬럼 구조 확인
|
|
472
|
-
4. `execute_query`로 샘플 데이터 조회
|
|
473
|
-
5. `generate_datasource`로 DataSource JSON 생성
|
|
474
|
-
|
|
475
|
-
### 모듈 생성 워크플로우
|
|
476
|
-
|
|
477
|
-
1. JavaScript 스크립트 작성
|
|
478
|
-
2. `.module.json` 파일 구성 (TYPE, MTX_MODULE_INFO, MTX_MODULE_PARAMS)
|
|
479
|
-
3. `validate_module`로 스키마 + 비즈니스 로직 검증
|
|
480
|
-
|
|
481
|
-
### TypeScript 전환 워크플로우
|
|
482
|
-
|
|
483
|
-
1. `get_control_info`로 MTSD에서 컨트롤 Name→Type 매핑 추출
|
|
484
|
-
2. 타입 정보를 기반으로 `Matrix.getObject()` 호출에 타입 어노테이션 추가
|
|
485
|
-
|
|
486
|
-
## 요구사항
|
|
487
|
-
|
|
488
|
-
- Node.js >= 18.0.0
|
|
489
|
-
|
|
490
|
-
## 라이선스
|
|
491
|
-
|
|
492
|
-
MIT
|
|
1
|
+
# @bimatrix-aud-platform/aud_mcp_server
|
|
2
|
+
|
|
3
|
+
i-AUD 플랫폼용 MCP(Model Context Protocol) Server입니다.
|
|
4
|
+
|
|
5
|
+
MTSD/design.json 검증·생성·보정, DB 쿼리 실행, 보고서 저장/동기화, MX-GRID 검증, BoxStyle 관리, WorkFlow 모듈 조회 등
|
|
6
|
+
Claude AI가 i-AUD 보고서를 정확하게 개발할 수 있도록 **26개의 도구**를 제공합니다.
|
|
7
|
+
|
|
8
|
+
## 설치 및 등록
|
|
9
|
+
|
|
10
|
+
### 방법 1: npx로 바로 사용 (권장)
|
|
11
|
+
|
|
12
|
+
별도 설치 없이 MCP 설정에 다음을 추가합니다.
|
|
13
|
+
|
|
14
|
+
**Claude Code 프로젝트 설정** (`.mcp.json`):
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"mcpServers": {
|
|
19
|
+
"aud_mcp_server": {
|
|
20
|
+
"command": "npx",
|
|
21
|
+
"args": ["-y", "@bimatrix-aud-platform/aud_mcp_server"]
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Claude Desktop 전역 설정** (`%APPDATA%\Claude\claude_desktop_config.json`):
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"mcpServers": {
|
|
32
|
+
"aud_mcp_server": {
|
|
33
|
+
"command": "npx",
|
|
34
|
+
"args": ["-y", "@bimatrix-aud-platform/aud_mcp_server"]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### 방법 2: 글로벌 설치 후 사용
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npm install -g @bimatrix-aud-platform/aud_mcp_server
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
MCP 설정:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"mcpServers": {
|
|
51
|
+
"aud_mcp_server": {
|
|
52
|
+
"command": "aud_mcp_server"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 방법 3: 로컬 경로 직접 지정
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"mcpServers": {
|
|
63
|
+
"aud_mcp_server": {
|
|
64
|
+
"command": "node",
|
|
65
|
+
"args": ["C:/source/aud_report_develop/aud_mcp_server/dist/index.js"]
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 제공 도구 (26개)
|
|
72
|
+
|
|
73
|
+
### MTSD 검증 도구
|
|
74
|
+
|
|
75
|
+
#### validate_mtsd
|
|
76
|
+
MTSD 또는 `.design.json` 문서 전체를 스키마 검증합니다. `format='design'`이면 간소화된 스키마(기본값 생략 허용)로 검증합니다.
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
입력: { document: <JSON 문자열 또는 객체>, format?: "mtsd" | "design" }
|
|
80
|
+
출력: { valid: boolean, errors?: [...] }
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
#### validate_part
|
|
84
|
+
MTSD 또는 `.design.json` 문서의 특정 부분만 검증합니다. 점진적 문서 생성 시 유용합니다.
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
입력: { partName: "Form", data: <JSON>, format?: "mtsd" | "design" }
|
|
88
|
+
출력: { valid: boolean, errors?: [...] }
|
|
89
|
+
|
|
90
|
+
partName 목록 (Display):
|
|
91
|
+
LabelElement, ButtonElement, ImageElement
|
|
92
|
+
partName 목록 (Input):
|
|
93
|
+
TextBoxElement, MaskTextBoxElement, NumberBoxElement, RichTextBoxElement,
|
|
94
|
+
ComboBoxElement, MultiComboBoxElement, PickListElement,
|
|
95
|
+
CheckBoxElement, RadioButtonElement, ColorSelectorElement, SliderElement,
|
|
96
|
+
CalendarElement, FileUploadButtonElement
|
|
97
|
+
partName 목록 (Grid):
|
|
98
|
+
DataGridElement, TreeGridElement, OlapGridElement, iGridElement
|
|
99
|
+
partName 목록 (Chart/Container):
|
|
100
|
+
ChartElement, GroupElement, TabElement, TableLayoutElement,
|
|
101
|
+
UserComponentElement, WebContainerElement
|
|
102
|
+
partName 목록 (공통):
|
|
103
|
+
ReportInfo, DataSource, DataSources, Form, Element,
|
|
104
|
+
Variable, Module, ExecutionPlan, ServerScript, MetaDataSources
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### MTSD 스키마 조회 도구
|
|
108
|
+
|
|
109
|
+
#### get_schema_info
|
|
110
|
+
특정 타입의 스키마 정보(필수/선택 속성, 속성별 설명)를 반환합니다.
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
입력: { typeName: "Form" }
|
|
114
|
+
출력: { required: [...], optional: [...], properties: {...} }
|
|
115
|
+
|
|
116
|
+
typeName 목록 (공통):
|
|
117
|
+
ReportInfo, DataSource, DataSources, Form, Element,
|
|
118
|
+
Position, Style, Font, Border, Background
|
|
119
|
+
typeName 목록 (Element 타입):
|
|
120
|
+
LabelElement, ButtonElement, ImageElement, TextBoxElement, MaskTextBoxElement,
|
|
121
|
+
NumberBoxElement, RichTextBoxElement, ComboBoxElement, MultiComboBoxElement,
|
|
122
|
+
PickListElement, CheckBoxElement, RadioButtonElement, ColorSelectorElement,
|
|
123
|
+
SliderElement, CalendarElement, FileUploadButtonElement,
|
|
124
|
+
DataGridElement, TreeGridElement, OlapGridElement, iGridElement, GridColumn,
|
|
125
|
+
ChartElement, GroupElement, TabElement, TableLayoutElement,
|
|
126
|
+
UserComponentElement, WebContainerElement
|
|
127
|
+
typeName 목록 (비 Element):
|
|
128
|
+
Variable, Module, ExecutionPlan, ServerScript,
|
|
129
|
+
MetaDataSources, MetaField, ConditionSet
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
#### get_element_types
|
|
133
|
+
사용 가능한 모든 Element 타입의 목록과 설명을 반환합니다.
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
입력: {} (파라미터 없음)
|
|
137
|
+
출력: { elementTypes: [{ type, description }, ...] }
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
#### get_root_structure
|
|
141
|
+
MTSD 문서의 루트 구조(최상위 필수/선택 속성)를 반환합니다.
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
입력: {} (파라미터 없음)
|
|
145
|
+
출력: { required: [...], properties: {...} }
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### MTSD 생성 도구
|
|
149
|
+
|
|
150
|
+
#### generate_element
|
|
151
|
+
간소화된 입력으로 완전한 Element JSON을 생성합니다. 도킹, 폰트, 배경, 테두리 등의 단축 표기를 지원합니다.
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
입력: {
|
|
155
|
+
type: "Label", // 필수. Element 타입
|
|
156
|
+
id: "LBL001", // 선택. 생략 시 자동 생성
|
|
157
|
+
text: "제목", // 선택. 표시 텍스트
|
|
158
|
+
position: { left: 10, top: 10, width: 200, height: 30 },
|
|
159
|
+
docking: "top", // 단축: left, right, top, bottom, fill, left+right 등
|
|
160
|
+
font: { size: 14, bold: true, color: "#333333", align: "center" },
|
|
161
|
+
background: "#FFFFFF",
|
|
162
|
+
border: "solid 1px #DDD",
|
|
163
|
+
compact: false // true이면 기본값과 동일한 속성 제거 (.design.json용)
|
|
164
|
+
}
|
|
165
|
+
출력: { success: true, element: <완전한 Element JSON>, warnings?: [...] }
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
#### generate_grid_column
|
|
169
|
+
간소화된 입력으로 DataGrid의 GridColumn 배열을 생성합니다.
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
입력: {
|
|
173
|
+
columns: [
|
|
174
|
+
{ name: "USER_ID", header: "사용자ID", width: 120 },
|
|
175
|
+
{ name: "CHK", type: "checkbox", width: 40, editable: true },
|
|
176
|
+
{ name: "STATUS", type: "combo", width: 100 },
|
|
177
|
+
{ name: "AMOUNT", align: "right", format: "#,##0" }
|
|
178
|
+
],
|
|
179
|
+
compact: false
|
|
180
|
+
}
|
|
181
|
+
출력: { success: true, columns: [...], count: 4 }
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
#### generate_datasource
|
|
185
|
+
간소화된 입력으로 완전한 DataSource JSON을 생성합니다. SQL에서 파라미터를 자동 추출합니다.
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
입력: {
|
|
189
|
+
name: "DS_USER", // 필수
|
|
190
|
+
connection: "CONN_CODE", // 필수
|
|
191
|
+
sql: "SELECT * FROM USERS WHERE USER_ID = @VS_USER_ID",
|
|
192
|
+
columns: [{ name: "USER_ID" }, { name: "USER_NM" }],
|
|
193
|
+
dsType: 0, // 0:DataSource, 1:MetaData, 2:Template, 3:ServerDataSource
|
|
194
|
+
useMeta: false,
|
|
195
|
+
useCache: false,
|
|
196
|
+
compact: false
|
|
197
|
+
}
|
|
198
|
+
출력: { success: true, dataSource: <완전한 DataSource JSON> }
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
#### generate_olap_fields
|
|
202
|
+
OlapGrid의 `iOLAPView.Fields` 배열을 생성합니다. Dimension/Measure 분류, Area 자동 배치, SummaryType 설정이 완료된 OlapField 배열을 반환합니다.
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
입력: {
|
|
206
|
+
columns: [
|
|
207
|
+
{ name: "DEPT_NM", caption: "부서명", type: "string" },
|
|
208
|
+
{ name: "SALE_AMT", caption: "매출액", type: "number", summaryType: "sum" }
|
|
209
|
+
],
|
|
210
|
+
autoPlace: true, // Area 자동 배치 (기본: true)
|
|
211
|
+
includeOptions: false, // iOLAPView 전체 구조 포함 여부
|
|
212
|
+
compact: false
|
|
213
|
+
}
|
|
214
|
+
출력: { success: true, fields: [...] }
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
#### generate_uuid
|
|
218
|
+
i-AUD 보고서용 UUID를 생성합니다. `prefix + 32자리 HEX` 형식입니다.
|
|
219
|
+
|
|
220
|
+
```
|
|
221
|
+
입력 (단일):
|
|
222
|
+
{ prefix: "Label", count: 3 }
|
|
223
|
+
입력 (다중 prefix):
|
|
224
|
+
{ items: [{ prefix: "Label", count: 2 }, { prefix: "DS", count: 1 }] }
|
|
225
|
+
출력: { ids: [...] }
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
#### build_mtsd
|
|
229
|
+
MtsdBuilder Fluent API를 사용하는 JavaScript 스크립트를 실행하여 MTSD 문서를 생성합니다.
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
입력: {
|
|
233
|
+
script: "const doc = new MtsdBuilder('보고서명'); doc.addLabel(...); return doc.build();"
|
|
234
|
+
}
|
|
235
|
+
출력: <완전한 MTSD JSON>
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### MTSD 보정 도구
|
|
239
|
+
|
|
240
|
+
#### fix_mtsd
|
|
241
|
+
MTSD 문서 파일(`.design.json`, `.mtsd`, `.sc`)을 읽어 자동 보정 규칙을 적용하고 파일을 덮어씁니다.
|
|
242
|
+
|
|
243
|
+
```
|
|
244
|
+
입력: { path: "C:/reports/sample/sample.design.json" }
|
|
245
|
+
출력: { success: true, fixCount: 5, fixes: [...] }
|
|
246
|
+
|
|
247
|
+
보정 항목:
|
|
248
|
+
[Rule1] DataSource Name→Id 참조 보정
|
|
249
|
+
[Rule2] OlapGrid DataSource 기반 Fields 자동 생성
|
|
250
|
+
[Rule2-2] OlapGrid Fields 내 CreateType=1 중복 보정 (#MEASURES_HEADER#만 허용)
|
|
251
|
+
[Rule3] Enum/Range 값 범위 초과 보정 (Border.LineType, Font 정렬, Color RGBA clamp, GridColumn/OlapField 속성 등)
|
|
252
|
+
Params ParamType 누락 보정
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### 검증 도구
|
|
256
|
+
|
|
257
|
+
#### validate_module
|
|
258
|
+
모듈 JSON(`.module.json`) 파일을 검증합니다. 스키마 준수 여부 및 비즈니스 로직 경고를 포함합니다.
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
입력 (둘 중 하나):
|
|
262
|
+
{ path: "C:/reports/sample/모듈제목.module.json" }
|
|
263
|
+
{ document: <JSON 문자열 또는 객체> }
|
|
264
|
+
출력: { valid: boolean, warnings?: [...], errors?: [...] }
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
#### validate_mxgrid
|
|
268
|
+
MX-GRID 템플릿(`.json2`) 및 데이터셋(`.ds`) 파일을 검증합니다. 스타일/시트 참조 불일치 등 비즈니스 로직 경고도 포함합니다.
|
|
269
|
+
|
|
270
|
+
```
|
|
271
|
+
입력 (파일 경로):
|
|
272
|
+
{ path: "C:/reports/sample/template.json2" }
|
|
273
|
+
입력 (JSON 직접):
|
|
274
|
+
{ document: <JSON>, type: "json2" | "ds" }
|
|
275
|
+
출력: { valid: boolean, warnings?: [...], errors?: [...] }
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### 컨트롤 정보 도구
|
|
279
|
+
|
|
280
|
+
#### get_control_info
|
|
281
|
+
MTSD 파일에서 컨트롤의 Name과 Type 매핑 정보를 추출합니다. TypeScript 스크립트 작성 시 타입 확인 또는 import 문 생성에 사용합니다.
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
입력: { path: "C:/reports/sample/sample.mtsd", name: "GRD001" }
|
|
285
|
+
- name 생략 시 전체 컨트롤 목록 반환
|
|
286
|
+
출력: { controls: [{ name: "GRD001", type: "DataGrid" }, ...] }
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### i-AUD 서버 연동 도구
|
|
290
|
+
|
|
291
|
+
#### get_dbms_list
|
|
292
|
+
현재 사용자에게 권한이 있는 데이터베이스 연결(DBMS) 목록을 조회합니다.
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
입력: {} (파라미터 없음)
|
|
296
|
+
출력: { connections: [{ connectionCode, name, dbType }, ...] }
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
#### execute_query
|
|
300
|
+
i-AUD 서버를 통해 SQL 쿼리를 실행하고 결과를 반환합니다.
|
|
301
|
+
|
|
302
|
+
```
|
|
303
|
+
입력: {
|
|
304
|
+
connectionCode: "AUD_SAMPLE_DB",
|
|
305
|
+
sql: "SELECT * FROM USERS WHERE USER_ID = :VS_USER_ID",
|
|
306
|
+
limitRows: 100, // 기본: 100, 최대: 1000
|
|
307
|
+
params: { "VS_USER_ID": "U001" }
|
|
308
|
+
}
|
|
309
|
+
출력: { rows: [...], columns: [...] }
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
#### get_table_list
|
|
313
|
+
i-AUD 메타 데이터에서 테이블/뷰 목록을 조회합니다.
|
|
314
|
+
|
|
315
|
+
```
|
|
316
|
+
입력: {
|
|
317
|
+
connectionCode: "AUD_SAMPLE_DB",
|
|
318
|
+
filter: "USER", // 검색어 (선택)
|
|
319
|
+
limitRows: 500
|
|
320
|
+
}
|
|
321
|
+
출력: { tables: [{ TABLE_ID, SCHEMA_NM, TABLE_NM, TABLE_DESC }, ...] }
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
#### get_table_columns
|
|
325
|
+
특정 테이블의 컬럼 목록을 조회합니다.
|
|
326
|
+
|
|
327
|
+
```
|
|
328
|
+
입력: {
|
|
329
|
+
connectionCode: "AUD_SAMPLE_DB",
|
|
330
|
+
tableId: "TABLE_ID값" // get_table_list 결과의 TABLE_ID
|
|
331
|
+
}
|
|
332
|
+
출력: { columns: [{ COLUMN_NM, DATA_TYPE, DATA_LEN, IS_PK, NULLABLE, COLUMN_DESC }, ...] }
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
#### get_boxstyle_list
|
|
336
|
+
i-AUD 서버에서 BoxStyle 목록을 조회합니다.
|
|
337
|
+
|
|
338
|
+
```
|
|
339
|
+
입력: {} (파라미터 없음)
|
|
340
|
+
출력: { boxStyles: [{ Name, StyleName, Background, Border, Font }, ...] }
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
#### save_boxstyle
|
|
344
|
+
i-AUD 서버에 BoxStyle을 저장(생성/수정)합니다. 단일 객체 또는 배열로 여러 개를 한 번에 저장할 수 있습니다.
|
|
345
|
+
|
|
346
|
+
```
|
|
347
|
+
입력: {
|
|
348
|
+
boxStyle: {
|
|
349
|
+
Name: "BTN_DEFAULT",
|
|
350
|
+
StyleName: "기본 버튼 스타일",
|
|
351
|
+
Background: { ColorR: 66, ColorG: 133, ColorB: 244, ColorA: 1 },
|
|
352
|
+
Border: { LineType: "solid", Thickness: "1,1,1,1", CornerRadius: "4,4,4,4" },
|
|
353
|
+
Font: { Bold: true, Size: 13, HorizontalAlignment: "center" }
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
출력: { success: true }
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
#### save_report
|
|
360
|
+
보고서를 i-AUD 서버에 저장(Publish)합니다. MTSD, DataSource, ServerScript, JScript를 수집하여 서버에 전송하고 `.mtsd` 및 `.design.json` 파일을 갱신합니다.
|
|
361
|
+
|
|
362
|
+
```
|
|
363
|
+
입력: {
|
|
364
|
+
reportPath: "C:/reports/sample", // .design.json 또는 .mtsd가 있는 폴더
|
|
365
|
+
build: false // TypeScript 빌드(tsc) 실행 여부
|
|
366
|
+
}
|
|
367
|
+
출력: { success: true, ... }
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
#### pull_report
|
|
371
|
+
i-AUD 서버에서 보고서의 최신 내용을 로컬 폴더에 동기화합니다. `.mtsd` 및 `.design.json`을 생성/갱신합니다.
|
|
372
|
+
|
|
373
|
+
```
|
|
374
|
+
입력: {
|
|
375
|
+
reportPath: "C:/reports/sample"
|
|
376
|
+
}
|
|
377
|
+
출력: { success: true, ... }
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
#### run_designer
|
|
381
|
+
i-AUD Designer를 브라우저에서 실행합니다.
|
|
382
|
+
|
|
383
|
+
```
|
|
384
|
+
입력: {
|
|
385
|
+
reportPath: "C:/reports/sample"
|
|
386
|
+
}
|
|
387
|
+
출력: { success: true, url: "..." }
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
### WorkFlow 모듈 도구
|
|
391
|
+
|
|
392
|
+
#### get_module_list
|
|
393
|
+
i-AUD 서버에서 WorkFlow 모듈 목록을 조회합니다.
|
|
394
|
+
|
|
395
|
+
```
|
|
396
|
+
입력: {
|
|
397
|
+
filter: "검색어", // 선택. 모듈명/설명에서 검색
|
|
398
|
+
limitRows: 500
|
|
399
|
+
}
|
|
400
|
+
출력: { modules: [{ MODULE_CODE, MODULE_NM, ... }, ...] }
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
#### get_module_params
|
|
404
|
+
특정 모듈의 파라미터 목록을 조회합니다.
|
|
405
|
+
|
|
406
|
+
```
|
|
407
|
+
입력: {
|
|
408
|
+
moduleCode: "MODULE_CODE값" // get_module_list로 조회
|
|
409
|
+
}
|
|
410
|
+
출력: { params: [{ PARAM_NM, PARAM_TYPE, ... }, ...] }
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
## 프로젝트 구조
|
|
414
|
+
|
|
415
|
+
```
|
|
416
|
+
aud_mcp_server/
|
|
417
|
+
├── src/
|
|
418
|
+
│ ├── index.ts # MCP 서버 메인 (도구 정의 + 핸들러)
|
|
419
|
+
│ ├── generators/
|
|
420
|
+
│ │ ├── element.ts # generate_element 구현
|
|
421
|
+
│ │ ├── grid-column.ts # generate_grid_column 구현
|
|
422
|
+
│ │ ├── datasource.ts # generate_datasource 구현
|
|
423
|
+
│ │ ├── olap-field.ts # generate_olap_fields 구현
|
|
424
|
+
│ │ ├── compact.ts # compact 출력 변환
|
|
425
|
+
│ │ ├── mtsd-builder.ts # build_mtsd 구현
|
|
426
|
+
│ │ ├── fixer.ts # fix_mtsd 구현
|
|
427
|
+
│ │ ├── control-info.ts # get_control_info 구현
|
|
428
|
+
│ │ └── defaults.ts # Element 기본값 정의
|
|
429
|
+
│ └── utils/
|
|
430
|
+
│ ├── aud-api-client.ts # i-AUD 서버 API 클라이언트
|
|
431
|
+
│ ├── report-publisher.ts # save_report / pull_report 구현
|
|
432
|
+
│ ├── mtsd-file-ref.ts # .design.json 파일 경로 참조 처리
|
|
433
|
+
│ ├── color.ts # 색상 변환 유틸
|
|
434
|
+
│ ├── docking.ts # 도킹 단축 표기 변환
|
|
435
|
+
│ └── uuid.ts # UUID 생성
|
|
436
|
+
├── schemas/
|
|
437
|
+
│ ├── mtsd.schema.json # MTSD JSON Schema (AJV 검증용)
|
|
438
|
+
│ ├── design.schema.json # .design.json JSON Schema (간소화 형식)
|
|
439
|
+
│ ├── module.schema.json # 모듈 JSON Schema
|
|
440
|
+
│ ├── json2.schema.json # MX-GRID 템플릿 Schema
|
|
441
|
+
│ └── ds.schema.json # MX-GRID 데이터셋 Schema
|
|
442
|
+
├── dist/ # 빌드 결과물
|
|
443
|
+
├── package.json
|
|
444
|
+
├── tsconfig.json
|
|
445
|
+
└── README.md
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
## 사용 예시
|
|
449
|
+
|
|
450
|
+
### MTSD 문서 생성 워크플로우
|
|
451
|
+
|
|
452
|
+
1. `get_root_structure`로 전체 구조 파악
|
|
453
|
+
2. `get_schema_info`로 각 섹션의 필수/선택 속성 확인
|
|
454
|
+
3. `generate_element`, `generate_grid_column`, `generate_datasource`로 각 파트 생성
|
|
455
|
+
4. `validate_part`로 부분별 즉시 검증
|
|
456
|
+
5. 전체 완성 후 `validate_mtsd`로 최종 검증
|
|
457
|
+
6. `fix_mtsd`로 자동 보정 적용
|
|
458
|
+
7. `save_report`로 서버에 저장
|
|
459
|
+
|
|
460
|
+
### 보고서 서버 동기화 워크플로우
|
|
461
|
+
|
|
462
|
+
1. `pull_report`로 서버→로컬 최신 내용 동기화
|
|
463
|
+
2. 로컬에서 코드 수정
|
|
464
|
+
3. `save_report`(build: true)로 빌드 후 서버에 저장
|
|
465
|
+
4. `run_designer`로 브라우저에서 결과 확인
|
|
466
|
+
|
|
467
|
+
### DB 스키마 탐색 워크플로우
|
|
468
|
+
|
|
469
|
+
1. `get_dbms_list`로 연결 코드 확인
|
|
470
|
+
2. `get_table_list`로 테이블 검색
|
|
471
|
+
3. `get_table_columns`로 컬럼 구조 확인
|
|
472
|
+
4. `execute_query`로 샘플 데이터 조회
|
|
473
|
+
5. `generate_datasource`로 DataSource JSON 생성
|
|
474
|
+
|
|
475
|
+
### 모듈 생성 워크플로우
|
|
476
|
+
|
|
477
|
+
1. JavaScript 스크립트 작성
|
|
478
|
+
2. `.module.json` 파일 구성 (TYPE, MTX_MODULE_INFO, MTX_MODULE_PARAMS)
|
|
479
|
+
3. `validate_module`로 스키마 + 비즈니스 로직 검증
|
|
480
|
+
|
|
481
|
+
### TypeScript 전환 워크플로우
|
|
482
|
+
|
|
483
|
+
1. `get_control_info`로 MTSD에서 컨트롤 Name→Type 매핑 추출
|
|
484
|
+
2. 타입 정보를 기반으로 `Matrix.getObject()` 호출에 타입 어노테이션 추가
|
|
485
|
+
|
|
486
|
+
## 요구사항
|
|
487
|
+
|
|
488
|
+
- Node.js >= 18.0.0
|
|
489
|
+
|
|
490
|
+
## 라이선스
|
|
491
|
+
|
|
492
|
+
MIT
|