From edd56bd03da6301b40fe2be31bed3e13c20cdfc1 Mon Sep 17 00:00:00 2001 From: furao Date: Thu, 11 Jun 2026 15:56:48 +0800 Subject: [PATCH] =?UTF-8?q?[mcp]=20=E4=BF=AE=E5=A4=8D:=20requestCount=20?= =?UTF-8?q?=E6=AD=BB=E8=AE=A1=E6=95=B0=E5=99=A8=E6=94=B9=E4=B8=BA=E7=9C=9F?= =?UTF-8?q?=E5=AE=9E=E5=B7=A5=E5=85=B7=E8=B0=83=E7=94=A8=E8=AE=A1=E6=95=B0?= =?UTF-8?q?,=E6=96=B0=E5=A2=9E=20lastRequestAt/lastTool=20=E5=88=A4?= =?UTF-8?q?=E6=B4=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit requestCount 初始化后从无自增,恒 0,曾被当成转发断裂的证据误诊。 改为包装 tool handler/resource read 计数;不计 router 15s 探活, 计数代表真实业务调用。lastRequestAt/lastTool 作判活主信号。 --- main.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/main.js b/main.js index 8e005bf..e40962a 100644 --- a/main.js +++ b/main.js @@ -431,6 +431,19 @@ async function startMcpServer() { var toolDefs = tdef.defineTools(ctx); var resourceDefs = tdef.defineResources(ctx); + // 只计真实的工具调用 / 资源读取,不计 router 每 15s 的 initialize/tools-list 探活—— + // 否则计数永远在涨,无法用于判断「业务指令到没到编辑器」。 + // lastRequestAt/lastTool 是判活主信号(曾因 requestCount 初始化后无人自增、恒 0,被当成转发断裂误诊)。 + var stats = { startedAt: new Date().toISOString(), requestCount: 0, lastRequestAt: null, lastTool: null }; + function countCall(name, fn) { + return function () { + stats.requestCount++; + stats.lastRequestAt = new Date().toISOString(); + stats.lastTool = name; + return fn.apply(this, arguments); + }; + } + var server = sdk.createServer({ name: 'cc-3-8-x-mcp', version: '2.0.0', @@ -440,7 +453,7 @@ async function startMcpServer() { name: t.name, description: t.description, inputSchema: t.inputSchema, - handler: t.handler, + handler: countCall(t.name, t.handler), }; }), resources: resourceDefs.map(function (r) { @@ -449,7 +462,7 @@ async function startMcpServer() { name: r.name, description: r.description, mimeType: r.mimeType, - read: r.read, + read: countCall('resource:' + r.uri, r.read), }; }), }); @@ -462,7 +475,7 @@ async function startMcpServer() { port: port, toolCount: toolDefs.length, resourceCount: resourceDefs.length, - stats: { startedAt: new Date().toISOString(), requestCount: 0 }, + stats: stats, stop: function () { server.stop(); }, }; writeRegistry();