mcp-log-query-server 3.7.1 → 3.8.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/config.js +2 -2
- package/index.js +42 -0
- package/package.json +1 -1
- package/ssh-client.js +0 -2
package/config.js
CHANGED
|
@@ -149,8 +149,8 @@ export const SERVICES = {
|
|
|
149
149
|
description: '养老设备告警服务',
|
|
150
150
|
namespace: 'saas-itest',
|
|
151
151
|
podPattern: 'clife-senior-device-warn-app',
|
|
152
|
-
logPath: '/www/logs/clife-senior-device-warn-app
|
|
153
|
-
logFile: '
|
|
152
|
+
logPath: '/www/logs/clife-senior-device-warn-app',
|
|
153
|
+
logFile: 'application.out',
|
|
154
154
|
aliases: ['device-warn', '设备告警']
|
|
155
155
|
},
|
|
156
156
|
'clife-senior-dispatch': {
|
package/index.js
CHANGED
|
@@ -332,6 +332,30 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
332
332
|
required: ['workspace_path']
|
|
333
333
|
}
|
|
334
334
|
},
|
|
335
|
+
// ========== 自定义命令工具 ==========
|
|
336
|
+
{
|
|
337
|
+
name: 'exec_in_pod',
|
|
338
|
+
description: '在指定 pod 内执行自定义命令。适用于日志文件路径不在默认配置中、需要 ls/cat/wc 等探索性操作、或需要自定义 grep/tail 参数的场景。',
|
|
339
|
+
inputSchema: {
|
|
340
|
+
type: 'object',
|
|
341
|
+
properties: {
|
|
342
|
+
pod: {
|
|
343
|
+
type: 'string',
|
|
344
|
+
description: 'Pod 名称或名称模式(支持部分匹配)'
|
|
345
|
+
},
|
|
346
|
+
command: {
|
|
347
|
+
type: 'string',
|
|
348
|
+
description: '要在 pod 内执行的命令,如 grep -C 5 "keyword" /www/logs/app/application.out'
|
|
349
|
+
},
|
|
350
|
+
namespace: {
|
|
351
|
+
type: 'string',
|
|
352
|
+
description: 'K8s namespace,默认 saas-itest',
|
|
353
|
+
default: 'saas-itest'
|
|
354
|
+
}
|
|
355
|
+
},
|
|
356
|
+
required: ['pod', 'command']
|
|
357
|
+
}
|
|
358
|
+
},
|
|
335
359
|
// ========== Loki 生产环境工具 ==========
|
|
336
360
|
{
|
|
337
361
|
name: 'list_loki_environments',
|
|
@@ -821,6 +845,24 @@ async function handleToolCall(name, args, signal) {
|
|
|
821
845
|
};
|
|
822
846
|
}
|
|
823
847
|
|
|
848
|
+
// ========== 自定义命令工具处理 ==========
|
|
849
|
+
case 'exec_in_pod': {
|
|
850
|
+
const namespace = args.namespace || DEFAULT_NAMESPACE;
|
|
851
|
+
const podPattern = args.pod;
|
|
852
|
+
const command = args.command;
|
|
853
|
+
|
|
854
|
+
const cmd = `kubectl exec $(kubectl get pod -n ${namespace} -o name | grep ${podPattern} | head -1) -n ${namespace} -- ${command}`;
|
|
855
|
+
log(`[MCP] exec_in_pod: pod=${podPattern}, command=${command}`);
|
|
856
|
+
const result = await executeKubectl(cmd, { signal });
|
|
857
|
+
|
|
858
|
+
return {
|
|
859
|
+
content: [{
|
|
860
|
+
type: 'text',
|
|
861
|
+
text: `## Pod 命令执行结果\n\n**Pod**: ${podPattern}\n**Namespace**: ${namespace}\n**Command**: \`${command}\`\n\n\`\`\`\n${result}\n\`\`\``
|
|
862
|
+
}]
|
|
863
|
+
};
|
|
864
|
+
}
|
|
865
|
+
|
|
824
866
|
// ========== Loki 生产环境工具处理 ==========
|
|
825
867
|
case 'list_loki_environments': {
|
|
826
868
|
const envs = getLokiEnvList();
|
package/package.json
CHANGED
package/ssh-client.js
CHANGED
|
@@ -229,8 +229,6 @@ function buildKubectlCommand(service, logCommand) {
|
|
|
229
229
|
const file = logFile || 'normal.log';
|
|
230
230
|
const fullPath = `${logPath}/${file}`;
|
|
231
231
|
|
|
232
|
-
// 构建完整命令
|
|
233
|
-
// 例如: kubectl exec pod/xxx -n namespace -- tail -100 /path/to/normal.log
|
|
234
232
|
return `kubectl exec $(kubectl get pod -n ${namespace} -o name | grep ${podPattern} | head -1) -n ${namespace} -- ${logCommand} ${fullPath}`;
|
|
235
233
|
}
|
|
236
234
|
|