MCP 代码执行工具
这是一个支持通过MCP(Model Context Protocol)协议执行JavaScript、TypeScript和Python代码的工具。
功能特点
- 执行JavaScript代码(使用Deno运行时)
- 执行TypeScript代码(使用Deno运行时)
- 执行Python代码(使用uv提供隔离环境)
- 捕获并区分脚本中的日志输出和执行结果
- 支持JavaScript/TypeScript的handler函数和Python的handler/main函数作为执行结果的返回点
- 通过环境变量传递参数给脚本
- 可以通过参数控制是否显示日志输出
- 支持MCP SDK集成
- 提供命令行工具和Rust库两种使用方式
安装方法
从源码安装
# 克隆仓库
# 安装工具
安装完成后,script_runner 命令将可用于系统中。
使用方法
直接使用cargo run执行代码
# 执行JavaScript文件
# 执行带参数的JavaScript文件
# 执行TypeScript文件
# 执行带参数的TypeScript文件
# 执行Python文件
# 带参数执行Python文件
# 执行不同类型的Python示例
# 直接执行JavaScript代码
# 直接执行Python代码
作为命令行工具使用
script_runner 是一个基于标准输入/输出的MCP服务器,可以通过以下方式启动:
# 启动MCP服务器
# 启用详细日志输出
启动后,script_runner 将监听标准输入,等待MCP协议格式的JSON请求,并通过标准输出返回响应。
与MCP客户端交互
script_runner 是一个MCP服务器,可以与任何支持MCP协议的客户端交互。例如,可以使用官方的MCP Inspector工具进行交互:
# 安装MCP Inspector
# 使用MCP Inspector连接到script_runner
使用示例脚本
项目提供了两个示例脚本,用于测试与script_runner的交互:
- Node.js客户端示例 (
examples/mcp_client.js):
# 运行Node.js客户端示例
- Bash脚本示例 (
examples/test_mcp.sh):
# 运行Bash脚本示例
作为Rust库引用
本项目不仅提供命令行工具,还可以作为库被其他Rust项目引用。在你的Rust项目中添加依赖:
# Cargo.toml
[]
= { = "https://github.com/yourusername/run_code_rmcp.git" }
然后在你的Rust代码中使用:
use execute_javascript;
use execute_typescript;
use execute_python;
可用工具
通过MCP协议,可以使用以下工具:
-
run_javascript- 执行JavaScript代码- 参数:
code: 要执行的JavaScript代码params: 可选的执行参数
- 参数:
-
run_typescript- 执行TypeScript代码- 参数:
code: 要执行的TypeScript代码params: 可选的执行参数
- 参数:
-
run_python- 执行Python代码- 参数:
code: 要执行的Python代码params: 可选的执行参数
- 参数:
示例
执行JavaScript代码
执行TypeScript代码
执行Python代码
代码结构
每个脚本都应该有一个handler函数(对于JS/TS)或handler/main函数(对于Python)来返回最终结果:
JavaScript示例
// 一些处理代码
console.log;
// 处理函数,将被调用以获取结果
TypeScript示例
// 一些处理代码
console.log("Processing...");
// 处理函数,将被调用以获取结果
function handler(input: any): string {
// 输入包含通过-p/--params传递的参数
console.log("Received input:", input);
// 返回最终结果
return `Hello from TypeScript! Input: ${JSON.stringify(input)}`;
}
Python示例
# 一些处理代码
# 可以使用handler函数(优先)或main函数
# args包含通过-p/--params传递的参数
# 返回最终结果
return f
# 或者使用main函数
# args包含通过-p/--params传递的参数
# 返回最终结果
return f
系统要求
- Rust 1.70.0 或更高版本
- 对于JavaScript/TypeScript执行:Deno
- 对于Python执行:Python 3.8+
许可证
MIT