@bimatrix-aud-platform/aud_mcp_server 1.1.76 → 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 CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  i-AUD 플랫폼용 MCP(Model Context Protocol) Server입니다.
4
4
 
5
- MTSD 문서 검증/생성, 모듈 JSON 검증, MTSD 자동 보정, 컨트롤 정보 추출
6
- Claude AI가 i-AUD 보고서를 정확하게 개발할 수 있도록 11개의 도구를 제공합니다.
5
+ MTSD/design.json 검증·생성·보정, DB 쿼리 실행, 보고서 저장/동기화, MX-GRID 검증, BoxStyle 관리, WorkFlow 모듈 조회
6
+ Claude AI가 i-AUD 보고서를 정확하게 개발할 수 있도록 **26개의 도구**를 제공합니다.
7
7
 
8
8
  ## 설치 및 등록
9
9
 
@@ -68,29 +68,39 @@ MCP 설정:
68
68
  }
69
69
  ```
70
70
 
71
- ## 제공 도구 (11개)
71
+ ## 제공 도구 (26개)
72
72
 
73
73
  ### MTSD 검증 도구
74
74
 
75
75
  #### validate_mtsd
76
- MTSD 문서 전체를 스키마 검증합니다.
76
+ MTSD 또는 `.design.json` 문서 전체를 스키마 검증합니다. `format='design'`이면 간소화된 스키마(기본값 생략 허용)로 검증합니다.
77
77
 
78
78
  ```
79
- 입력: { document: <JSON 문자열 또는 객체> }
79
+ 입력: { document: <JSON 문자열 또는 객체>, format?: "mtsd" | "design" }
80
80
  출력: { valid: boolean, errors?: [...] }
81
81
  ```
82
82
 
83
83
  #### validate_part
84
- MTSD 문서의 특정 부분만 검증합니다. 점진적 문서 생성 시 유용합니다.
84
+ MTSD 또는 `.design.json` 문서의 특정 부분만 검증합니다. 점진적 문서 생성 시 유용합니다.
85
85
 
86
86
  ```
87
- 입력: { partName: "Form", data: <JSON> }
87
+ 입력: { partName: "Form", data: <JSON>, format?: "mtsd" | "design" }
88
88
  출력: { valid: boolean, errors?: [...] }
89
89
 
90
- partName 목록:
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 목록 (공통):
91
103
  ReportInfo, DataSource, DataSources, Form, Element,
92
- LabelElement, ButtonElement, DataGridElement, GroupElement,
93
- ComboBoxElement, CheckBoxElement, TextBoxElement, NumberBoxElement,
94
104
  Variable, Module, ExecutionPlan, ServerScript, MetaDataSources
95
105
  ```
96
106
 
@@ -103,17 +113,24 @@ partName 목록:
103
113
  입력: { typeName: "Form" }
104
114
  출력: { required: [...], optional: [...], properties: {...} }
105
115
 
106
- typeName 목록:
116
+ typeName 목록 (공통):
107
117
  ReportInfo, DataSource, DataSources, Form, Element,
108
- Position, Style, Font, Border, Background,
109
- LabelElement, ButtonElement, DataGridElement, GroupElement,
110
- ComboBoxElement, CheckBoxElement, TextBoxElement, NumberBoxElement,
111
- GridColumn, Variable, Module, ExecutionPlan, ServerScript,
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,
112
129
  MetaDataSources, MetaField, ConditionSet
113
130
  ```
114
131
 
115
132
  #### get_element_types
116
- 사용 가능한 모든 Element 타입(Label, Button, DataGrid 등 24종)의 목록과 설명을 반환합니다.
133
+ 사용 가능한 모든 Element 타입의 목록과 설명을 반환합니다.
117
134
 
118
135
  ```
119
136
  입력: {} (파라미터 없음)
@@ -143,7 +160,7 @@ MTSD 문서의 루트 구조(최상위 필수/선택 속성)를 반환합니다.
143
160
  font: { size: 14, bold: true, color: "#333333", align: "center" },
144
161
  background: "#FFFFFF",
145
162
  border: "solid 1px #DDD",
146
- visible: true
163
+ compact: false // true이면 기본값과 동일한 속성 제거 (.design.json용)
147
164
  }
148
165
  출력: { success: true, element: <완전한 Element JSON>, warnings?: [...] }
149
166
  ```
@@ -158,7 +175,8 @@ MTSD 문서의 루트 구조(최상위 필수/선택 속성)를 반환합니다.
158
175
  { name: "CHK", type: "checkbox", width: 40, editable: true },
159
176
  { name: "STATUS", type: "combo", width: 100 },
160
177
  { name: "AMOUNT", align: "right", format: "#,##0" }
161
- ]
178
+ ],
179
+ compact: false
162
180
  }
163
181
  출력: { success: true, columns: [...], count: 4 }
164
182
  ```
@@ -174,31 +192,70 @@ MTSD 문서의 루트 구조(최상위 필수/선택 속성)를 반환합니다.
174
192
  columns: [{ name: "USER_ID" }, { name: "USER_NM" }],
175
193
  dsType: 0, // 0:DataSource, 1:MetaData, 2:Template, 3:ServerDataSource
176
194
  useMeta: false,
177
- useCache: false
195
+ useCache: false,
196
+ compact: false
178
197
  }
179
198
  출력: { success: true, dataSource: <완전한 DataSource JSON> }
180
199
  ```
181
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
+
182
238
  ### MTSD 보정 도구
183
239
 
184
240
  #### fix_mtsd
185
- MTSD 파일을 읽어 자동 보정 규칙을 적용하고 파일을 덮어씁니다.
241
+ MTSD 문서 파일(`.design.json`, `.mtsd`, `.sc`)을 읽어 자동 보정 규칙을 적용하고 파일을 덮어씁니다.
186
242
 
187
243
  ```
188
- 입력: { path: "C:/reports/sample/sample.mtsd" }
244
+ 입력: { path: "C:/reports/sample/sample.design.json" }
189
245
  출력: { success: true, fixCount: 5, fixes: [...] }
190
246
 
191
247
  보정 항목:
192
- - DataSource Name→Id 참조 보정
193
- - Params Value 누락 보정
194
- - Columns Type 누락 보정
195
- - Docking/Border 필수 속성 보정
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 누락 보정
196
253
  ```
197
254
 
198
- ### 모듈 검증 도구
255
+ ### 검증 도구
199
256
 
200
257
  #### validate_module
201
- 모듈 JSON(.module.json) 파일을 스키마 검증합니다. 비즈니스 로직 경고(ATTR3="MTX", INP999 ATTR1 누락, PARAM_SEQ 불일치)도 포함합니다.
258
+ 모듈 JSON(`.module.json`) 파일을 검증합니다. 스키마 준수 여부 비즈니스 로직 경고를 포함합니다.
202
259
 
203
260
  ```
204
261
  입력 (둘 중 하나):
@@ -207,10 +264,21 @@ MTSD 파일을 읽어 자동 보정 규칙을 적용하고 파일을 덮어씁
207
264
  출력: { valid: boolean, warnings?: [...], errors?: [...] }
208
265
  ```
209
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
+
210
278
  ### 컨트롤 정보 도구
211
279
 
212
280
  #### get_control_info
213
- MTSD 파일에서 컨트롤의 Name과 Type 매핑 정보를 추출합니다. TypeScript 스크립트 작성 시 컨트롤 변수의 타입을 확인하거나 import 문을 생성할 사용합니다.
281
+ MTSD 파일에서 컨트롤의 Name과 Type 매핑 정보를 추출합니다. TypeScript 스크립트 작성 시 타입 확인 또는 import 생성에 사용합니다.
214
282
 
215
283
  ```
216
284
  입력: { path: "C:/reports/sample/sample.mtsd", name: "GRD001" }
@@ -218,6 +286,130 @@ MTSD 파일에서 컨트롤의 Name과 Type 매핑 정보를 추출합니다. Ty
218
286
  출력: { controls: [{ name: "GRD001", type: "DataGrid" }, ...] }
219
287
  ```
220
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
+
221
413
  ## 프로젝트 구조
222
414
 
223
415
  ```
@@ -228,16 +420,25 @@ aud_mcp_server/
228
420
  │ │ ├── element.ts # generate_element 구현
229
421
  │ │ ├── grid-column.ts # generate_grid_column 구현
230
422
  │ │ ├── datasource.ts # generate_datasource 구현
423
+ │ │ ├── olap-field.ts # generate_olap_fields 구현
424
+ │ │ ├── compact.ts # compact 출력 변환
425
+ │ │ ├── mtsd-builder.ts # build_mtsd 구현
231
426
  │ │ ├── fixer.ts # fix_mtsd 구현
232
427
  │ │ ├── control-info.ts # get_control_info 구현
233
428
  │ │ └── defaults.ts # Element 기본값 정의
234
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 파일 경로 참조 처리
235
433
  │ ├── color.ts # 색상 변환 유틸
236
434
  │ ├── docking.ts # 도킹 단축 표기 변환
237
435
  │ └── uuid.ts # UUID 생성
238
436
  ├── schemas/
239
437
  │ ├── mtsd.schema.json # MTSD JSON Schema (AJV 검증용)
240
- └── module.schema.json # 모듈 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
241
442
  ├── dist/ # 빌드 결과물
242
443
  ├── package.json
243
444
  ├── tsconfig.json
@@ -254,6 +455,22 @@ aud_mcp_server/
254
455
  4. `validate_part`로 부분별 즉시 검증
255
456
  5. 전체 완성 후 `validate_mtsd`로 최종 검증
256
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 생성
257
474
 
258
475
  ### 모듈 생성 워크플로우
259
476
 
package/dist/index.js CHANGED
@@ -983,7 +983,7 @@ const tools = [
983
983
  // Create MCP server
984
984
  const server = new Server({
985
985
  name: "aud_mcp_server",
986
- version: "1.0.0",
986
+ version: "1.1.76",
987
987
  }, {
988
988
  capabilities: {
989
989
  tools: {},