@panguard-ai/panguard-mcp 1.0.0 → 1.2.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.
@@ -1,176 +0,0 @@
1
- /**
2
- * Platform Detector - Detect installed AI agent runtimes
3
- * 平台偵測器 - 偵測已安裝的 AI Agent 執行環境
4
- *
5
- * Detects Claude Code, Claude Desktop, Cursor, OpenClaw, and Codex.
6
- * 偵測 Claude Code、Claude Desktop、Cursor、OpenClaw 和 Codex。
7
- *
8
- * @module @panguard-ai/panguard-mcp/config/platform-detector
9
- */
10
- import { existsSync, readFileSync } from 'node:fs';
11
- import { join } from 'node:path';
12
- import { homedir, platform } from 'node:os';
13
- import { execFile, execFileSync } from 'node:child_process';
14
- import { createLogger } from '@panguard-ai/core';
15
- const logger = createLogger('panguard-mcp:platform-detector');
16
- /** Check if a command exists on PATH. */
17
- function commandExists(cmd) {
18
- if (!/^[a-zA-Z0-9_.-]+$/.test(cmd))
19
- return Promise.resolve(false);
20
- return new Promise((resolve) => {
21
- const bin = platform() === 'win32' ? 'where' : 'which';
22
- execFile(bin, [cmd], (err) => resolve(!err));
23
- });
24
- }
25
- /** Check if a JSON config file has a panguard MCP server entry. */
26
- function hasPanguardMCPEntry(filePath) {
27
- if (!existsSync(filePath))
28
- return false;
29
- try {
30
- const parsed = JSON.parse(readFileSync(filePath, 'utf-8'));
31
- if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
32
- const servers = parsed['mcpServers'];
33
- if (servers && typeof servers === 'object' && !Array.isArray(servers)) {
34
- return 'panguard' in servers;
35
- }
36
- }
37
- return false;
38
- }
39
- catch {
40
- return false;
41
- }
42
- }
43
- /** Check if Claude Code has panguard MCP configured via `claude mcp list`. */
44
- function hasClaudeCodePanguard() {
45
- try {
46
- const output = execFileSync('claude', ['mcp', 'list'], {
47
- timeout: 10_000,
48
- stdio: 'pipe',
49
- }).toString();
50
- return output.includes('panguard');
51
- }
52
- catch {
53
- // Fallback: check JSON config
54
- return hasPanguardMCPEntry(getClaudeCodeConfigPath());
55
- }
56
- }
57
- /** Check if OpenClaw has the panguard skill installed. */
58
- function hasOpenClawSkill() {
59
- return existsSync(getOpenClawSkillPath());
60
- }
61
- /** Get the MCP config path for Claude Desktop based on OS. */
62
- function getClaudeDesktopConfigPath() {
63
- const home = homedir();
64
- switch (platform()) {
65
- case 'darwin':
66
- return join(home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json');
67
- case 'win32':
68
- return join(process.env['APPDATA'] ?? join(home, 'AppData', 'Roaming'), 'Claude', 'claude_desktop_config.json');
69
- default:
70
- return join(home, '.config', 'claude', 'claude_desktop_config.json');
71
- }
72
- }
73
- /** Get the MCP settings path for Claude Code. */
74
- function getClaudeCodeConfigPath() {
75
- return join(homedir(), '.claude', 'settings.local.json');
76
- }
77
- /** Get the MCP config path for Cursor. */
78
- function getCursorConfigPath() {
79
- return join(homedir(), '.cursor', 'mcp.json');
80
- }
81
- /** Get the OpenClaw skill installation path for Panguard. */
82
- function getOpenClawSkillPath() {
83
- return join(homedir(), '.openclaw', 'skills', 'panguard', 'SKILL.md');
84
- }
85
- /** Get the OpenClaw skills directory for Panguard. */
86
- function getOpenClawSkillDir() {
87
- return join(homedir(), '.openclaw', 'skills', 'panguard');
88
- }
89
- /** Get the MCP config path for Codex. */
90
- function getCodexConfigPath() {
91
- return join(homedir(), '.codex', 'mcp.json');
92
- }
93
- /**
94
- * Detect all supported AI agent platforms.
95
- * 偵測所有支援的 AI Agent 平台。
96
- *
97
- * @returns Array of detected platforms with their config paths and status.
98
- */
99
- export async function detectPlatforms() {
100
- const platforms = [];
101
- // Claude Code (uses `claude mcp add` CLI, not JSON config)
102
- const claudeCodePath = getClaudeCodeConfigPath();
103
- const claudeCodeDetected = (await commandExists('claude')) || existsSync(join(homedir(), '.claude'));
104
- platforms.push({
105
- id: 'claude-code',
106
- name: 'Claude Code',
107
- configPath: claudeCodePath,
108
- detected: claudeCodeDetected,
109
- alreadyConfigured: hasClaudeCodePanguard(),
110
- });
111
- // Claude Desktop
112
- const claudeDesktopPath = getClaudeDesktopConfigPath();
113
- const claudeDesktopDetected = existsSync(claudeDesktopPath) ||
114
- (platform() === 'darwin' && existsSync('/Applications/Claude.app'));
115
- platforms.push({
116
- id: 'claude-desktop',
117
- name: 'Claude Desktop',
118
- configPath: claudeDesktopPath,
119
- detected: claudeDesktopDetected,
120
- alreadyConfigured: hasPanguardMCPEntry(claudeDesktopPath),
121
- });
122
- // Cursor
123
- const cursorPath = getCursorConfigPath();
124
- const cursorDetected = (await commandExists('cursor')) ||
125
- existsSync(join(homedir(), '.cursor')) ||
126
- (platform() === 'darwin' && existsSync('/Applications/Cursor.app'));
127
- platforms.push({
128
- id: 'cursor',
129
- name: 'Cursor',
130
- configPath: cursorPath,
131
- detected: cursorDetected,
132
- alreadyConfigured: hasPanguardMCPEntry(cursorPath),
133
- });
134
- // OpenClaw (uses native skill system, not MCP)
135
- const openclawSkillDir = getOpenClawSkillDir();
136
- const openclawDetected = (await commandExists('openclaw')) || existsSync(join(homedir(), '.openclaw'));
137
- platforms.push({
138
- id: 'openclaw',
139
- name: 'OpenClaw',
140
- configPath: openclawSkillDir,
141
- detected: openclawDetected,
142
- alreadyConfigured: hasOpenClawSkill(),
143
- });
144
- // Codex
145
- const codexPath = getCodexConfigPath();
146
- const codexDetected = (await commandExists('codex')) || existsSync(join(homedir(), '.codex'));
147
- platforms.push({
148
- id: 'codex',
149
- name: 'Codex CLI',
150
- configPath: codexPath,
151
- detected: codexDetected,
152
- alreadyConfigured: hasPanguardMCPEntry(codexPath),
153
- });
154
- const detected = platforms.filter((p) => p.detected);
155
- logger.info(`Detected ${detected.length} platform(s): ${detected.map((p) => p.name).join(', ') || 'none'}`);
156
- return platforms;
157
- }
158
- /**
159
- * Get the MCP config path for a specific platform.
160
- * 取得特定平台的 MCP 設定路徑。
161
- */
162
- export function getConfigPath(platformId) {
163
- switch (platformId) {
164
- case 'claude-code':
165
- return getClaudeCodeConfigPath();
166
- case 'claude-desktop':
167
- return getClaudeDesktopConfigPath();
168
- case 'cursor':
169
- return getCursorConfigPath();
170
- case 'openclaw':
171
- return getOpenClawSkillDir();
172
- case 'codex':
173
- return getCodexConfigPath();
174
- }
175
- }
176
- //# sourceMappingURL=platform-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"platform-detector.js","sourceRoot":"","sources":["../../src/config/platform-detector.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,12 +0,0 @@
1
- /**
2
- * Panguard MCP - Public API
3
- * Panguard MCP - 公開 API
4
- *
5
- * MCP server for Panguard AI — control security scanning and guard from
6
- * Claude Desktop, Cursor, or Claude Code via conversation.
7
- * 用於 Panguard AI 的 MCP 伺服器 — 透過對話從 Claude Desktop、Cursor 或 Claude Code 控制安全掃描和守護。
8
- *
9
- * @module @panguard-ai/panguard-mcp
10
- */
11
- export { startMCPServer, getAllToolDefinitions, dispatchTool, PANGUARD_MCP_VERSION, } from './server.js';
12
- //# sourceMappingURL=index.d.ts.map
package/dist/index.js DELETED
@@ -1,12 +0,0 @@
1
- /**
2
- * Panguard MCP - Public API
3
- * Panguard MCP - 公開 API
4
- *
5
- * MCP server for Panguard AI — control security scanning and guard from
6
- * Claude Desktop, Cursor, or Claude Code via conversation.
7
- * 用於 Panguard AI 的 MCP 伺服器 — 透過對話從 Claude Desktop、Cursor 或 Claude Code 控制安全掃描和守護。
8
- *
9
- * @module @panguard-ai/panguard-mcp
10
- */
11
- export { startMCPServer, getAllToolDefinitions, dispatchTool, PANGUARD_MCP_VERSION, } from './server.js';
12
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
package/dist/server.d.ts DELETED
@@ -1,356 +0,0 @@
1
- /**
2
- * Panguard MCP - Server
3
- * Panguard MCP - 伺服器
4
- *
5
- * Main MCP server entry: registers all tools and dispatches incoming requests.
6
- * 主要 MCP 伺服器入口:註冊所有工具並分派傳入請求。
7
- *
8
- * @module @panguard-ai/panguard-mcp/server
9
- */
10
- /** MCP server version / MCP 伺服器版本 */
11
- export declare const PANGUARD_MCP_VERSION: string;
12
- /**
13
- * Returns the complete list of all MCP tool definitions.
14
- * 返回所有 MCP 工具定義的完整清單。
15
- */
16
- export declare function getAllToolDefinitions(): ({
17
- name: string;
18
- description: string;
19
- inputSchema: {
20
- type: "object";
21
- properties: {
22
- depth: {
23
- type: string;
24
- enum: string[];
25
- description: string;
26
- default: string;
27
- };
28
- lang: {
29
- type: string;
30
- enum: string[];
31
- description: string;
32
- default: string;
33
- };
34
- dir?: undefined;
35
- dataDir?: undefined;
36
- mode?: undefined;
37
- limit?: undefined;
38
- severity?: undefined;
39
- ip?: undefined;
40
- duration?: undefined;
41
- reason?: undefined;
42
- output?: undefined;
43
- path?: undefined;
44
- generateReport?: undefined;
45
- };
46
- required?: undefined;
47
- };
48
- } | {
49
- name: string;
50
- description: string;
51
- inputSchema: {
52
- type: "object";
53
- properties: {
54
- dir: {
55
- type: string;
56
- description: string;
57
- default: string;
58
- };
59
- lang: {
60
- type: string;
61
- enum: string[];
62
- default: string;
63
- description?: undefined;
64
- };
65
- depth?: undefined;
66
- dataDir?: undefined;
67
- mode?: undefined;
68
- limit?: undefined;
69
- severity?: undefined;
70
- ip?: undefined;
71
- duration?: undefined;
72
- reason?: undefined;
73
- output?: undefined;
74
- path?: undefined;
75
- generateReport?: undefined;
76
- };
77
- required: string[];
78
- };
79
- } | {
80
- name: string;
81
- description: string;
82
- inputSchema: {
83
- type: "object";
84
- properties: {
85
- dataDir: {
86
- type: string;
87
- description: string;
88
- };
89
- mode: {
90
- type: string;
91
- enum: string[];
92
- description: string;
93
- default?: undefined;
94
- };
95
- depth?: undefined;
96
- lang?: undefined;
97
- dir?: undefined;
98
- limit?: undefined;
99
- severity?: undefined;
100
- ip?: undefined;
101
- duration?: undefined;
102
- reason?: undefined;
103
- output?: undefined;
104
- path?: undefined;
105
- generateReport?: undefined;
106
- };
107
- required?: undefined;
108
- };
109
- } | {
110
- name: string;
111
- description: string;
112
- inputSchema: {
113
- type: "object";
114
- properties: {
115
- dataDir: {
116
- type: string;
117
- description: string;
118
- };
119
- depth?: undefined;
120
- lang?: undefined;
121
- dir?: undefined;
122
- mode?: undefined;
123
- limit?: undefined;
124
- severity?: undefined;
125
- ip?: undefined;
126
- duration?: undefined;
127
- reason?: undefined;
128
- output?: undefined;
129
- path?: undefined;
130
- generateReport?: undefined;
131
- };
132
- required?: undefined;
133
- };
134
- } | {
135
- name: string;
136
- description: string;
137
- inputSchema: {
138
- type: "object";
139
- properties: {
140
- limit: {
141
- type: string;
142
- description: string;
143
- default: number;
144
- };
145
- severity: {
146
- type: string;
147
- enum: string[];
148
- default: string;
149
- };
150
- dataDir: {
151
- type: string;
152
- description: string;
153
- };
154
- depth?: undefined;
155
- lang?: undefined;
156
- dir?: undefined;
157
- mode?: undefined;
158
- ip?: undefined;
159
- duration?: undefined;
160
- reason?: undefined;
161
- output?: undefined;
162
- path?: undefined;
163
- generateReport?: undefined;
164
- };
165
- required?: undefined;
166
- };
167
- } | {
168
- name: string;
169
- description: string;
170
- inputSchema: {
171
- type: "object";
172
- properties: {
173
- ip: {
174
- type: string;
175
- description: string;
176
- };
177
- duration: {
178
- type: string;
179
- description: string;
180
- default: string;
181
- };
182
- reason: {
183
- type: string;
184
- description: string;
185
- };
186
- depth?: undefined;
187
- lang?: undefined;
188
- dir?: undefined;
189
- dataDir?: undefined;
190
- mode?: undefined;
191
- limit?: undefined;
192
- severity?: undefined;
193
- output?: undefined;
194
- path?: undefined;
195
- generateReport?: undefined;
196
- };
197
- required: string[];
198
- };
199
- } | {
200
- name: string;
201
- description: string;
202
- inputSchema: {
203
- type: "object";
204
- properties: {
205
- output: {
206
- type: string;
207
- description: string;
208
- default: string;
209
- };
210
- lang: {
211
- type: string;
212
- enum: string[];
213
- default: string;
214
- description?: undefined;
215
- };
216
- depth: {
217
- type: string;
218
- enum: string[];
219
- default: string;
220
- description?: undefined;
221
- };
222
- dir?: undefined;
223
- dataDir?: undefined;
224
- mode?: undefined;
225
- limit?: undefined;
226
- severity?: undefined;
227
- ip?: undefined;
228
- duration?: undefined;
229
- reason?: undefined;
230
- path?: undefined;
231
- generateReport?: undefined;
232
- };
233
- required?: undefined;
234
- };
235
- } | {
236
- name: string;
237
- description: string;
238
- inputSchema: {
239
- type: "object";
240
- properties: {
241
- dataDir: {
242
- type: string;
243
- description: string;
244
- };
245
- lang: {
246
- type: string;
247
- enum: string[];
248
- default: string;
249
- description?: undefined;
250
- };
251
- mode: {
252
- type: string;
253
- enum: string[];
254
- default: string;
255
- description?: undefined;
256
- };
257
- depth?: undefined;
258
- dir?: undefined;
259
- limit?: undefined;
260
- severity?: undefined;
261
- ip?: undefined;
262
- duration?: undefined;
263
- reason?: undefined;
264
- output?: undefined;
265
- path?: undefined;
266
- generateReport?: undefined;
267
- };
268
- required?: undefined;
269
- };
270
- } | {
271
- name: string;
272
- description: string;
273
- inputSchema: {
274
- type: "object";
275
- properties: {
276
- path: {
277
- type: string;
278
- description: string;
279
- };
280
- depth?: undefined;
281
- lang?: undefined;
282
- dir?: undefined;
283
- dataDir?: undefined;
284
- mode?: undefined;
285
- limit?: undefined;
286
- severity?: undefined;
287
- ip?: undefined;
288
- duration?: undefined;
289
- reason?: undefined;
290
- output?: undefined;
291
- generateReport?: undefined;
292
- };
293
- required: string[];
294
- };
295
- } | {
296
- name: string;
297
- description: string;
298
- inputSchema: {
299
- type: "object";
300
- properties: {
301
- dataDir: {
302
- type: string;
303
- description: string;
304
- };
305
- lang: {
306
- type: string;
307
- enum: string[];
308
- default: string;
309
- description?: undefined;
310
- };
311
- mode: {
312
- type: string;
313
- enum: string[];
314
- default: string;
315
- description?: undefined;
316
- };
317
- generateReport: {
318
- type: string;
319
- description: string;
320
- default: boolean;
321
- };
322
- depth?: undefined;
323
- dir?: undefined;
324
- limit?: undefined;
325
- severity?: undefined;
326
- ip?: undefined;
327
- duration?: undefined;
328
- reason?: undefined;
329
- output?: undefined;
330
- path?: undefined;
331
- };
332
- required?: undefined;
333
- };
334
- })[];
335
- /**
336
- * Dispatch an incoming tool call to the appropriate handler.
337
- * 將傳入的工具呼叫分派給適當的處理程序。
338
- *
339
- * @param name - Tool name / 工具名稱
340
- * @param args - Tool arguments / 工具參數
341
- */
342
- export declare function dispatchTool(name: string, args: Record<string, unknown>): Promise<{
343
- content: {
344
- type: "text";
345
- text: string;
346
- }[];
347
- }>;
348
- /**
349
- * Create and start the MCP server using stdio transport.
350
- * 使用 stdio 傳輸建立並啟動 MCP 伺服器。
351
- *
352
- * This is the main entry point for the MCP server process.
353
- * 這是 MCP 伺服器進程的主要入口點。
354
- */
355
- export declare function startMCPServer(): Promise<void>;
356
- //# sourceMappingURL=server.d.ts.map