refactor: 删除旧MCP启动入口

This commit is contained in:
sunlei 2026-05-27 23:35:11 +08:00
parent 344acb5094
commit bc299d2021
5 changed files with 18 additions and 53 deletions

View File

@ -26,6 +26,8 @@ pnpm run self-test
pnpm run cleanup-history -- --dry-run
```
如果本机 Node/npm/pnpm 版本不对,先执行 `nvm ls` 查看已安装版本,再用 `nvm use <version>` 切换到目标版本;不要先扫盘找 `node.exe` 路径。
## MCP 客户端配置
把下面配置加入支持 stdio MCP 的客户端配置里:
@ -35,7 +37,11 @@ pnpm run cleanup-history -- --dry-run
"mcpServers": {
"ktWorkflow": {
"command": "node",
"args": ["D:/MyFiles/KT/mcp/ktWorkflow/src/server.mjs"],
"args": [
"--import",
"file:///D:/MyFiles/KT/mcp/ktWorkflow/node_modules/tsx/dist/loader.mjs",
"D:/MyFiles/KT/mcp/ktWorkflow/src/server.ts"
],
"env": {
"KT_WORKSPACE_ROOT": "D:/MyFiles/KT"
}
@ -78,8 +84,8 @@ pnpm run cleanup-history -- --dry-run
## 开发说明
- 主入口是 `src/server.ts`,工具入参类型集中在 `src/types.ts`
- `src/server.mjs` 只做兼容启动,保留给 MCP 客户端继续使用原来的 `node .../src/server.mjs` 配置
- 如果本机默认 `node` 不是 20+,可通过 `KT_WORKFLOW_NODE` 指定 Node 22 路径
- MCP 客户端直接通过 `node --import tsx loader` 启动 TS 入口,不再保留旧的 `src/server.mjs`
- Node/npm/pnpm 版本异常时优先走 `nvm ls` + `nvm use`,不要用扫盘路径作为第一选择
## 使用建议

View File

@ -2,7 +2,11 @@
"mcpServers": {
"ktWorkflow": {
"command": "node",
"args": ["D:/MyFiles/KT/mcp/ktWorkflow/src/server.mjs"],
"args": [
"--import",
"file:///D:/MyFiles/KT/mcp/ktWorkflow/node_modules/tsx/dist/loader.mjs",
"D:/MyFiles/KT/mcp/ktWorkflow/src/server.ts"
],
"env": {
"KT_WORKSPACE_ROOT": "D:/MyFiles/KT"
}

View File

@ -4,13 +4,10 @@
"private": true,
"type": "module",
"description": "Reusable MCP workflow tools for the KT workspace.",
"bin": {
"kt-workflow-mcp": "src/server.mjs"
},
"scripts": {
"cleanup-history": "node src/server.mjs --cleanup-history",
"self-test": "node src/server.mjs --self-test",
"start": "node src/server.mjs",
"cleanup-history": "node --import ./node_modules/tsx/dist/loader.mjs src/server.ts --cleanup-history",
"self-test": "node --import ./node_modules/tsx/dist/loader.mjs src/server.ts --self-test",
"start": "node --import ./node_modules/tsx/dist/loader.mjs src/server.ts",
"typecheck": "tsc --noEmit"
},
"dependencies": {

View File

@ -1,42 +0,0 @@
#!/usr/bin/env node
import { spawnSync } from 'node:child_process';
import { existsSync } from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
const dirname = path.dirname(fileURLToPath(import.meta.url));
const serverEntry = path.join(dirname, 'server.ts');
const minimumNodeMajor = 20;
function getNodeMajor() {
return Number.parseInt(process.versions.node.split('.')[0] || '0', 10);
}
function getNodeBinary() {
if (process.env.KT_WORKFLOW_NODE && existsSync(process.env.KT_WORKFLOW_NODE)) {
return process.env.KT_WORKFLOW_NODE;
}
if (getNodeMajor() >= minimumNodeMajor) {
return process.execPath;
}
const candidates = [
'C:\\Program Files (x86)\\nvm\\v22.14.0\\node.exe',
'C:\\Program Files\\nodejs\\node.exe',
];
return candidates.find((candidate) => existsSync(candidate)) || process.execPath;
}
const result = spawnSync(
getNodeBinary(),
['--import', 'tsx', serverEntry, ...process.argv.slice(2)],
{
env: process.env,
stdio: 'inherit',
windowsHide: true,
},
);
process.exit(result.status ?? 1);