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
npm install
Usage
Development (Smithery)
npm run dev
Build
npm run build
Start (Smithery)
npm start
Stdio Mode (MCP Clients)
# 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 executeinput: Optional stdin input for the codetimeout: Optional timeout in millisecondsmemoryLimit: Optional memory limit in MBenableNetworking: 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 executevariables: Optional object with dynamic input variablesinput: Optional stdin input for the codetimeout: Optional timeout in millisecondsmemoryLimit: Optional memory limit in MBenableNetworking: Optional network access flag
Example:
{
"language": "javascript",
"code": "console.log(`Hello ${name}, you are ${age} years old!`);",
"variables": {
"name": "John",
"age": 25
}
}
Response:
success: Boolean indicating execution successoutput: Standard output from the codeerrorOutput: Standard error outputexecutionTime: Time taken to execute in millisecondsmemoryUsed: Estimated memory usagelanguage: The language that was executedinjectedVariables: Variables that were injected (for variables tool)
Other Tools
get_capabilities: Get information about supported languages and featuresvalidate_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
# 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
- Fork the repository
- Create a feature branch
- Implement changes with tests
- Submit a pull request
License
ISC License
Changelog
Recent Updates
Dynamic Variables Feature
- Added: New
execute_code_with_variablestool 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
面向复杂 claude.ai HTML artifact 开发,快速初始化 React + Tailwind CSS + shadcn/ui 项目并打包为单文件 HTML,适合需要状态管理、路由或多组件交互的页面。
✎ 在 claude.ai 里做复杂网页 Artifact 很省心,多组件、状态和路由都能顺手搭起来,React、Tailwind 与 shadcn/ui 组合效率高、成品也更精致。
前端设计
by anthropics
面向组件、页面、海报和 Web 应用开发,按鲜明视觉方向生成可直接落地的前端代码与高质感 UI,适合做 landing page、Dashboard 或美化现有界面,避开千篇一律的 AI 审美。
✎ 想把页面做得既能上线又有设计感,就用前端设计:组件到整站都能产出,难得的是能避开千篇一律的 AI 味。
网页应用测试
by anthropics
用 Playwright 为本地 Web 应用编写自动化测试,支持启动开发服务器、校验前端交互、排查 UI 异常、抓取截图与浏览器日志,适合调试动态页面和回归验证。
✎ 借助 Playwright 一站式验证本地 Web 应用前端功能,调 UI 时还能同步查看日志和截图,定位问题更快。
相关 MCP Server
GitHub
编辑精选by GitHub
GitHub 是 MCP 官方参考服务器,让 Claude 直接读写你的代码仓库和 Issues。
✎ 这个参考服务器解决了开发者想让 AI 安全访问 GitHub 数据的问题,适合需要自动化代码审查或 Issue 管理的团队。但注意它只是参考实现,生产环境得自己加固安全。
Context7 文档查询
编辑精选by Context7
Context7 是实时拉取最新文档和代码示例的智能助手,让你告别过时资料。
✎ 它能解决开发者查找文档时信息滞后的问题,特别适合快速上手新库或跟进更新。不过,依赖外部源可能导致偶尔的数据延迟,建议结合官方文档使用。
by tldraw
tldraw 是让 AI 助手直接在无限画布上绘图和协作的 MCP 服务器。
✎ 这解决了 AI 只能输出文本、无法视觉化协作的痛点——想象让 Claude 帮你画流程图或白板讨论。最适合需要快速原型设计或头脑风暴的开发者。不过,目前它只是个基础连接器,你得自己搭建画布应用才能发挥全部潜力。