Code Runner

编码与调试

by dravidsajinraj-iex

在隔离环境中安全执行JavaScript与Python,支持传入动态变量,并返回输出、错误和资源使用情况,默认阻止危险操作。

什么是 Code Runner

在隔离环境中安全执行JavaScript与Python,支持传入动态变量,并返回输出、错误和资源使用情况,默认阻止危险操作。

README

Code Runner MCP Server

A secure Model Context Protocol (MCP) server for executing JavaScript and Python code in isolated environments with comprehensive security restrictions.

Transport Support

This MCP server supports two transport methods:

  • Smithery Transport: For development and testing with the Smithery playground
  • Stdio Transport: For integration with MCP clients like Claude Desktop

Both transports provide the same functionality and security features.

Features

  • Multi-language Support: Execute JavaScript and Python code
  • Dynamic Variables: Pass multiple input variables as key-value pairs
  • Security-First Design: Comprehensive blocking of dangerous operations
  • Timeout Protection: Configurable execution timeouts
  • Memory Monitoring: Basic memory usage estimation
  • Input/Output Handling: Support for stdin/stdout/stderr capture
  • Error Handling: Detailed error reporting with sanitized stack traces

Supported Languages

JavaScript

  • Executed using VM2 for secure sandboxing
  • Blocks access to Node.js modules and file system
  • Supports basic JavaScript operations and built-in objects

Python

  • Executed using subprocess isolation with system Python3
  • Blocks dangerous modules (os, sys, subprocess, socket, etc.)
  • Allows safe modules (math, random, datetime, json, etc.)
  • Prevents file operations and code injection

Security Features

Blocked Operations

  • File system access (open, file operations)
  • Network operations (socket, urllib, requests)
  • System operations (os, sys, subprocess)
  • Code injection (exec, eval)
  • Infinite loops and resource exhaustion

Allowed Operations

  • Mathematical computations
  • String and data manipulation
  • JSON processing
  • Basic algorithms and data structures
  • Safe built-in functions

Installation

bash
npm install

Usage

Development (Smithery)

bash
npm run dev

Build

bash
npm run build

Start (Smithery)

bash
npm start

Stdio Mode (MCP Clients)

bash
# Start stdio server for MCP clients
npm run start:stdio

# Or run directly
node dist/stdio.js

For detailed stdio usage and MCP client integration, see STDIO_USAGE.md.

Configuration

The server uses the following default configurations:

  • Max Execution Time: 5000ms (5 seconds)
  • Memory Limit: Basic estimation and monitoring
  • Timeout Handling: Graceful termination of long-running code

API

Execute Code

Execute code in the specified language with optional input.

Tool: execute_code

Parameters:

  • language: "javascript" or "python"
  • code: The code to execute
  • input: Optional stdin input for the code
  • timeout: Optional timeout in milliseconds
  • memoryLimit: Optional memory limit in MB
  • enableNetworking: Optional network access flag

Execute Code with Dynamic Variables

Execute code with multiple input variables passed as key-value pairs.

Tool: execute_code_with_variables

Parameters:

  • language: "javascript" or "python"
  • code: The code to execute
  • variables: Optional object with dynamic input variables
  • input: Optional stdin input for the code
  • timeout: Optional timeout in milliseconds
  • memoryLimit: Optional memory limit in MB
  • enableNetworking: Optional network access flag

Example:

json
{
  "language": "javascript",
  "code": "console.log(`Hello ${name}, you are ${age} years old!`);",
  "variables": {
    "name": "John",
    "age": 25
  }
}

Response:

  • success: Boolean indicating execution success
  • output: Standard output from the code
  • errorOutput: Standard error output
  • executionTime: Time taken to execute in milliseconds
  • memoryUsed: Estimated memory usage
  • language: The language that was executed
  • injectedVariables: Variables that were injected (for variables tool)

Other Tools

  • get_capabilities: Get information about supported languages and features
  • validate_code: Validate code without executing it

For detailed information about dynamic variables, see DYNAMIC_VARIABLES.md.

Architecture

Core Components

  • BaseExecutor: Abstract base class with common security and validation logic
  • JavaScriptExecutor: VM2-based JavaScript execution engine
  • PythonExecutor: Subprocess-based Python execution engine
  • Security Validators: Input validation and pattern blocking
  • Memory Monitor: Basic memory usage tracking
  • Timeout Manager: Execution time limiting

Python Execution Engine

The Python executor has been redesigned for better compatibility and security:

Previous Implementation (Pyodide)

  • Used Pyodide for browser-based Python execution
  • Had compatibility issues with Node.js environments
  • Caused ENOENT errors when loading WebAssembly files

Current Implementation (Subprocess)

  • Uses Node.js child_process.spawn() with system Python3
  • Creates temporary files for secure code execution
  • Implements comprehensive import restrictions
  • Provides better error handling and output capture

Security Model

python
# Blocked modules
blocked_modules = [
    'os', 'sys', 'subprocess', 'socket', 'urllib',
    'requests', 'http', 'tempfile', 'shutil', 'pathlib'
]

# Security restrictions
- Import blocking for dangerous modules
- File operation prevention
- exec/eval function blocking
- Output capture and sanitization

Error Handling

The server provides detailed error categorization:

  • Compilation Errors: Syntax errors with line numbers
  • Runtime Errors: Execution errors with sanitized stack traces
  • Security Errors: Blocked operations and restricted imports
  • Timeout Errors: Execution time limit exceeded

Dependencies

  • @modelcontextprotocol/sdk: MCP protocol implementation
  • vm2: Secure JavaScript execution sandbox
  • zod: Runtime type validation
  • typescript: TypeScript support

Requirements

System Requirements

  • Node.js 18+ (for built-in fetch support)
  • Python 3.x (for Python code execution)

Development Requirements

  • TypeScript 5.x
  • Jest (for testing)

Security Considerations

This server is designed for educational and development purposes. While it implements multiple security layers, it should not be used in production environments without additional security measures:

  • Run in containerized environments
  • Implement network isolation
  • Add resource limits at the OS level
  • Monitor for suspicious activity
  • Regular security audits

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Implement changes with tests
  4. Submit a pull request

License

ISC License

Changelog

Recent Updates

Dynamic Variables Feature

  • Added: New execute_code_with_variables tool for dynamic input variables
  • Feature: Support for multiple data types (strings, numbers, booleans, arrays, objects)
  • Feature: Automatic variable injection into code before execution
  • Feature: Variable name validation for security
  • Feature: Enhanced capabilities reporting with variable support information
  • Documentation: Comprehensive guide in DYNAMIC_VARIABLES.md

Python Executor Rewrite

  • Fixed: ENOENT errors when loading Pyodide WebAssembly files
  • Changed: Replaced Pyodide with subprocess-based execution
  • Improved: Better security isolation and error handling
  • Removed: Pyodide dependency to reduce package size
  • Added: Native Python3 subprocess execution with temporary file management

Security Enhancements

  • Enhanced import blocking for Python modules
  • Improved output capture and sanitization
  • Better error categorization and reporting
  • Strengthened timeout and resource management

常见问题

Code Runner 是什么?

在隔离环境中安全执行JavaScript与Python,支持传入动态变量,并返回输出、错误和资源使用情况,默认阻止危险操作。

相关 Skills

网页构建器

by anthropics

Universal
热门

面向复杂 claude.ai HTML artifact 开发,快速初始化 React + Tailwind CSS + shadcn/ui 项目并打包为单文件 HTML,适合需要状态管理、路由或多组件交互的页面。

在 claude.ai 里做复杂网页 Artifact 很省心,多组件、状态和路由都能顺手搭起来,React、Tailwind 与 shadcn/ui 组合效率高、成品也更精致。

编码与调试
未扫描123.0k

前端设计

by anthropics

Universal
热门

面向组件、页面、海报和 Web 应用开发,按鲜明视觉方向生成可直接落地的前端代码与高质感 UI,适合做 landing page、Dashboard 或美化现有界面,避开千篇一律的 AI 审美。

想把页面做得既能上线又有设计感,就用前端设计:组件到整站都能产出,难得的是能避开千篇一律的 AI 味。

编码与调试
未扫描123.0k

网页应用测试

by anthropics

Universal
热门

用 Playwright 为本地 Web 应用编写自动化测试,支持启动开发服务器、校验前端交互、排查 UI 异常、抓取截图与浏览器日志,适合调试动态页面和回归验证。

借助 Playwright 一站式验证本地 Web 应用前端功能,调 UI 时还能同步查看日志和截图,定位问题更快。

编码与调试
未扫描123.0k

相关 MCP Server

GitHub

编辑精选

by GitHub

热门

GitHub 是 MCP 官方参考服务器,让 Claude 直接读写你的代码仓库和 Issues。

这个参考服务器解决了开发者想让 AI 安全访问 GitHub 数据的问题,适合需要自动化代码审查或 Issue 管理的团队。但注意它只是参考实现,生产环境得自己加固安全。

编码与调试
84.2k

by Context7

热门

Context7 是实时拉取最新文档和代码示例的智能助手,让你告别过时资料。

它能解决开发者查找文档时信息滞后的问题,特别适合快速上手新库或跟进更新。不过,依赖外部源可能导致偶尔的数据延迟,建议结合官方文档使用。

编码与调试
53.3k

by tldraw

热门

tldraw 是让 AI 助手直接在无限画布上绘图和协作的 MCP 服务器。

这解决了 AI 只能输出文本、无法视觉化协作的痛点——想象让 Claude 帮你画流程图或白板讨论。最适合需要快速原型设计或头脑风暴的开发者。不过,目前它只是个基础连接器,你得自己搭建画布应用才能发挥全部潜力。

编码与调试
46.4k

评论