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

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,6 @@
{
"name": "Script Runner",
"description": "执行JavaScript、TypeScript和Python代码",
"path": "/path/to/script_runner",
"transport": "stdio"
}

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');

View File

@@ -0,0 +1,78 @@
// 这是一个使用JavaScript调用MCP服务的示例
// 你可以使用任何支持MCP协议的客户端来调用我们的服务
// 以下是一个简单的示例,展示如何调用我们的服务
// 假设我们已经连接到了MCP服务
// 执行JavaScript代码示例
async function testRunJavaScript() {
const code = `
// 一些处理代码
console.log("Processing JavaScript...");
function handler(input) {
// 输入包含通过参数传递的数据
console.log("Received input:", input);
// 返回最终结果
return "Hello from JavaScript! Input: " + JSON.stringify(input);
}
`;
const params = { name: "JavaScript User", data: [1, 2, 3] };
// 在实际的MCP客户端中你会使用类似以下的代码调用服务
// const result = await client.run_javascript({ code, params });
// console.log(result);
}
// 执行TypeScript代码示例
async function testRunTypeScript() {
const code = `
// 一些处理代码
console.log("Processing TypeScript...");
function handler(input: any): string {
// 输入包含通过参数传递的数据
console.log("Received input:", input);
// 返回最终结果
return \`Hello from TypeScript! Input: \${JSON.stringify(input)}\`;
}
`;
const params = { name: "TypeScript User", count: 42 };
// 在实际的MCP客户端中你会使用类似以下的代码调用服务
// const result = await client.run_typescript({ code, params });
// console.log(result);
}
// 执行Python代码示例
async function testRunPython() {
const code = `
# 一些处理代码
print("Processing Python...")
def handler(args):
# args 包含通过参数传递的数据
print(f"Received args: {args}")
# 返回最终结果
return f"Hello from Python! Args: {args}"
`;
const params = { name: "Python User", values: [10, 20, 30] };
// 在实际的MCP客户端中你会使用类似以下的代码调用服务
// const result = await client.run_python({ code, params });
// console.log(result);
}
// 在实际的MCP客户端中你可以按顺序调用这些函数
// await testRunJavaScript();
// await testRunTypeScript();
// await testRunPython();
// 注意:这个文件只是一个示例,不能直接运行
// 你需要使用支持MCP协议的客户端如Cursor来调用我们的服务

View File

@@ -0,0 +1,21 @@
#!/bin/bash
# 测试script_runner的简单bash脚本
# 初始化请求
echo "发送初始化请求..."
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"client_info":{"name":"test_client"}}}' | script_runner
# 等待一下
sleep 1
# 列出工具请求
echo -e "\n发送列出工具请求..."
echo '{"jsonrpc":"2.0","id":2,"method":"listTools"}' | script_runner
# 等待一下
sleep 1
# 执行JavaScript代码
echo -e "\n发送JavaScript代码执行请求..."
echo '{"jsonrpc":"2.0","id":3,"method":"callTool","params":{"name":"run_javascript","arguments":{"code":"console.log(\"Hello from JavaScript!\"); return { message: \"Hello, World!\", value: 42 };"}}}' | script_runner