@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.
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-config-reader.d.ts +8 -0
- package/dist/config/mcp-config-reader.d.ts.map +1 -1
- package/dist/config/mcp-config-reader.js +35 -1
- package/dist/config/mcp-config-reader.js.map +1 -1
- package/package.json +5 -5
- package/dist/cli/index.d.ts +0 -13
- package/dist/cli/index.js +0 -67
- package/dist/cli/index.js.map +0 -1
- package/dist/config/mcp-injector.d.ts +0 -40
- package/dist/config/mcp-injector.js +0 -294
- package/dist/config/mcp-injector.js.map +0 -1
- package/dist/config/platform-detector.d.ts +0 -30
- package/dist/config/platform-detector.js +0 -176
- package/dist/config/platform-detector.js.map +0 -1
- package/dist/index.d.ts +0 -12
- package/dist/index.js +0 -12
- package/dist/index.js.map +0 -1
- package/dist/server.d.ts +0 -356
- package/dist/server.js +0 -323
- package/dist/server.js.map +0 -1
- package/dist/tools/guard-tools.d.ts +0 -62
- package/dist/tools/guard-tools.d.ts.map +0 -1
- package/dist/tools/guard-tools.js +0 -356
- package/dist/tools/guard-tools.js.map +0 -1
- package/dist/tools/manage-tools.d.ts +0 -65
- package/dist/tools/manage-tools.js +0 -299
- package/dist/tools/manage-tools.js.map +0 -1
- package/dist/tools/scan-tools.d.ts +0 -46
- package/dist/tools/scan-tools.js +0 -157
- package/dist/tools/scan-tools.js.map +0 -1
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Panguard MCP - Guard Tools
|
|
3
|
-
* Panguard MCP - 守護工具
|
|
4
|
-
*
|
|
5
|
-
* Implements panguard_guard_start, panguard_guard_stop, panguard_status,
|
|
6
|
-
* and panguard_alerts MCP tools.
|
|
7
|
-
* 實作 panguard_guard_start、panguard_guard_stop、panguard_status 和 panguard_alerts MCP 工具。
|
|
8
|
-
*
|
|
9
|
-
* @module @panguard-ai/panguard-mcp/tools/guard-tools
|
|
10
|
-
*/
|
|
11
|
-
import { promises as fs, existsSync, readFileSync, openSync, closeSync } from 'node:fs';
|
|
12
|
-
import { spawn } from 'node:child_process';
|
|
13
|
-
import { createRequire } from 'node:module';
|
|
14
|
-
import { fileURLToPath } from 'node:url';
|
|
15
|
-
import os from 'node:os';
|
|
16
|
-
import path from 'node:path';
|
|
17
|
-
/**
|
|
18
|
-
* Resolve the guard data directory from args or default.
|
|
19
|
-
* 從參數或預設值解析守護資料目錄。
|
|
20
|
-
*/
|
|
21
|
-
function resolveDataDir(args) {
|
|
22
|
-
return args['dataDir'] ?? path.join(os.homedir(), '.panguard-guard');
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Execute panguard_guard_start — start the real-time threat monitoring daemon.
|
|
26
|
-
* 執行 panguard_guard_start — 啟動即時威脅監控常駐程式。
|
|
27
|
-
*
|
|
28
|
-
* Spawns the guard daemon as a detached background process with stdio
|
|
29
|
-
* redirected to a log file, so it does not interfere with MCP stdio transport.
|
|
30
|
-
* 將守護常駐程式作為分離的背景進程啟動,stdio 重導向到日誌檔案。
|
|
31
|
-
*/
|
|
32
|
-
export async function executeGuardStart(args) {
|
|
33
|
-
const dataDir = resolveDataDir(args);
|
|
34
|
-
const mode = args['mode'] ?? 'learning';
|
|
35
|
-
try {
|
|
36
|
-
await fs.mkdir(dataDir, { recursive: true });
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
// Directory may already exist
|
|
40
|
-
}
|
|
41
|
-
// Check if guard is already running
|
|
42
|
-
const pidFile = path.join(dataDir, 'panguard-guard.pid');
|
|
43
|
-
try {
|
|
44
|
-
const pidContent = await fs.readFile(pidFile, 'utf-8');
|
|
45
|
-
const existingPid = parseInt(pidContent.trim(), 10);
|
|
46
|
-
if (!isNaN(existingPid)) {
|
|
47
|
-
try {
|
|
48
|
-
process.kill(existingPid, 0);
|
|
49
|
-
// Process exists — guard is already running
|
|
50
|
-
return {
|
|
51
|
-
content: [
|
|
52
|
-
{
|
|
53
|
-
type: 'text',
|
|
54
|
-
text: JSON.stringify({
|
|
55
|
-
status: 'already_running',
|
|
56
|
-
pid: existingPid,
|
|
57
|
-
dataDir,
|
|
58
|
-
mode,
|
|
59
|
-
message: `Guard engine is already running (PID: ${existingPid}).`,
|
|
60
|
-
}, null, 2),
|
|
61
|
-
},
|
|
62
|
-
],
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
catch {
|
|
66
|
-
// Process not found — stale PID file, continue to start
|
|
67
|
-
await fs.unlink(pidFile).catch(() => undefined);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
catch {
|
|
72
|
-
// No PID file — proceed to start
|
|
73
|
-
}
|
|
74
|
-
// Resolve the panguard-guard CLI script path
|
|
75
|
-
let guardCliScript;
|
|
76
|
-
try {
|
|
77
|
-
const _require = createRequire(import.meta.url);
|
|
78
|
-
const guardMainPath = _require.resolve('@panguard-ai/panguard-guard');
|
|
79
|
-
guardCliScript = path.join(path.dirname(guardMainPath), 'cli', 'index.js');
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
// Fallback: try resolving via import.meta.resolve
|
|
83
|
-
try {
|
|
84
|
-
const guardMainUrl = import.meta.resolve('@panguard-ai/panguard-guard');
|
|
85
|
-
guardCliScript = path.join(fileURLToPath(guardMainUrl), '..', 'cli', 'index.js');
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
return {
|
|
89
|
-
content: [
|
|
90
|
-
{
|
|
91
|
-
type: 'text',
|
|
92
|
-
text: JSON.stringify({
|
|
93
|
-
status: 'error',
|
|
94
|
-
message: 'Could not resolve @panguard-ai/panguard-guard package. Is it installed?',
|
|
95
|
-
}, null, 2),
|
|
96
|
-
},
|
|
97
|
-
],
|
|
98
|
-
isError: true,
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// Spawn guard as a detached background process
|
|
103
|
-
const logPath = path.join(dataDir, 'guard.log');
|
|
104
|
-
let logFd;
|
|
105
|
-
try {
|
|
106
|
-
logFd = openSync(logPath, 'a');
|
|
107
|
-
}
|
|
108
|
-
catch (err) {
|
|
109
|
-
return {
|
|
110
|
-
content: [
|
|
111
|
-
{
|
|
112
|
-
type: 'text',
|
|
113
|
-
text: JSON.stringify({
|
|
114
|
-
status: 'error',
|
|
115
|
-
message: `Failed to open log file: ${err instanceof Error ? err.message : String(err)}`,
|
|
116
|
-
}, null, 2),
|
|
117
|
-
},
|
|
118
|
-
],
|
|
119
|
-
isError: true,
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
try {
|
|
123
|
-
const child = spawn(process.execPath, [guardCliScript, 'start'], {
|
|
124
|
-
detached: true,
|
|
125
|
-
stdio: ['ignore', logFd, logFd],
|
|
126
|
-
env: { ...process.env },
|
|
127
|
-
});
|
|
128
|
-
child.unref();
|
|
129
|
-
closeSync(logFd);
|
|
130
|
-
// Wait for PID file to confirm startup (up to 5 seconds)
|
|
131
|
-
let started = false;
|
|
132
|
-
let newPid = null;
|
|
133
|
-
const deadline = Date.now() + 5000;
|
|
134
|
-
while (Date.now() < deadline) {
|
|
135
|
-
if (existsSync(pidFile)) {
|
|
136
|
-
try {
|
|
137
|
-
const content = readFileSync(pidFile, 'utf-8').trim();
|
|
138
|
-
const parsed = parseInt(content, 10);
|
|
139
|
-
if (!isNaN(parsed)) {
|
|
140
|
-
process.kill(parsed, 0);
|
|
141
|
-
started = true;
|
|
142
|
-
newPid = parsed;
|
|
143
|
-
break;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
catch {
|
|
147
|
-
// Not ready yet
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
await new Promise((r) => setTimeout(r, 300));
|
|
151
|
-
}
|
|
152
|
-
if (started) {
|
|
153
|
-
return {
|
|
154
|
-
content: [
|
|
155
|
-
{
|
|
156
|
-
type: 'text',
|
|
157
|
-
text: JSON.stringify({
|
|
158
|
-
status: 'started',
|
|
159
|
-
pid: newPid,
|
|
160
|
-
dataDir,
|
|
161
|
-
mode,
|
|
162
|
-
logFile: logPath,
|
|
163
|
-
message: `Guard engine started successfully (PID: ${newPid}).`,
|
|
164
|
-
}, null, 2),
|
|
165
|
-
},
|
|
166
|
-
],
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
return {
|
|
171
|
-
content: [
|
|
172
|
-
{
|
|
173
|
-
type: 'text',
|
|
174
|
-
text: JSON.stringify({
|
|
175
|
-
status: 'timeout',
|
|
176
|
-
dataDir,
|
|
177
|
-
mode,
|
|
178
|
-
logFile: logPath,
|
|
179
|
-
message: 'Guard engine was spawned but did not confirm startup within 5 seconds. Check the log file for details.',
|
|
180
|
-
}, null, 2),
|
|
181
|
-
},
|
|
182
|
-
],
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
catch (err) {
|
|
187
|
-
closeSync(logFd);
|
|
188
|
-
return {
|
|
189
|
-
content: [
|
|
190
|
-
{
|
|
191
|
-
type: 'text',
|
|
192
|
-
text: JSON.stringify({
|
|
193
|
-
status: 'error',
|
|
194
|
-
message: `Failed to spawn guard process: ${err instanceof Error ? err.message : String(err)}`,
|
|
195
|
-
}, null, 2),
|
|
196
|
-
},
|
|
197
|
-
],
|
|
198
|
-
isError: true,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Execute panguard_guard_stop — stop the real-time threat monitoring daemon.
|
|
204
|
-
* 執行 panguard_guard_stop — 停止即時威脅監控常駐程式。
|
|
205
|
-
*/
|
|
206
|
-
export async function executeGuardStop(args) {
|
|
207
|
-
const dataDir = resolveDataDir(args);
|
|
208
|
-
const pidFile = path.join(dataDir, 'guard.pid');
|
|
209
|
-
let pid = null;
|
|
210
|
-
let stopped = false;
|
|
211
|
-
try {
|
|
212
|
-
const pidContent = await fs.readFile(pidFile, 'utf-8');
|
|
213
|
-
pid = parseInt(pidContent.trim(), 10);
|
|
214
|
-
if (!isNaN(pid)) {
|
|
215
|
-
try {
|
|
216
|
-
process.kill(pid, 'SIGTERM');
|
|
217
|
-
stopped = true;
|
|
218
|
-
// Remove stale PID file
|
|
219
|
-
await fs.unlink(pidFile).catch(() => undefined);
|
|
220
|
-
}
|
|
221
|
-
catch {
|
|
222
|
-
// Process not running — clean up stale PID file
|
|
223
|
-
await fs.unlink(pidFile).catch(() => undefined);
|
|
224
|
-
stopped = false;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
catch {
|
|
229
|
-
// No PID file found
|
|
230
|
-
}
|
|
231
|
-
return {
|
|
232
|
-
content: [
|
|
233
|
-
{
|
|
234
|
-
type: 'text',
|
|
235
|
-
text: JSON.stringify({
|
|
236
|
-
status: stopped ? 'stopped' : 'not_running',
|
|
237
|
-
pid,
|
|
238
|
-
message: stopped
|
|
239
|
-
? `Guard engine (PID: ${pid}) has been sent SIGTERM.`
|
|
240
|
-
: 'Guard engine was not running (no PID file found).',
|
|
241
|
-
}, null, 2),
|
|
242
|
-
},
|
|
243
|
-
],
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Execute panguard_status — get current status of all Panguard services.
|
|
248
|
-
* 執行 panguard_status — 取得所有 Panguard 服務的當前狀態。
|
|
249
|
-
*/
|
|
250
|
-
export async function executeStatus(args) {
|
|
251
|
-
const dataDir = resolveDataDir(args);
|
|
252
|
-
const pidFile = path.join(dataDir, 'guard.pid');
|
|
253
|
-
let isRunning = false;
|
|
254
|
-
let pid = null;
|
|
255
|
-
try {
|
|
256
|
-
const pidContent = await fs.readFile(pidFile, 'utf-8');
|
|
257
|
-
pid = parseInt(pidContent.trim(), 10);
|
|
258
|
-
if (!isNaN(pid)) {
|
|
259
|
-
// Sending signal 0 checks if process exists without killing it
|
|
260
|
-
process.kill(pid, 0);
|
|
261
|
-
isRunning = true;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
catch {
|
|
265
|
-
isRunning = false;
|
|
266
|
-
}
|
|
267
|
-
// Try to read guard config
|
|
268
|
-
let config = {};
|
|
269
|
-
try {
|
|
270
|
-
const configPath = path.join(dataDir, 'config.json');
|
|
271
|
-
const configContent = await fs.readFile(configPath, 'utf-8');
|
|
272
|
-
config = JSON.parse(configContent);
|
|
273
|
-
}
|
|
274
|
-
catch {
|
|
275
|
-
// No config file yet
|
|
276
|
-
}
|
|
277
|
-
// Count recent events as a proxy for threat activity
|
|
278
|
-
let eventCount = 0;
|
|
279
|
-
try {
|
|
280
|
-
const eventsFile = path.join(dataDir, 'events.jsonl');
|
|
281
|
-
const content = await fs.readFile(eventsFile, 'utf-8');
|
|
282
|
-
eventCount = content.trim().split('\n').filter(Boolean).length;
|
|
283
|
-
}
|
|
284
|
-
catch {
|
|
285
|
-
// No events file
|
|
286
|
-
}
|
|
287
|
-
return {
|
|
288
|
-
content: [
|
|
289
|
-
{
|
|
290
|
-
type: 'text',
|
|
291
|
-
text: JSON.stringify({
|
|
292
|
-
guard: {
|
|
293
|
-
running: isRunning,
|
|
294
|
-
pid,
|
|
295
|
-
dataDir,
|
|
296
|
-
mode: config['mode'] ?? 'unknown',
|
|
297
|
-
lang: config['lang'] ?? 'en',
|
|
298
|
-
},
|
|
299
|
-
events: {
|
|
300
|
-
total_logged: eventCount,
|
|
301
|
-
},
|
|
302
|
-
summary: isRunning
|
|
303
|
-
? `Panguard Guard is RUNNING (PID: ${pid}, mode: ${config['mode'] ?? 'unknown'}).`
|
|
304
|
-
: 'Panguard Guard is NOT running. Use panguard_guard_start to start it.',
|
|
305
|
-
}, null, 2),
|
|
306
|
-
},
|
|
307
|
-
],
|
|
308
|
-
};
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Execute panguard_alerts — get recent security alerts from guard event log.
|
|
312
|
-
* 執行 panguard_alerts — 從守護事件日誌取得近期安全告警。
|
|
313
|
-
*/
|
|
314
|
-
export async function executeAlerts(args) {
|
|
315
|
-
const limit = args['limit'] ?? 20;
|
|
316
|
-
const severity = args['severity'] ?? 'all';
|
|
317
|
-
const dataDir = resolveDataDir(args);
|
|
318
|
-
const eventsFile = path.join(dataDir, 'events.jsonl');
|
|
319
|
-
const alerts = [];
|
|
320
|
-
try {
|
|
321
|
-
const content = await fs.readFile(eventsFile, 'utf-8');
|
|
322
|
-
const lines = content.trim().split('\n').filter(Boolean);
|
|
323
|
-
for (const line of lines) {
|
|
324
|
-
try {
|
|
325
|
-
const event = JSON.parse(line);
|
|
326
|
-
if (severity === 'all' || event['severity'] === severity) {
|
|
327
|
-
alerts.push(event);
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
catch {
|
|
331
|
-
// Skip malformed JSONL lines
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
catch {
|
|
336
|
-
// No events file yet — guard may not have started
|
|
337
|
-
}
|
|
338
|
-
// Return the most recent `limit` alerts
|
|
339
|
-
const recentAlerts = alerts.slice(-Math.max(1, limit));
|
|
340
|
-
return {
|
|
341
|
-
content: [
|
|
342
|
-
{
|
|
343
|
-
type: 'text',
|
|
344
|
-
text: JSON.stringify({
|
|
345
|
-
total_alerts: recentAlerts.length,
|
|
346
|
-
filter: { severity, limit },
|
|
347
|
-
alerts: recentAlerts,
|
|
348
|
-
summary: recentAlerts.length === 0
|
|
349
|
-
? 'No recent alerts. System appears clean.'
|
|
350
|
-
: `${recentAlerts.length} recent alert(s) detected.`,
|
|
351
|
-
}, null, 2),
|
|
352
|
-
},
|
|
353
|
-
],
|
|
354
|
-
};
|
|
355
|
-
}
|
|
356
|
-
//# sourceMappingURL=guard-tools.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"guard-tools.js","sourceRoot":"","sources":["../../src/tools/guard-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Panguard MCP - Management Tools
|
|
3
|
-
* Panguard MCP - 管理工具
|
|
4
|
-
*
|
|
5
|
-
* Implements panguard_init, panguard_deploy, panguard_block_ip,
|
|
6
|
-
* and panguard_generate_report MCP tools.
|
|
7
|
-
* 實作 panguard_init、panguard_deploy、panguard_block_ip 和 panguard_generate_report MCP 工具。
|
|
8
|
-
*
|
|
9
|
-
* @module @panguard-ai/panguard-mcp/tools/manage-tools
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* Execute panguard_block_ip — manually block an IP address.
|
|
13
|
-
* 執行 panguard_block_ip — 手動封鎖 IP 位址。
|
|
14
|
-
*/
|
|
15
|
-
export declare function executeBlockIP(args: Record<string, unknown>): Promise<{
|
|
16
|
-
content: {
|
|
17
|
-
type: "text";
|
|
18
|
-
text: string;
|
|
19
|
-
}[];
|
|
20
|
-
isError: boolean;
|
|
21
|
-
} | {
|
|
22
|
-
content: {
|
|
23
|
-
type: "text";
|
|
24
|
-
text: string;
|
|
25
|
-
}[];
|
|
26
|
-
isError?: undefined;
|
|
27
|
-
}>;
|
|
28
|
-
/**
|
|
29
|
-
* Execute panguard_generate_report — run scan and generate a PDF compliance report.
|
|
30
|
-
* 執行 panguard_generate_report — 執行掃描並生成 PDF 合規報告。
|
|
31
|
-
*/
|
|
32
|
-
export declare function executeGenerateReport(args: Record<string, unknown>): Promise<{
|
|
33
|
-
content: {
|
|
34
|
-
type: "text";
|
|
35
|
-
text: string;
|
|
36
|
-
}[];
|
|
37
|
-
isError?: undefined;
|
|
38
|
-
} | {
|
|
39
|
-
content: {
|
|
40
|
-
type: "text";
|
|
41
|
-
text: string;
|
|
42
|
-
}[];
|
|
43
|
-
isError: boolean;
|
|
44
|
-
}>;
|
|
45
|
-
/**
|
|
46
|
-
* Execute panguard_init — initialize Panguard configuration with defaults.
|
|
47
|
-
* 執行 panguard_init — 以預設值初始化 Panguard 配置。
|
|
48
|
-
*/
|
|
49
|
-
export declare function executeInit(args: Record<string, unknown>): Promise<{
|
|
50
|
-
content: {
|
|
51
|
-
type: "text";
|
|
52
|
-
text: string;
|
|
53
|
-
}[];
|
|
54
|
-
}>;
|
|
55
|
-
/**
|
|
56
|
-
* Execute panguard_deploy — one-click setup: init + scan + optional report.
|
|
57
|
-
* 執行 panguard_deploy — 一鍵設定:初始化 + 掃描 + 可選報告。
|
|
58
|
-
*/
|
|
59
|
-
export declare function executeDeploy(args: Record<string, unknown>): Promise<{
|
|
60
|
-
content: {
|
|
61
|
-
type: "text";
|
|
62
|
-
text: string;
|
|
63
|
-
}[];
|
|
64
|
-
}>;
|
|
65
|
-
//# sourceMappingURL=manage-tools.d.ts.map
|