关于 MCP Sandbox
MCP Sandbox 可从 JavaScript 模块发现函数并推断参数类型,将其转换为 MCP 服务。它面向希望向 AI 系统开放模块函数的开发者,并提供 VM 隔离执行和命令行启动方式。
主要功能
- 01自动发现函数
- 02推断参数类型
- 03带限制的 VM 隔离执行
- 04JSON-RPC 2.0 和 SSE 接口
- 05用于测试的 REST 接口
- 06命令行与配置生成
适用场景
- 01向 AI 系统开放实用模块函数
- 02将隔离运行的 JavaScript 函数作为 MCP 工具
- 03通过 REST 接口测试已发现的函数
MCP 相关
将 JavaScript 模块转换为 MCP 服务,并把发现的函数作为工具提供。支持 JSON-RPC 2.0 和 SSE,并生成供 MCP 客户端使用的配置。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP Sandbox
将任意 JavaScript 模块转换为沙箱化的 MCP(Model Context Protocol)服务,并自动进行反射和类型推断。
🎯 什么是 MCP Sandbox?
MCP Sandbox 会自动将 JavaScript 模块转换为兼容 MCP(Model Context Protocol)的服务,让 AI 系统能够调用任意 JavaScript 函数。它使用 VM 沙箱保障安全,自动推断类型,并生成规范的 MCP 配置。
✨ 功能特性
- 🔍 自动反射 - 分析 JS 模块并提取函数签名
- 🛡️ 安全沙箱 - 在隔离的 VM 上下文中执行代码,并设置超时
- 🧠 智能类型推断 - 根据默认值和命名模式检测参数类型
- 📚 JSDoc 集成 - 从函数注释中提取文档
- 📡 MCP 协议 - 完整支持 JSON-RPC 2.0 和 SSE
- 🌐 REST API - 提供传统 REST 端点,便于测试
- ⚙️ TypeScript - 提供完整的类型安全和 IntelliSense 支持
🚀 快速开始
安装
# Install globally for CLI usage
npm install -g @mcp-sandbox/cli
# Or use in a project
npm install @mcp-sandbox/core @mcp-sandbox/cli
基本用法
# Start MCP server for a JavaScript module
$ mcp-sandbox start ./math-utils.js
🏗️ Initializing MCP Sandbox...
🔍 Reflecting module
📊 Discovered 2 tools:
- circleArea: Calculate area of a circle
- fibonacci: Generate Fibonacci sequence
🚀 MCP Sandbox server running at http://localhost:3000
📋 MCP Tools: http://localhost:3000/mcp/tools
⚡ MCP Execute: http://localhost:3000/mcp/execute
🔄 MCP SSE: http://localhost:3000/sse
📡 MCP JSON-RPC: http://localhost:3000/mcp/jsonrpc
⚙️ MCP Config: http://localhost:3000/mcp-config
💡 For MCP Inspector, use: http://localhost:3000/sse
示例模块
/**
* Calculate the area of a circle
* @param radius The radius of the circle
*/
function circleArea(radius = 1) {
return Math.PI * radius * radius;
}
/**
* Generate fibonacci sequence
* @param count Number of fibonacci numbers to generate
*/
function fibonacci(count = 10) {
const seq = [0, 1];
for (let i = 2; i < count; i++) {
seq[i] = seq[i - 1] + seq[i - 2];
}
return seq.slice(0, count);
}
module.exports = { circleArea, fibonacci };
运行 mcp-sandbox start math-utils.js 会自动:
- 🔍 反射模块并发现函数
- 📊 根据参数生成类型架构
- 🚀 在
http://localhost:3000启动 MCP 服务 - 💾 为 MCP 客户端创建
mcp-config.json
📡 API 端点
服务同时提供 MCP 和 REST 端点:
MCP 协议(JSON-RPC 2.0)
POST /mcp/jsonrpc- MCP 主端点GET /sse- 用于实时更新的服务器发送事件
REST API(用于测试)
GET /tools- 列出可用工具POST /execute/:toolName- 执行指定工具GET /mcp-config- 获取 MCP 服务配置GET /health- 健康检查
用法示例
# List tools
curl http://localhost:3000/tools
# Execute function via REST
curl -X POST http://localhost:3000/execute/circleArea \
-H "Content-Type: application/json" \
-d '{"args": {"radius": 5}}'
# MCP JSON-RPC call
curl -X POST http://localhost:3000/mcp/jsonrpc \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "fibonacci", "arguments": {"count": 8}}}'
🏗️ 编程式用法
import { MCPSandbox } from '@mcp-sandbox/core';
const sandbox = new MCPSandbox({
port: 3000,
timeout: 5000,
});
// Load and analyze module
await sandbox.loadModule('./my-module.js');
// Start MCP server
await sandbox.start();
// Execute tools directly
const result = await sandbox.executeTool('myFunction', {
param1: 'value1',
});
📚 内置示例模块
仓库包含多个示例模块,展示不同的用例:
数学运算(examples/math-utils.js)
- 圆面积计算
- 生成斐波那契数列
- 复利计算
- 素数检查
- 度数与弧度转换
- 阶乘计算
字符串操作(examples/string-utils.js)
- 转换为标题格式
- 生成随机字符串
- 统计单词数
- 检测回文
- 反转字符串
- 转换为首字母大写格式
数组操作(examples/array-utils.js)
- 打乱数组(Fisher-Yates)
- 提取唯一值
- 将数组分块
- 集合运算(交集、差集)
- 展平数组
文件系统操作(examples/filesystem-utils.js)
- 读取/写入文件(异步)
- 列出和创建目录
- 按模式搜索文件
- 计算磁盘用量
- 复制和删除文件
- 逐行读取文件
🛠️ 开发
# Clone repository
git clone https://github.com/danstarns/mcp-sandbox.git
cd mcp-sandbox
# Install dependencies
pnpm install
# Build all packages
pnpm build
# Run examples
pnpm example:math # Math utilities
pnpm example:filesystem # File operations
pnpm example:string # String manipulation
# Lint and format
pnpm lint && pnpm format
🔧 配置选项
CLI 选项
mcp-sandbox start <module> [options]
Options:
-p, --port <port> Server port (default: 3000)
-h, --host <host> Server host (default: localhost)
-t, --timeout <ms> Execution timeout (default: 5000ms)
-o, --output <file> Output MCP configuration to file
编程式选项
interface SandboxOptions {
port?: number; // Server port (default: 3000)
host?: string; // Server host (default: 'localhost')
timeout?: number; // Execution timeout (default: 5000ms)
maxMemory?: number; // Memory limit (default: 64MB)
}
🔒 安全特性
- VM 隔离 - 代码在独立的 V8 上下文中运行
- 执行超时 - 可配置的时间限制可防止无限循环
- 内存限制 - 防止内存耗尽攻击
- 受控的 require - 限制沙箱中的模块访问
- 输入验证 - 参数类型检查和验证
🎮 使用 MCP Inspector 进行测试
- 启动 MCP 服务:
mcp-sandbox start examples/math-utils.js - 打开 MCP Inspector
- 将传输类型设为“Streamable HTTP”
- 输入 URL:
http://localhost:3000/mcp/jsonrpc - 连接并测试你的工具!
📦 软件包
这是一个包含多个软件包的单体仓库:
@mcp-sandbox/cli- 命令行界面@mcp-sandbox/core- 核心库@mcp-sandbox/utils- 共享实用工具
🤝 参与贡献
📄 许可证
MIT 许可证——详情请参阅 LICENSE。
🔗 链接
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。