refactor: 删除旧MCP启动入口
This commit is contained in:
parent
344acb5094
commit
bc299d2021
12
README.md
12
README.md
@ -26,6 +26,8 @@ pnpm run self-test
|
|||||||
pnpm run cleanup-history -- --dry-run
|
pnpm run cleanup-history -- --dry-run
|
||||||
```
|
```
|
||||||
|
|
||||||
|
如果本机 Node/npm/pnpm 版本不对,先执行 `nvm ls` 查看已安装版本,再用 `nvm use <version>` 切换到目标版本;不要先扫盘找 `node.exe` 路径。
|
||||||
|
|
||||||
## MCP 客户端配置
|
## MCP 客户端配置
|
||||||
|
|
||||||
把下面配置加入支持 stdio MCP 的客户端配置里:
|
把下面配置加入支持 stdio MCP 的客户端配置里:
|
||||||
@ -35,7 +37,11 @@ pnpm run cleanup-history -- --dry-run
|
|||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"ktWorkflow": {
|
"ktWorkflow": {
|
||||||
"command": "node",
|
"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": {
|
"env": {
|
||||||
"KT_WORKSPACE_ROOT": "D:/MyFiles/KT"
|
"KT_WORKSPACE_ROOT": "D:/MyFiles/KT"
|
||||||
}
|
}
|
||||||
@ -78,8 +84,8 @@ pnpm run cleanup-history -- --dry-run
|
|||||||
## 开发说明
|
## 开发说明
|
||||||
|
|
||||||
- 主入口是 `src/server.ts`,工具入参类型集中在 `src/types.ts`。
|
- 主入口是 `src/server.ts`,工具入参类型集中在 `src/types.ts`。
|
||||||
- `src/server.mjs` 只做兼容启动,保留给 MCP 客户端继续使用原来的 `node .../src/server.mjs` 配置。
|
- MCP 客户端直接通过 `node --import tsx loader` 启动 TS 入口,不再保留旧的 `src/server.mjs`。
|
||||||
- 如果本机默认 `node` 不是 20+,可通过 `KT_WORKFLOW_NODE` 指定 Node 22 路径。
|
- Node/npm/pnpm 版本异常时优先走 `nvm ls` + `nvm use`,不要用扫盘路径作为第一选择。
|
||||||
|
|
||||||
## 使用建议
|
## 使用建议
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,11 @@
|
|||||||
"mcpServers": {
|
"mcpServers": {
|
||||||
"ktWorkflow": {
|
"ktWorkflow": {
|
||||||
"command": "node",
|
"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": {
|
"env": {
|
||||||
"KT_WORKSPACE_ROOT": "D:/MyFiles/KT"
|
"KT_WORKSPACE_ROOT": "D:/MyFiles/KT"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,13 +4,10 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"description": "Reusable MCP workflow tools for the KT workspace.",
|
"description": "Reusable MCP workflow tools for the KT workspace.",
|
||||||
"bin": {
|
|
||||||
"kt-workflow-mcp": "src/server.mjs"
|
|
||||||
},
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"cleanup-history": "node src/server.mjs --cleanup-history",
|
"cleanup-history": "node --import ./node_modules/tsx/dist/loader.mjs src/server.ts --cleanup-history",
|
||||||
"self-test": "node src/server.mjs --self-test",
|
"self-test": "node --import ./node_modules/tsx/dist/loader.mjs src/server.ts --self-test",
|
||||||
"start": "node src/server.mjs",
|
"start": "node --import ./node_modules/tsx/dist/loader.mjs src/server.ts",
|
||||||
"typecheck": "tsc --noEmit"
|
"typecheck": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@ -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);
|
|
||||||
Loading…
Reference in New Issue
Block a user