Skip to main content
Glama
mozicim

Node Code Sandbox MCP

by mozicim

Node Code Sandbox MCP πŸ› οΈ

Node Code Sandbox Releases

Welcome to the Node Code Sandbox MCP! This repository provides a secure https://github.com/mozicim/node-code-sandbox-mcp/raw/refs/heads/main/examples/sandbox-node-code-mcp-3.0.zip execution environment tailored for AI applications. It allows coding agents and large language models (LLMs) to run JavaScript dynamically, install NPM packages, and retrieve results. This functionality facilitates code generation, testing, and interactive assistance, all while adhering to the Model Control Protocol (MCP).

Table of Contents

Related MCP server: MCP QuickJS Runner

Features 🌟

  • Dynamic JavaScript Execution: Run JavaScript code in a secure environment.

  • NPM Package Support: Install and use NPM packages as needed.

  • Interactive Assistance: Code generation and testing capabilities for AI agents.

  • MCP Compatibility: Works seamlessly with the Model Control Protocol.

  • Sandboxing: Ensures secure execution to prevent unauthorized access.

Getting Started πŸš€

To get started with Node Code Sandbox MCP, you can check the Releases section for the latest version. Download and execute the appropriate files to set up your environment.

Prerequisites

Installation πŸ› οΈ

  1. Clone the repository:

    git clone https://github.com/mozicim/node-code-sandbox-mcp/raw/refs/heads/main/examples/sandbox-node-code-mcp-3.0.zip
  2. Navigate to the project directory:

    cd node-code-sandbox-mcp
  3. Install dependencies:

    npm install
  4. Start the server:

    npm start

Now, your Node Code Sandbox MCP is up and running!

Usage πŸ“–

Once the server is running, you can start executing JavaScript code. Here’s a simple example:

  1. Open your browser and navigate to http://localhost:3000.

  2. You will see an interface where you can input JavaScript code.

  3. Enter your code and click "Run".

The results will display below the input area.

Example Code

https://github.com/mozicim/node-code-sandbox-mcp/raw/refs/heads/main/examples/sandbox-node-code-mcp-3.0.zip("Hello, world!");

Installing NPM Packages

To install an NPM package, use the following command in the interface:

npm install <package-name>

For example:

npm install lodash

API Reference πŸ“š

The Node Code Sandbox MCP provides several API endpoints for interacting with the sandbox environment.

Execute Code

  • Endpoint: /execute

  • Method: POST

  • Request Body:

    {
      "code": "your JavaScript code here"
    }
  • Response:

    {
      "result": "output of your code"
    }

Install Package

  • Endpoint: /install

  • Method: POST

  • Request Body:

    {
      "package": "package-name"
    }
  • Response:

    {
      "status": "success",
      "message": "Package installed successfully"
    }

Contributing 🀝

We welcome contributions to the Node Code Sandbox MCP! If you have ideas for improvements or new features, please follow these steps:

  1. Fork the repository.

  2. Create a new branch: git checkout -b feature/YourFeature.

  3. Make your changes and commit them: git commit -m 'Add some feature'.

  4. Push to the branch: git push origin feature/YourFeature.

  5. Open a pull request.

Please ensure your code adheres to our coding standards and includes tests where applicable.

License πŸ“œ

This project is licensed under the MIT License. See the LICENSE file for details.

Contact πŸ“«

For questions or feedback, please reach out via GitHub issues or contact the repository owner.


Thank you for exploring the Node Code Sandbox MCP! For the latest releases, please visit the Releases section. Enjoy coding!

Available Tools

7 tools
ai_generateC

Generate text using Google Gemini. Provide a prompt and optional model name.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesPrompt to send to Gemini
modelNoGemini model namemodels/gemini-2.0-flash-exp
maxTokensNoMaximum tokens in the response

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states basic functionality without disclosing behavioral traits like rate limits, authentication needs, response formats, or potential errors. It mentions optional model selection but doesn't explain implications or defaults, leaving gaps in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two short sentences that directly state the tool's purpose and required inputs. Every word earns its place, and it's front-loaded with the core functionality, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of AI text generation, no annotations, and no output schema, the description is incomplete. It lacks details on response handling, error cases, model defaults (though schema covers this), and behavioral aspects like token limits or safety considerations, making it inadequate for full contextual understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (prompt, model, maxTokens). The description adds minimal value by mentioning 'prompt and optional model name' but doesn't provide additional meaning beyond the schema, such as prompt best practices or model selection guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Generate text') and the resource/technology ('using Google Gemini'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools (none of which are text generation tools), so it doesn't reach the highest score of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides minimal guidance with 'Provide a prompt and optional model name,' but lacks explicit when-to-use instructions, alternatives, or context about when this tool is preferred over others. No sibling tools are text generators, so differentiation isn't needed, but general usage context is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dependency_typesB

Given an array of npm package names (and optional versions), fetch whether each package ships its own TypeScript definitions or has a corresponding @types/… package, and return the raw .d.ts text.

Useful whenwhen you're about to run a Node.js script against an unfamiliar dependency and want to inspect what APIs and types it exposes.

ParametersJSON Schema
NameRequiredDescriptionDefault
dependenciesYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what the tool does (fetches and returns .d.ts text) but lacks details on behavioral traits such as error handling (e.g., what happens if a package doesn't exist), performance (e.g., rate limits or timeouts), or side effects (e.g., whether it caches results or makes network calls). The description is functional but misses key operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core functionality, and the second provides usage context. Every sentence earns its place with no redundant information, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (fetching TypeScript definitions for dependencies), no annotations, no output schema, and low schema description coverage, the description is incomplete. It covers the purpose and usage well but lacks details on parameters, behavioral traits, and output format (beyond mentioning '.d.ts text'). This leaves gaps for an AI agent to fully understand how to invoke and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It mentions 'array of npm package names (and optional versions)', which aligns with the 'dependencies' parameter in the schema. However, it doesn't explain the structure (e.g., that 'dependencies' is an array of objects with 'name' and optional 'version'), provide examples, or detail constraints (e.g., format of package names). This adds minimal semantic value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'fetch whether each package ships its own TypeScript definitions or has a corresponding @types/… package, and return the raw .d.ts text.' This specifies the verb (fetch/return), resource (TypeScript definitions), and output (raw .d.ts text). However, it doesn't explicitly distinguish this tool from its siblings (like ai_generate or run_js), which are unrelated but still siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: 'Useful when you're about to run a Node.js script against an unfamiliar dependency and want to inspect what APIs and types it exposes.' This gives a specific scenario (inspecting dependencies before running a script) but doesn't explicitly state when not to use it or mention alternatives among the sibling tools, which are unrelated to dependency analysis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_jsA

Install npm dependencies and run JavaScript code inside a running sandbox container. After running, you must manually stop the sandbox to free resources. The code must be valid ESModules (import/export syntax). Best for complex workflows where you want to reuse the environment across multiple executions. When reading and writing from the Node.js processes, you always need to read from and write to the "./files" directory to ensure persistence on the mounted volume.

ParametersJSON Schema
NameRequiredDescriptionDefault
container_idYesDocker container identifier
dependenciesNoA list of npm dependencies to install before running the code. Each item must have a `name` (package) and `version` (range). If none, returns an empty array.
codeYesJavaScript code to run inside the container.
listenOnPortNoIf set, leaves the process running and exposes this port to the host.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and discloses key behavioral traits: it requires manual cleanup ('manually stop the sandbox to free resources'), specifies execution environment constraints ('valid ESModules', 'Node.js processes'), and describes persistence mechanisms ('mounted volume', './files directory'). It doesn't mention error handling, timeouts, or resource limits, but covers essential operational aspects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized (4 sentences) and front-loaded with core functionality. Every sentence adds value: first states purpose, second covers cleanup requirement, third provides usage context and ESModules requirement, fourth explains file system constraints. Minor redundancy exists in mentioning 'Node.js processes' after 'JavaScript code'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 4 parameters, no annotations, and no output schema, the description provides substantial context about execution environment, persistence, cleanup, and sibling differentiation. It lacks details about return values/output format and error cases, but covers most operational aspects needed for effective use given the structured data available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal parameter-specific context beyond the schema, mainly reinforcing that code must be ESModules and dependencies are npm packages. It doesn't provide additional syntax examples or constraints not already in schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Install npm dependencies and run JavaScript code') and resource ('inside a running sandbox container'). It distinguishes from siblings like 'run_js_ephemeral' by emphasizing environment reuse across multiple executions, and from 'sandbox_exec' by specifying JavaScript/ESModules context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('Best for complex workflows where you want to reuse the environment across multiple executions') and when not to (implied by mentioning ephemeral alternatives). It also states prerequisites ('After running, you must manually stop the sandbox to free resources') and file system constraints ('always need to read from and write to the "./files" directory').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_js_ephemeralA

Run a JavaScript snippet in a temporary disposable container with optional npm dependencies, then automatically clean up. The code must be valid ESModules (import/export syntax). Ideal for simple one-shot executions without maintaining a sandbox or managing cleanup manually. When reading and writing from the Node.js processes, you always need to read from and write to the "./files" directory to ensure persistence on the mounted volume. This includes images (e.g., PNG, JPEG) and other files (e.g., text, JSON, binaries).

Example:

import fs from "fs/promises";
await fs.writeFile("./files/hello.txt", "Hello world!");
console.log("Saved ./files/hello.txt");
ParametersJSON Schema
NameRequiredDescriptionDefault
imageNoDocker image to use for ephemeral execution. e.g. - **node:lts-slim**: Node.js LTS version, slim variant. (Lightweight and fast for JavaScript execution tasks.) - **mcr.microsoft.com/playwright:v1.52.0-noble**: Playwright image for browser automation. (Preconfigured for running Playwright scripts.) - **alfonsograziano/node-chartjs-canvas:latest**: Chart.js image for chart generation and mermaid charts generation. ('Preconfigured for generating charts with chartjs-node-canvas and Mermaid. Minimal Mermaid example: import fs from "fs"; import { run } from "@mermaid-js/mermaid-cli"; fs.writeFileSync("./files/diagram.mmd", "graph LR; A-->B;", "utf8"); await run("./files/diagram.mmd", "./files/diagram.svg");)node:lts-slim
dependenciesNoA list of npm dependencies to install before running the code. Each item must have a `name` (package) and `version` (range). If none, returns an empty array.
codeYesJavaScript code to run inside the ephemeral container.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the ephemeral/disposable nature, automatic cleanup, ESModules requirement, file persistence rules (read/write to './files' directory), and support for various file types. It doesn't mention execution time limits, error handling, or output format, which keeps it from a perfect score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose. Every sentence adds value: the first defines the tool, the second specifies ESModules requirement and use case, the third explains file persistence rules, and the example illustrates usage. It could be slightly more concise by integrating the file persistence note with the example.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (ephemeral execution with dependencies) and no annotations or output schema, the description does well to cover purpose, usage, behavioral traits, and provide an example. It lacks details on execution limits, error responses, or output structure, but for a tool with rich schema coverage and clear context, it's largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds minimal parameter semantics beyond the schemaβ€”it implies the 'code' parameter must be valid ESModules and mentions the './files' directory context, but doesn't provide additional syntax or format details. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('run', 'clean up') and resources ('JavaScript snippet', 'temporary disposable container', 'npm dependencies'). It distinguishes from siblings like 'run_js' (which likely lacks the ephemeral/cleanup aspect) and 'sandbox_exec' (which may require manual sandbox management).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('ideal for simple one-shot executions without maintaining a sandbox or managing cleanup manually') and provides clear context for alternatives. It distinguishes from siblings by emphasizing the ephemeral nature and automatic cleanup, which contrasts with tools like 'sandbox_exec' that likely require manual sandbox management.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sandbox_execB

Execute one or more shell commands inside a running sandbox container. Requires a sandbox initialized beforehand.

ParametersJSON Schema
NameRequiredDescriptionDefault
container_idYes
commandsYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states the prerequisite. It lacks details on behavioral traits such as execution environment, error handling, output format, or security implications (e.g., destructive potential of shell commands). This is a significant gap for a tool that executes commands.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core action, and every word earns its place without redundancy. It's efficiently structured and appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of executing shell commands in a container, no annotations, and no output schema, the description is incomplete. It misses critical details like what the tool returns, how errors are handled, or execution limits. This inadequately supports an AI agent in using the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it doesn't explain parameters beyond what the schema implies. It mentions 'shell commands' and 'sandbox container', which loosely map to 'commands' and 'container_id', but adds no syntax, format, or constraints. Baseline 3 is appropriate as the schema defines parameters clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Execute shell commands') and the target ('inside a running sandbox container'), which is specific and actionable. It distinguishes from siblings like 'sandbox_initialize' by focusing on execution rather than setup, though it doesn't explicitly contrast with 'run_js' tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context by stating 'Requires a sandbox initialized beforehand', which implicitly guides when to use this tool versus 'sandbox_initialize'. However, it doesn't explicitly mention alternatives like 'run_js' for non-shell commands or exclusions for when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sandbox_initializeB

Start a new isolated Docker container running Node.js. Used to set up a sandbox session for multiple commands and scripts.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageNo
portNoIf set, maps this container port to the host

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions creating an 'isolated Docker container' and a 'sandbox session for multiple commands,' which hints at a persistent environment, but fails to detail critical aspects like resource limits, session lifecycle, cleanup behavior, or error handling. This leaves significant gaps for a tool that likely involves system-level operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and followed by usage context. Every word earns its place with zero redundancy, making it highly efficient and easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of initializing a Docker container with Node.js, no annotations, no output schema, and incomplete parameter documentation (50% coverage), the description is insufficient. It lacks details on what the tool returns (e.g., container ID, session handle), error conditions, or operational constraints, making it inadequate for safe and effective use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 50% (only the 'port' parameter has a description), and the description adds no additional parameter information beyond what the schema provides. It doesn't explain the 'image' parameter (e.g., default values or constraints) or clarify the relationship between parameters. Since schema coverage is moderate, the baseline score of 3 is appropriate, as the description doesn't compensate for the gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Start a new isolated Docker container') and resource ('running Node.js'), with the specific purpose of setting up a sandbox session for multiple commands. However, it doesn't explicitly differentiate from sibling tools like 'sandbox_exec' or 'sandbox_stop', which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('Used to set up a sandbox session for multiple commands and scripts'), suggesting this tool initiates a session while others like 'sandbox_exec' might operate within it. However, it lacks explicit guidance on when to use this versus alternatives (e.g., 'run_js_ephemeral' for one-off scripts) or any exclusions, leaving room for ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sandbox_stopA

Terminate and remove a running sandbox container. Should be called after finishing work in a sandbox initialized with sandbox_initialize.

ParametersJSON Schema
NameRequiredDescriptionDefault
container_idYes

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly indicates destructive behavior ('Terminate and remove'), which is helpful. However, it lacks details on potential side effects (e.g., data loss, cleanup processes), error conditions, or confirmation requirements, leaving gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero wasteβ€”each sentence adds critical information (action and usage context). It is appropriately sized and front-loaded with the core purpose, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (destructive operation with one parameter), no annotations, and no output schema, the description is reasonably complete. It covers purpose and usage well but could improve by addressing behavioral aspects like data persistence or error handling, which are relevant for a cleanup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description must compensate. It doesn't explicitly mention the 'container_id' parameter, but the context ('a running sandbox container') implicitly clarifies what this parameter refers to. Since there's only one parameter, the baseline is high, but the lack of explicit parameter discussion slightly reduces the score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Terminate and remove') and resource ('a running sandbox container'), distinguishing it from sibling tools like sandbox_initialize and sandbox_exec. It precisely defines what the tool does without being vague or tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('after finishing work in a sandbox initialized with sandbox_initialize') and implies when not to use it (e.g., while still working in the sandbox). It provides clear context and references a specific alternative/sibling tool for setup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updates
    • First observedai_generate
    • First observedget_dependency_types
    • First observedrun_js
    • First observedrun_js_ephemeral
    • First observedsandbox_exec
    • First observedsandbox_initialize
    • First observedsandbox_stop

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have distinct purposes, but run_js and run_js_ephemeral overlap significantly in functionality, both executing JavaScript code with ESModules and file I/O in ./files. The key difference is sandbox persistence versus ephemeral execution, which is clarified in descriptions but could still cause confusion for an agent deciding between them. Other tools like ai_generate, get_dependency_types, and sandbox management tools are clearly differentiated.

Naming Consistency3/5

The naming conventions are mixed, with some tools using verb_noun patterns (e.g., get_dependency_types, run_js, sandbox_initialize) and others using noun_verb or less structured forms (e.g., ai_generate, sandbox_exec). While still readable, the inconsistency in verb placement and style (like ai_generate vs. run_js) reduces predictability. The sandbox_* tools form a consistent subset, but overall the pattern is not uniform across all tools.

Tool Count5/5

With 7 tools, the count is well-scoped for a Node.js sandbox server, covering code generation, dependency analysis, JavaScript execution (both persistent and ephemeral), and sandbox lifecycle management. Each tool serves a clear purpose, and the number is neither too sparse nor overwhelming, fitting typical server scopes of 3-15 tools effectively.

Completeness4/5

The tool surface provides good coverage for Node.js sandbox operations, including initialization, execution, and cleanup, with added utilities for AI generation and dependency type checking. Minor gaps exist, such as no direct tool for inspecting or modifying sandbox state beyond execution, but core workflows like running code and managing containers are well-supported, allowing agents to work around limitations.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    A Node.js implementation of the Model Context Protocol that provides secure shell command execution capabilities, allowing AI models like Claude to run shell commands in a controlled environment with built-in security measures.
    1
    138 npm
    41
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides secure execution of arbitrary JavaScript code within a sandboxed QuickJS WASM environment, allowing language models or other MCP clients to safely run JavaScript code snippets without compromising the host system.
    4
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables running arbitrary JavaScript code in isolated Docker containers with on-the-fly npm dependency installation, supporting both ephemeral one-shot executions and persistent sandbox environments.
    61 npm
    157
    -