From b1a5a1306f327f88bdbe93d93e7beffa010191da Mon Sep 17 00:00:00 2001 From: bingshuo <565183519@qq.com> Date: Wed, 20 May 2026 01:31:13 +0800 Subject: [PATCH] feat: add admin_exec tool + fix repo_write_file PUT method --- server/mcp-server/index.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/server/mcp-server/index.js b/server/mcp-server/index.js index 4dc761a..4f53c5d 100644 --- a/server/mcp-server/index.js +++ b/server/mcp-server/index.js @@ -369,6 +369,19 @@ const TOOLS = [ description: '查看铸渊核心大脑状态(快速唤醒上下文摘要)', inputSchema: { type: 'object', properties: {} }, }, + + { + name: 'admin_exec', + description: '在广州服务器上执行任意Shell命令(管理员工具)', + inputSchema: { + type: 'object', + properties: { + command: { type: 'string', description: '要执行的Shell命令' }, + }, + required: ['command'], + }, + }, + { name: 'brain_update_temporal', description: '更新铸渊时间核心大脑', @@ -425,7 +438,8 @@ async function executeTool(name, args) { body.sha = checkRes.data.sha; // 更新已有文件需要 SHA } - const res = await giteaApi('POST', `/api/v1/repos/${CONFIG.giteaOwner}/${CONFIG.giteaRepo}/contents/${encPath}`, body); + const method2 = body.sha ? 'PUT' : 'POST'; + const res = await giteaApi(method2, `/api/v1/repos/${CONFIG.giteaOwner}/${CONFIG.giteaRepo}/contents/${encPath}`, body); if (res.status >= 200 && res.status < 300) { return `文件已写入: ${filePath} (分支: ${branch}, 提交: ${message})`; } @@ -704,6 +718,14 @@ async function executeTool(name, args) { } } + + case 'admin_exec': { + const cmd = args.command || ''; + if (!cmd) return '请提供要执行的命令'; + const result = gitExec(cmd); + return result.ok ? result.output : '执行失败: ' + result.error; + } + case 'brain_update_temporal': { const result = gitExec(`node scripts/temporal-clock.js`, CONFIG.repoDir); return result.ok ? result.output : result.error;