Skip to main content
In addition to the 200+ pre-built MCP servers from the Docker MCP Catalog, you can run custom MCP servers directly from public GitHub repositories.

How it works

When you specify a GitHub repository, E2B will:
  1. Clone the repository into the sandbox
  2. Run the installCmd (optional) to install dependencies
  3. Run the runCmd to start the MCP server with stdio transport
The runCmd must start an MCP server that follows the MCP specification and communicates via stdio (standard input/output).

Using a custom MCP server

import Sandbox from 'e2b'

const sandbox = await Sandbox.betaCreate({
    mcp: {
        'github/modelcontextprotocol/servers': {
            installCmd: 'npm install',
            runCmd: 'sudo npx -y @modelcontextprotocol/server-filesystem /root',
        },
    },
});

Configuration

installCmd
string
Optional command to run before starting the MCP server. Use this to install dependencies (e.g., npm install, pip install -r requirements.txt).
runCmd
string
required
Command to start the MCP server. Must launch a stdio-enabled MCP server.
Important for npx-based servers: Always include installCmd: 'npm install' (or equivalent) when using npx in your runCmd. Without installing dependencies first, npx will try to use the local repository and fail.

Troubleshooting

If your custom MCP server doesn’t work as expected:
  1. Explore the sandbox either via the dashboard or by connecting to it via e2b connect <sandbox-id>
  2. Check the gateway log file with sudo cat /var/log/mcp-gateway/gateway.log.
I