"添加前端模板和运行代码模块"

This commit is contained in:
Codex
2026-06-01 13:43:09 +08:00
parent 24045274ad
commit 8092c4b1f8
587 changed files with 99761 additions and 0 deletions

View File

@@ -0,0 +1,151 @@
// MCP客户端示例用于与script_runner交互
// 使用方法node mcp_client.js
const { spawn } = require('node:child_process');
const readline = require('node:readline');
// 启动script_runner进程
const scriptRunner = spawn('script_runner', ['--verbose']);
// 创建读取标准输入的接口
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// 处理script_runner的输出
scriptRunner.stdout.on('data', (data) => {
console.log(`接收到MCP服务器响应: ${data}`);
try {
const response = JSON.parse(data);
console.log('解析后的响应:', JSON.stringify(response, null, 2));
} catch (e) {
console.log('无法解析为JSON显示原始输出');
}
});
// 处理script_runner的错误
scriptRunner.stderr.on('data', (data) => {
console.error(`MCP服务器错误: ${data}`);
});
// 处理script_runner进程结束
scriptRunner.on('close', (code) => {
console.log(`MCP服务器进程退出退出码: ${code}`);
rl.close();
});
// 初始化MCP连接
const initializeRequest = {
jsonrpc: '2.0',
id: 1,
method: 'initialize',
params: {
client_info: {
name: 'mcp_client_example'
}
}
};
// 发送初始化请求
console.log('发送初始化请求...');
scriptRunner.stdin.write(JSON.stringify(initializeRequest) + '\n');
// 等待初始化响应后,发送工具列表请求
setTimeout(() => {
const listToolsRequest = {
jsonrpc: '2.0',
id: 2,
method: 'listTools'
};
console.log('发送工具列表请求...');
scriptRunner.stdin.write(JSON.stringify(listToolsRequest) + '\n');
}, 1000);
// 等待工具列表响应后执行JavaScript代码
setTimeout(() => {
const callToolRequest = {
jsonrpc: '2.0',
id: 3,
method: 'callTool',
params: {
name: 'run_javascript',
arguments: {
code: 'console.log("Hello from JavaScript!"); return { message: "Hello, World!", value: 42 };'
}
}
};
console.log('发送JavaScript代码执行请求...');
scriptRunner.stdin.write(JSON.stringify(callToolRequest) + '\n');
}, 2000);
// 等待JavaScript执行响应后执行TypeScript代码
setTimeout(() => {
const callToolRequest = {
jsonrpc: '2.0',
id: 4,
method: 'callTool',
params: {
name: 'run_typescript',
arguments: {
code: 'const greeting: string = "Hello from TypeScript!"; console.log(greeting); return { message: greeting, timestamp: new Date().toISOString() };'
}
}
};
console.log('发送TypeScript代码执行请求...');
scriptRunner.stdin.write(JSON.stringify(callToolRequest) + '\n');
}, 3000);
// 等待TypeScript执行响应后执行Python代码
setTimeout(() => {
const callToolRequest = {
jsonrpc: '2.0',
id: 5,
method: 'callTool',
params: {
name: 'run_python',
arguments: {
code: 'import math\nprint("Hello from Python!")\nresult = math.sqrt(16)\nprint(f"Square root of 16 is {result}")\n{"message": "Hello from Python", "result": result}'
}
}
};
console.log('发送Python代码执行请求...');
scriptRunner.stdin.write(JSON.stringify(callToolRequest) + '\n');
}, 4000);
// 处理用户输入,允许用户发送自定义请求
rl.on('line', (input) => {
if (input.toLowerCase() === 'exit') {
console.log('退出程序...');
scriptRunner.kill();
rl.close();
return;
}
try {
// 尝试解析用户输入为JSON
const request = JSON.parse(input);
console.log('发送自定义请求:', JSON.stringify(request, null, 2));
scriptRunner.stdin.write(JSON.stringify(request) + '\n');
} catch (e) {
console.error('输入不是有效的JSON:', e.message);
}
});
// 显示帮助信息
console.log('\n=== MCP客户端示例 ===');
console.log('已自动发送初始化、工具列表和代码执行请求');
console.log('您可以输入自定义JSON请求或输入"exit"退出程序');
console.log('示例请求:');
console.log(JSON.stringify({
jsonrpc: '2.0',
id: 100,
method: 'callTool',
params: {
name: 'run_javascript',
arguments: {
code: 'return "Hello, " + new Date().toISOString();'
}
}
}, null, 2));
console.log('====================\n');