Isolator MCP Server

Isolator MCP Server

A TypeScript server implementing the Model Context Protocol that provides secure code execution in isolated Docker containers, allowing LLM applications to safely run Python, Go, or JavaScript code snippets.

Category
访问服务器

Tools

execute_code

Executes code (Python, Go, JavaScript) in a secure, isolated container environment.

README

Isolator MCP Server

isolator-mcp is a Model Context Protocol (MCP) server written in TypeScript. It acts as a wrapper around the embedded isolator Go CLI tool, providing a secure code execution sandbox accessible via MCP.

LLM applications (MCP Hosts) can connect to this server and use its execute_code tool to safely run Python, Go, or JavaScript code snippets provided directly or loaded from predefined snippet files.

Features

  • Provides the execute_code MCP tool.
  • Supports executing code provided directly (language, entrypoint_code) or via named snippets (snippet_name).
  • Supports multiple languages (Python, Go, JavaScript, configurable).
  • Uses the embedded isolator Go CLI (isolator-cli/) for secure Docker container execution.
  • Configurable security defaults (timeout, resource limits, network) via isolator_config.json.
  • Manages temporary directories on the host for code execution.
  • Handles file copying into containers (by instructing the isolator CLI).
  • Returns structured results (stdout, stderr, status) via MCP, setting isError: true on tool-level failures.

Prerequisites

  • Docker: Required for container creation and execution by the isolator-cli. Ensure the Docker daemon is running.
  • Go: Required to build the embedded isolator-cli Go binary.
  • Node.js and npm: Required to install dependencies, build, and run the isolator-mcp TypeScript server.

Installation

  1. Build isolator Go CLI: Navigate to the embedded Go CLI directory and build the binary:
    cd isolator-cli
    go build -o isolator main.go
    cd .. 
    
    This creates the ./isolator-cli/isolator executable needed by the server.
  2. Configure isolator-mcp:
    • Edit isolator_config.json: Update isolatorPath to point to the absolute path of the built binary (e.g., /Users/ompragash/Documents/Cline/MCP/isolator-mcp/isolator-cli/isolator). Adjust default limits, container workdir, language images, or the promptsDir (used for snippets) location if needed.
    • Ensure the prompts directory exists (default: ./prompts). Add code snippet files (e.g., hello_world.py). The filename base (e.g., hello_world) is used as the snippet_name.
  3. Install Server Dependencies: Navigate to the main directory (isolator-mcp) and run:
    npm install
    
  4. Build Server: Compile the TypeScript code:
    npm run build
    
    This creates the executable script at build/index.js.
  5. Configure MCP Host: Add the server to your MCP client's settings file (e.g., cline_mcp_settings.json for the VS Code extension):
    {
      "mcpServers": {
        "isolator": {
          "command": "node",
          "args": ["/Users/ompragash/Documents/Cline/MCP/isolator-mcp/build/index.js"],
          "env": {},
          "disabled": false,
          "autoApprove": []
        }
      }
    }
    
    (Adjust the path in args if necessary). The MCP Host should automatically detect and start the server.

Important Note: Ensure the Docker images specified in isolator_config.json (e.g., python:3.11-alpine, golang:1.21-alpine) are pulled onto your system beforehand using docker pull <image_name>. The isolator tool does not automatically download missing images.

Local Development / Testing

To run the server locally for development or testing (without installing it via MCP Host settings):

  1. Build Go CLI: Ensure the isolator Go CLI is built within its subdirectory:
    cd isolator-cli 
    go build -o isolator main.go
    cd ..
    
  2. Build TS Server: In this main directory (isolator-mcp), run npm install and npm run build.
  3. Configure: Make sure isolator_config.json correctly points to the built ./isolator-cli/isolator binary via the isolatorPath key (use the absolute path).
  4. Run Server: Execute the built server directly using Node:
    node build/index.js
    
    The server will start, connect via stdio, and print logs (including console.error messages from index.ts) to the console.
  5. Interact (Manual): You can manually send JSON-RPC messages (e.g., tools/list, tools/call) to the server's standard input to test its responses. Tools like @modelcontextprotocol/inspector can also be helpful (npm run inspector).

(Remember to stop this manually run server before relying on the MCP Host to start it via the settings file.)

Architecture & Flow

  1. MCP Host Request: An LLM asks the MCP Host (e.g., VS Code Extension) to call the isolator server's execute_code tool with arguments.
  2. Server Processing (index.ts):
    • Receives the tools/call request via stdio.
    • Validates arguments using Zod.
    • Loads configuration from isolator_config.json.
    • Determines the code source:
      • If snippet_name is provided, reads the corresponding file from the configured promptsDir and determines the language from the file extension.
      • If entrypoint_code and language are provided, uses them directly.
    • Creates a temporary directory on the host.
    • Writes the entrypoint code and any additional_files into the temporary directory.
    • Constructs the command-line arguments for the embedded isolator Go CLI, including security flags from the config and the path to the temporary directory.
    • Spawns the isolator process using Node.js child_process.spawn.
  3. Go CLI Execution (isolator-cli/isolator run):
    • Parses flags (including the new --env flag).
    • Creates a tar stream of the temporary directory contents.
    • Uses the Docker SDK to create a container with specified image, resource limits, environment variables (from --env), and security settings (NO bind mount).
    • Uses CopyToContainer to copy the tar stream into the container's working directory.
    • Starts the container, which executes the requested command (e.g., python /workspace/hello_world.py).
    • Waits for completion, captures stdout/stderr.
    • Removes the container.
    • Prints the result (status, output, etc.) as JSON to its stdout.
  4. Server Result Handling (index.ts):
    • Reads the JSON output from the finished isolator process stdout.
    • Parses the JSON result.
    • Formats the CallToolResult for MCP, combining stdout/stderr and setting isError if the Go CLI reported a non-success status.
    • Sends the result back to the MCP Host.
    • Cleans up the temporary directory on the host.
  5. MCP Host Response: Relays the result back to the LLM, which then formulates a response for the user.

execute_code Tool

Description

Executes code (Python, Go, JavaScript) in a secure, isolated container environment.

Input Schema (arguments)

  • language (string, optional): The programming language (e.g., "python", "go", "javascript"). Required if snippet_name is not provided.
  • entrypoint_code (string, optional): The main code content to execute. Required if snippet_name is not provided.
  • entrypoint_filename (string, optional): Filename for the main code (e.g., "main.py", "script.js"). Defaults based on language if not provided.
  • additional_files (array, optional): Array of objects, each with:
    • filename (string, required): Name of the additional file.
    • content (string, required): Content of the additional file.
  • snippet_name (string, optional): Name of a pre-defined code snippet file (without extension) located in the configured promptsDir. Mutually exclusive with language and entrypoint_code.

Constraint: Either snippet_name OR both language and entrypoint_code must be provided.

Output (CallToolResult)

  • content: An array containing a single TextContent object.
    • type: "text"
    • text: A string containing the combined stdout and stderr from the execution, formatted like:
      --- stdout ---
      [Actual stdout output]
      --- stderr ---
      [Actual stderr output]
      
      If an error occurred during execution (non-zero exit code, timeout), the text will be prepended with Execution Failed (status): [error message]\n\n.
  • isError (boolean): true if the execution status reported by the isolator CLI was "error" or "timeout", false otherwise.

(Protocol-level errors, like invalid arguments or failure to start the process, will result in a standard MCP error response instead of a CallToolResult).

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选