@bimatrix-aud-platform/aud_mcp_server 1.1.5 → 1.1.7

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/dist/index.js CHANGED
@@ -12,7 +12,7 @@ import { generateGridColumns } from "./generators/grid-column.js";
12
12
  import { generateDataSource } from "./generators/datasource.js";
13
13
  import { fixMtsd } from "./generators/fixer.js";
14
14
  import { getControlInfo } from "./generators/control-info.js";
15
- import { callSchemaService, isAudConfigured } from "./utils/aud-api-client.js";
15
+ import { callSchemaService, isAudConfigured, setWorkspaceRoots } from "./utils/aud-api-client.js";
16
16
  const __filename = fileURLToPath(import.meta.url);
17
17
  const __dirname = dirname(__filename);
18
18
  // Load MTSD schema
@@ -539,6 +539,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
539
539
  // Handle tool calls
540
540
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
541
541
  const { name, arguments: args } = request.params;
542
+ await ensureWorkspaceRoots();
542
543
  try {
543
544
  switch (name) {
544
545
  case "validate_mtsd": {
@@ -1180,6 +1181,34 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
1180
1181
  };
1181
1182
  }
1182
1183
  });
1184
+ // MCP 클라이언트에서 워크스페이스 roots를 가져와 설정 탐색 경로로 등록
1185
+ let _rootsResolved = false;
1186
+ async function ensureWorkspaceRoots() {
1187
+ if (_rootsResolved)
1188
+ return;
1189
+ _rootsResolved = true;
1190
+ try {
1191
+ const result = await server.request({ method: "roots/list" }, { parse: (d) => d });
1192
+ if (result?.roots?.length) {
1193
+ const paths = [];
1194
+ for (const root of result.roots) {
1195
+ try {
1196
+ if (root.uri?.startsWith("file:///")) {
1197
+ paths.push(fileURLToPath(root.uri));
1198
+ }
1199
+ }
1200
+ catch { /* URI 변환 실패 무시 */ }
1201
+ }
1202
+ if (paths.length > 0) {
1203
+ setWorkspaceRoots(paths);
1204
+ console.error(`[aud_mcp_server] Workspace roots: ${paths.join(", ")}`);
1205
+ }
1206
+ }
1207
+ }
1208
+ catch {
1209
+ // 클라이언트가 roots/list를 지원하지 않으면 무시 (CWD 등 다른 전략 사용)
1210
+ }
1211
+ }
1183
1212
  // Start server
1184
1213
  async function main() {
1185
1214
  const transport = new StdioServerTransport();
@@ -22,6 +22,11 @@ export interface SchemaServiceResult {
22
22
  }[];
23
23
  ROWS: any[][];
24
24
  }
25
+ /**
26
+ * MCP 클라이언트의 roots/list 결과에서 워크스페이스 경로를 설정합니다.
27
+ * index.ts에서 서버 초기화 시 호출됩니다.
28
+ */
29
+ export declare function setWorkspaceRoots(roots: string[]): void;
25
30
  /**
26
31
  * i-AUD 서버 접속 정보를 가져옵니다.
27
32
  * 우선순위: 환경변수 → .vscode/settings.json
@@ -9,8 +9,19 @@
9
9
  */
10
10
  import { readFileSync, existsSync } from "fs";
11
11
  import { join, dirname, resolve } from "path";
12
+ import { fileURLToPath } from "url";
12
13
  // 캐시: 한 번 읽으면 재사용
13
14
  let _cachedConfig = null;
15
+ // MCP 클라이언트에서 전달받은 워크스페이스 루트 경로들
16
+ let _workspaceRoots = [];
17
+ /**
18
+ * MCP 클라이언트의 roots/list 결과에서 워크스페이스 경로를 설정합니다.
19
+ * index.ts에서 서버 초기화 시 호출됩니다.
20
+ */
21
+ export function setWorkspaceRoots(roots) {
22
+ _workspaceRoots = roots;
23
+ _cachedConfig = null; // 캐시 초기화하여 새로운 경로로 재탐색
24
+ }
14
25
  /**
15
26
  * JSONC(주석 포함 JSON) 문자열에서 주석을 제거합니다.
16
27
  */
@@ -49,26 +60,81 @@ function stripJsonComments(text) {
49
60
  return result;
50
61
  }
51
62
  /**
52
- * CWD에서 상위 디렉토리로 올라가며 .vscode/settings.json 을 찾습니다.
63
+ * 주어진 디렉토리에서 상위로 올라가며 aud.config가 포함된 .vscode/settings.json 을 찾습니다.
64
+ */
65
+ function searchUpward(startDir) {
66
+ let dir = startDir;
67
+ for (let depth = 0; depth < 10; depth++) {
68
+ const candidate = join(dir, ".vscode", "settings.json");
69
+ if (existsSync(candidate)) {
70
+ // aud.config 가 포함되어 있는지 확인
71
+ try {
72
+ const raw = readFileSync(candidate, "utf-8");
73
+ if (raw.includes("aud.config"))
74
+ return candidate;
75
+ }
76
+ catch { /* 읽기 실패 시 건너뛰기 */ }
77
+ }
78
+ const parent = dirname(dir);
79
+ if (parent === dir)
80
+ break; // root
81
+ dir = parent;
82
+ }
83
+ return null;
84
+ }
85
+ /**
86
+ * 여러 전략으로 .vscode/settings.json 을 찾습니다.
53
87
  */
54
88
  function findVscodeSettings() {
89
+ const tried = [];
55
90
  // 1) 환경변수로 직접 경로 지정
56
91
  if (process.env.AUD_SETTINGS_PATH) {
57
92
  const p = resolve(process.env.AUD_SETTINGS_PATH);
93
+ tried.push(`AUD_SETTINGS_PATH=${p}`);
58
94
  if (existsSync(p))
59
95
  return p;
60
96
  }
61
- // 2) CWD에서 상위로 탐색
62
- let dir = process.cwd();
63
- for (let depth = 0; depth < 10; depth++) {
64
- const candidate = join(dir, ".vscode", "settings.json");
65
- if (existsSync(candidate))
66
- return candidate;
67
- const parent = dirname(dir);
68
- if (parent === dir)
69
- break; // root
70
- dir = parent;
97
+ // 2) AUD_WORKSPACE_DIR 환경변수
98
+ if (process.env.AUD_WORKSPACE_DIR) {
99
+ const dir = resolve(process.env.AUD_WORKSPACE_DIR);
100
+ tried.push(`AUD_WORKSPACE_DIR=${dir}`);
101
+ const found = searchUpward(dir);
102
+ if (found)
103
+ return found;
104
+ }
105
+ // 3) MCP 클라이언트가 알려준 워크스페이스 루트에서 탐색
106
+ for (const root of _workspaceRoots) {
107
+ tried.push(`root=${root}`);
108
+ const fromRoot = searchUpward(root);
109
+ if (fromRoot)
110
+ return fromRoot;
111
+ }
112
+ // 4) CWD에서 상위로 탐색
113
+ const cwd = process.cwd();
114
+ tried.push(`cwd=${cwd}`);
115
+ const fromCwd = searchUpward(cwd);
116
+ if (fromCwd)
117
+ return fromCwd;
118
+ // 5) 이 스크립트 파일(__dirname)에서 상위로 탐색 (로컬 설치 시 프로젝트 내부)
119
+ try {
120
+ const scriptDir = dirname(fileURLToPath(import.meta.url));
121
+ tried.push(`__dirname=${scriptDir}`);
122
+ const fromScript = searchUpward(scriptDir);
123
+ if (fromScript)
124
+ return fromScript;
125
+ }
126
+ catch { /* import.meta.url 미지원 환경 무시 */ }
127
+ // 6) process.argv[1] (실행된 스크립트 경로)에서 상위로 탐색
128
+ if (process.argv[1]) {
129
+ const argvDir = dirname(resolve(process.argv[1]));
130
+ tried.push(`argv[1]=${argvDir}`);
131
+ const fromArgv = searchUpward(argvDir);
132
+ if (fromArgv)
133
+ return fromArgv;
71
134
  }
135
+ // 모든 전략 실패 — 진단 로그 출력 (stderr → MCP 클라이언트 로그)
136
+ process.stderr.write(`[aud_mcp_server] .vscode/settings.json (aud.config) not found.\n`
137
+ + ` Searched from: ${tried.join(", ")}\n`);
72
138
  return null;
73
139
  }
74
140
  /**
@@ -89,11 +155,12 @@ function loadFromVscodeSettings() {
89
155
  const apiKey = audConfig.ApiKey || "";
90
156
  const userName = audConfig.UserName || "";
91
157
  if (serviceUrl && apiKey && userName) {
158
+ process.stderr.write(`[aud_mcp_server] Config loaded from: ${settingsPath}\n`);
92
159
  return { serviceUrl, apiKey, userName };
93
160
  }
94
161
  }
95
- catch {
96
- // 파싱 실패 무시
162
+ catch (e) {
163
+ process.stderr.write(`[aud_mcp_server] Failed to parse ${settingsPath}: ${e.message}\n`);
97
164
  }
98
165
  return null;
99
166
  }
@@ -131,7 +198,7 @@ export function isAudConfigured() {
131
198
  /**
132
199
  * PACKET JSON을 구성합니다. (VS Code Extension의 getPacketText와 동일한 구조)
133
200
  */
134
- function buildPacket(config, scriptCode, params) {
201
+ function buildPacket(config, scriptCode, script, params) {
135
202
  const packet = {
136
203
  AuthInfo: { USER_ID: config.userName },
137
204
  ParamSet: [
@@ -141,7 +208,8 @@ function buildPacket(config, scriptCode, params) {
141
208
  DataSet: [],
142
209
  JScript: {
143
210
  Code: scriptCode,
144
- Type: "1",
211
+ Encryped: true,
212
+ Command: script
145
213
  },
146
214
  };
147
215
  return JSON.stringify(packet);
@@ -163,7 +231,7 @@ export async function callSchemaService(schemaType, params) {
163
231
  ];
164
232
  const url = config.serviceUrl
165
233
  + (config.serviceUrl.endsWith("/") ? "servlet/DataSet.maf" : "/servlet/DataSet.maf");
166
- const packetStr = buildPacket(config, "@AUD_SAVE_SERVICE@SCHEMA_SERVICE", allParams);
234
+ const packetStr = buildPacket(config, "@AUD_SAVE_SERVICE@SCHEMA_SERVICE", "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", allParams);
167
235
  // multipart/form-data 형식으로 전송 (VS Code Extension과 동일)
168
236
  const formBody = new URLSearchParams();
169
237
  formBody.append("ENC", "false");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bimatrix-aud-platform/aud_mcp_server",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "MCP Server for i-AUD MTSD document validation and generation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",