{"id":47756691,"url":"https://github.com/cased/e2b-mcp","last_synced_at":"2026-04-03T04:30:24.399Z","repository":{"id":297861079,"uuid":"997678426","full_name":"cased/e2b-mcp","owner":"cased","description":"Safely run MCP servers on E2B. Build agents, and run your (and your users') MCP servers without worry. CLI + Python API.","archived":false,"fork":false,"pushed_at":"2025-06-24T22:50:02.000Z","size":176,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-28T05:05:04.861Z","etag":null,"topics":["e2b","firecracker","mcp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cased.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-07T00:27:33.000Z","updated_at":"2026-02-21T13:57:14.000Z","dependencies_parsed_at":"2025-06-08T00:37:48.187Z","dependency_job_id":null,"html_url":"https://github.com/cased/e2b-mcp","commit_stats":null,"previous_names":["cased/e2b-mcp"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/cased/e2b-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cased%2Fe2b-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cased%2Fe2b-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cased%2Fe2b-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cased%2Fe2b-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cased","download_url":"https://codeload.github.com/cased/e2b-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cased%2Fe2b-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31333321,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T03:20:36.090Z","status":"ssl_error","status_checked_at":"2026-04-03T03:20:35.133Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["e2b","firecracker","mcp"],"created_at":"2026-04-03T04:30:18.063Z","updated_at":"2026-04-03T04:30:24.345Z","avatar_url":"https://github.com/cased.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# e2b-mcp\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nRun [MCP (Model Context Protocol)](https://github.com/modelcontextprotocol) servers securely in [E2B](https://e2b.dev) sandboxes.\n\ne2b-mcp provides a simple way to execute MCP servers in isolated cloud environments, enabling safe execution of untrusted tools and code. Instead of running MCP servers directly on your host system, they run inside secure E2B sandboxes with automatic resource management and cleanup.\n\n## Use Cases\n\nWe built e2b-mcp so [Cased](https://cased.com) can run MCP servers on behalf of users, and \nintegrate with our DevOps agent. But e2b-mcp has many use cases:\n\n### **AI Agent Platforms**\n- **Safe Tool Execution**: Let AI agents use file operations, git commands, and web APIs without compromising your infrastructure\n- **User-Specific Sandboxes**: Run MCP servers with each user's credentials and permissions in isolated environments  \n- **Dynamic Tool Discovery**: Discover and provision new capabilities for agents on-demand\n\n### **SaaS Applications**\n- **Multi-Tenant Tool Execution**: Safely execute user-requested operations (file processing, data analysis) in dedicated sandboxes\n- **API Gateway for MCP**: Expose MCP tools as REST endpoints with built-in security and isolation\n- **Serverless MCP**: Scale MCP server instances based on demand without infrastructure management\n\n### **Developer Tools \u0026 IDEs**\n- **Code Execution Environments**: Provide secure code execution for online IDEs and coding platforms\n- **Plugin Sandboxing**: Run untrusted MCP plugins safely without affecting the host environment  \n- **CI/CD Integration**: Execute build/test tools in isolated environments with controlled access\n\n### **Enterprise Solutions**\n- **Compliance \u0026 Security**: Meet security requirements by isolating all tool execution\n- **Customer Onboarding**: Let customers try tools and integrations safely before deployment\n- **Managed AI Services**: Offer AI capabilities to customers without exposing backend systems\n\n## Features\n\n- **Secure Execution**: Run MCP servers in isolated E2B sandboxes\n- **CLI \u0026 API**: Both command-line interface and Python API\n- **Tool Discovery**: Automatically discover tools from MCP servers\n- **Async/Sync Support**: Both async and synchronous execution modes\n- **Auto Cleanup**: Automatic sandbox and resource management\n- **Package Management**: Automatic installation of MCP server dependencies\n- **Multi-Language**: Use from any language via CLI or build language-specific wrappers\n\n## Installation\n\n```bash\nuv pip install e2b-mcp\n```\n\n## Prerequisites\n\n1. **E2B API Key**: Get your free API key from [e2b.dev](https://e2b.dev)\n2. **Environment Variable**: Set `E2B_API_KEY` in your environment\n\n```bash\nexport E2B_API_KEY=\"your_api_key_here\"\n```\n\n## Quick Start\n\n### CLI Usage\n\n```bash\n# Add a GitHub MCP server\ne2b-mcp server add github \\\n  --command \"npx -y @modelcontextprotocol/server-github\" \\\n  --env GITHUB_PERSONAL_ACCESS_TOKEN=your_token\n\n# Discover available tools\ne2b-mcp tools list github\n\n# Execute a tool\ne2b-mcp tools execute github search_repositories \\\n  --params '{\"query\": \"python\", \"per_page\": 5}'\n\n# Quick one-shot execution (no config save)\ne2b-mcp quick \"npx -y @modelcontextprotocol/server-filesystem /tmp\" \\\n  list_directory --param path=/tmp\n\n# Multi-package installation with install-commands\ne2b-mcp server add complex_server \\\n  --command \"python /app/server.py\" \\\n  --install-commands \"apt-get update\" \\\n  --install-commands \"apt-get install -y git curl\" \\\n  --install-commands \"pip install requests beautifulsoup4\" \\\n  --env DATA_DIR=/app/data\n\n# Node.js MCP server setup\ne2b-mcp server add nodejs_fs \\\n  --command \"node filesystem-server.js\" \\\n  --install-commands \"curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -\" \\\n  --install-commands \"apt-get install -y nodejs\" \\\n  --install-commands \"npm install @modelcontextprotocol/server-filesystem\"\n```\n\n### Python API\n\n```python\nimport asyncio\nfrom e2b_mcp import E2BMCPRunner, ServerConfig\n\nasync def main():\n    # Create runner\n    runner = E2BMCPRunner()\n\n    # Add MCP server\n    runner.add_server(ServerConfig(\n        name=\"filesystem\",\n        command=\"npx -y @modelcontextprotocol/server-filesystem /tmp\",\n        description=\"File system operations\"\n    ))\n\n    # Discover tools\n    tools = await runner.discover_tools(\"filesystem\")\n    print(f\"Found {len(tools)} tools\")\n\n    # Execute a tool\n    result = await runner.execute_tool(\n        \"filesystem\",\n        \"write_file\",\n        {\"path\": \"/tmp/example.txt\", \"content\": \"Hello World!\"}\n    )\n    print(result)\n\n# Run async code\nasyncio.run(main())\n```\n\n## 📖 CLI Documentation\n\n### Server Management\n\n```bash\n# Add a new MCP server configuration\ne2b-mcp server add \u003cname\u003e --command \"\u003ccommand\u003e\" [options]\n\n# List all configured servers\ne2b-mcp server list [--json]\n\n# Remove a server configuration  \ne2b-mcp server remove \u003cname\u003e [--yes]\n```\n\n**Add Server Options:**\n- `--command`: Command to run the MCP server (required)\n- `--env KEY=VALUE`: Environment variables (can be used multiple times)\n- `--install-commands`: Installation commands to run (can be used multiple times)\n- `--description`: Server description\n- `--timeout`: Timeout in minutes (default: 10)\n\n### Tool Operations\n\n```bash\n# List tools from a configured server\ne2b-mcp tools list \u003cserver_name\u003e [--json]\n\n# Execute a tool\ne2b-mcp tools execute \u003cserver_name\u003e \u003ctool_name\u003e [options]\n```\n\n**Execute Tool Options:**\n- `--params`: Tool parameters as JSON string\n- `--param key=value`: Individual parameters (can be used multiple times)\n- `--json`: Output raw JSON response\n\n### Quick Execute\n\n```bash\n# Execute without saving server config\ne2b-mcp quick \"\u003ccommand\u003e\" \u003ctool_name\u003e [options]\n```\n\n**Quick Execute Options:**\n- `--params`: Tool parameters as JSON string\n- `--param key=value`: Individual parameters  \n- `--env KEY=VALUE`: Environment variables\n- `--json`: Output raw JSON response\n\n### Configuration\n\n```bash\n# Show current configuration\ne2b-mcp config [--show]\n\n# Edit configuration file\ne2b-mcp config --edit\n\n# Reset all configuration\ne2b-mcp config --reset\n```\n\n### CLI Examples\n\n```bash\n# GitHub integration\nexport GITHUB_TOKEN=\"your_token\"\ne2b-mcp server add github \\\n  --command \"npx -y @modelcontextprotocol/server-github\" \\\n  --env GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_TOKEN\n\ne2b-mcp tools execute github search_repositories \\\n  --params '{\"query\": \"e2b\", \"per_page\": 3}'\n\n# Filesystem operations\ne2b-mcp server add fs \\\n  --command \"npx -y @modelcontextprotocol/server-filesystem /tmp\"\n\ne2b-mcp tools execute fs write_file \\\n  --param path=/tmp/test.txt \\\n  --param content=\"Hello CLI!\"\n\ne2b-mcp tools execute fs read_file \\\n  --param path=/tmp/test.txt\n\n# Using quick execute for one-offs\ne2b-mcp quick \"npx -y @modelcontextprotocol/server-filesystem /tmp\" \\\n  list_directory --param path=/tmp --json\n```\n\nConfiguration is stored in `~/.e2b-mcp/servers.json` and can be shared across different environments.\n\n## Configuration\n\n### Server Configuration\n\n```python\nfrom e2b_mcp import ServerConfig\n\n# Method 1: Using ServerConfig class\nconfig = ServerConfig(\n    name=\"my_server\",\n    command=\"python -m my_mcp_server --stdio\",\n    install_commands=[  # Installation commands for any package manager\n        \"apt-get update\",\n        \"apt-get install -y nodejs npm\",\n        \"npm install express\",\n        \"pip install additional-package\"\n    ],\n    description=\"My custom MCP server\",\n    timeout_minutes=10,\n    env={\"DEBUG\": \"1\"}  # Optional environment variables\n)\nrunner.add_server(config)\n\n# Method 2: Using dictionary\nrunner.add_server_from_dict(\"my_server\", {\n    \"command\": \"python -m my_mcp_server --stdio\",\n    \"install_commands\": [\n        \"pip install requests beautifulsoup4\",\n        \"apt-get install -y curl\"\n    ],\n    \"description\": \"My custom MCP server\",\n    \"timeout_minutes\": 10,\n    \"env\": {\"DEBUG\": \"1\"}\n})\n\n# Example: Node.js MCP server\nrunner.add_server_from_dict(\"nodejs_server\", {\n    \"command\": \"node mcp-server.js\",\n    \"install_commands\": [\n        \"curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -\",\n        \"sudo apt-get install -y nodejs\",\n        \"npm install @modelcontextprotocol/server-filesystem\"\n    ],\n    \"description\": \"Node.js MCP server\"\n})\n\n# Example: Rust MCP server\nrunner.add_server_from_dict(\"rust_server\", {\n    \"command\": \"./target/release/mcp-server\",\n    \"install_commands\": [\n        \"curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y\",\n        \"source ~/.cargo/env\",\n        \"cargo build --release\"\n    ],\n    \"description\": \"Rust-based MCP server\"\n})\n```\n\n### Configuration Parameters\n\n- **name**: Unique identifier for the MCP server\n- **command**: Command to start the MCP server\n- **install_commands**: Flexible installation commands (optional)\n- **description**: Human-readable description\n- **timeout_minutes**: Sandbox timeout (default: 10 minutes)\n- **env**: Environment variables (optional)\n\n## API Reference\n\n### E2BMCPRunner\n\nMain class for managing MCP servers in E2B sandboxes.\n\n#### Methods\n\n##### `__init__(api_key: Optional[str] = None)`\nInitialize the runner with an E2B API key.\n\n##### `add_server(config: ServerConfig) -\u003e None`\nAdd an MCP server configuration.\n\n##### `add_server_from_dict(name: str, config_data: Dict[str, Any]) -\u003e None`\nAdd an MCP server configuration from a dictionary.\n\n##### `list_servers() -\u003e List[str]`\nList all configured server names.\n\n##### `async discover_tools(server_name: str) -\u003e List[Tool]`\nDiscover tools from an MCP server.\n\n##### `async execute_tool(server_name: str, tool_name: str, params: Dict[str, Any]) -\u003e Dict[str, Any]`\nExecute a tool on an MCP server.\n\n##### `execute_tool_sync(server_name: str, tool_name: str, params: Dict[str, Any]) -\u003e Dict[str, Any]`\nSynchronous wrapper for `execute_tool`.\n\n##### `async create_session(server_name: str) -\u003e AsyncContextManager[Session]`\nCreate a managed MCP session (advanced usage).\n\n## Examples\n\n### Basic Tool Execution\n\n```python\nimport asyncio\nfrom e2b_mcp import E2BMCPRunner\n\nasync def main():\n    runner = E2BMCPRunner()\n\n    # Add a simple test server\n    runner.add_server_from_dict(\"test\", {\n        \"command\": \"python /tmp/test_mcp_server.py\",\n        \"description\": \"Test server with basic tools\"\n    })\n\n    # Execute tools\n    time_result = await runner.execute_tool(\"test\", \"get_time\", {\"format\": \"iso\"})\n    echo_result = await runner.execute_tool(\"test\", \"echo\", {\"text\": \"Hello!\"})\n\n    print(f\"Time: {time_result}\")\n    print(f\"Echo: {echo_result}\")\n\nasyncio.run(main())\n```\n\n### Synchronous Usage\n\n```python\nfrom e2b_mcp import E2BMCPRunner\n\nrunner = E2BMCPRunner()\nrunner.add_server_from_dict(\"test\", {\n    \"command\": \"python /tmp/test_mcp_server.py\"\n})\n\n# Synchronous execution\nresult = runner.execute_tool_sync(\"test\", \"get_time\", {\"format\": \"readable\"})\nprint(result)\n```\n\n### Session Management (Advanced)\n\n```python\nasync def advanced_usage():\n    runner = E2BMCPRunner()\n    runner.add_server_from_dict(\"filesystem\", {\n        \"command\": \"python -m mcp_server_filesystem --stdio\",\n        \"package\": \"mcp-server-filesystem\"\n    })\n\n    # Manage session lifecycle manually\n    async with runner.create_session(\"filesystem\") as session:\n        print(f\"Session ID: {session.session_id}\")\n        print(f\"Sandbox ID: {session.sandbox_id}\")\n\n        # Session automatically cleaned up when exiting context\n```\n\n## Supported MCP Servers\n\ne2b-mcp works with any MCP server that supports the standard MCP protocol. Some popular servers include:\n\n- **mcp-server-filesystem**: File system operations\n- **mcp-server-git**: Git repository management\n- **mcp-server-sqlite**: SQLite database operations\n- **mcp-server-brave-search**: Web search capabilities\n- **mcp-server-slack**: Slack integration\n\n## Security\n\ne2b-mcp provides several layers of security:\n\n1. **Sandbox Isolation**: All MCP servers run in isolated E2B sandboxes\n2. **Network Isolation**: Sandboxes have controlled network access\n3. **Resource Limits**: Automatic CPU, memory, and time limits\n4. **Auto Cleanup**: Sandboxes are automatically destroyed after use\n5. **No Host Access**: MCP servers cannot access your local file system\n\n## Error Handling\n\n```python\nfrom e2b_mcp import E2BMCPRunner, MCPError\n\ntry:\n    runner = E2BMCPRunner()\n    result = await runner.execute_tool(\"nonexistent\", \"tool\", {})\nexcept MCPError as e:\n    print(f\"MCP operation failed: {e}\")\nexcept ValueError as e:\n    print(f\"Configuration error: {e}\")\n```\n\n## Development\n\n### Local Development\n\n```bash\n# Clone the repository\ngit clone https://github.com/cased/e2b-mcp.git\ncd e2b-mcp\n\n# Install in development mode\npip install -e \".[dev]\"\n\n# Format and lint code using the provided script\n./scripts/format\n\n# Or run individual tools manually\nblack .\nruff check .\n```\n\n### Development Scripts\n\nThe project includes helpful development scripts in the `scripts/` directory:\n\n#### Format Script (`./scripts/format`)\nAutomatically formats and lints the codebase:\n- Runs `black` for code formatting\n- Runs `ruff check --fix --unsafe-fixes` for linting and auto-fixes\n- Runs `ruff format` for import sorting\n- Runs `mypy` for type checking\n\n```bash\n./scripts/format\n```\n\n#### Release Script (`./scripts/release`)\nHandles the complete professional release process with comprehensive pre-flight checks:\n- **Version Validation**: Ensures provided version matches `pyproject.toml`\n- **Pre-flight Checks**: Validates git state, branch, and required tools\n- **Environment Validation**: Checks PyPI credentials and dependencies\n- **Build \u0026 Publish**: Builds package and publishes to PyPI automatically\n- **Git Tagging**: Creates and pushes git tags to GitHub\n- **GitHub Releases**: Optionally creates GitHub releases with auto-generated notes\n\n**Prerequisites for Release:**\n```bash\n# 1. Set PyPI credentials (required)\nexport TWINE_USERNAME=__token__\nexport TWINE_PASSWORD='your-pypi-api-token'\n\n# 2. Install required tools\npip install build twine\n\n# 3. Optional: Install GitHub CLI for release creation\nbrew install gh  # or equivalent for your system\n```\n\n**Release Process:**\n```bash\n# 1. Update version in pyproject.toml manually\n# version = \"0.2.0\"\n\n# 2. Commit the version change\ngit add pyproject.toml\ngit commit -m \"Bump version to 0.2.0\"\n\n# 3. Run release script with the same version\n./scripts/release 0.2.0\n```\n\n**What the Release Script Does:**\n- ✅ Validates version matches `pyproject.toml`\n- ✅ Checks for clean git state and proper branch\n- ✅ Verifies PyPI credentials and required tools\n- ✅ Builds package with `python -m build`\n- ✅ Publishes to PyPI with `twine upload`\n- ✅ Creates and pushes git tag (`v0.2.0`)\n- ✅ Optionally creates GitHub release with auto-generated notes\n- ✅ Handles virtual environment deactivation/reactivation for clean builds\n\n**Security Features:**\n- Multiple confirmation prompts before destructive actions\n- Validates all prerequisites before starting\n- Clean error handling with helpful messages\n- Safe virtual environment handling\n\n### Testing\n\nThe package includes both unit tests and integration tests:\n\n#### Unit Tests\nRun fast unit tests that don't require E2B API access:\n\n```bash\n# Run only unit tests (fast)\npytest tests/test_basic.py\n\n# Run with verbose output\npytest tests/test_basic.py -v\n```\n\n#### Integration Tests\nRun comprehensive integration tests that create real E2B sandboxes:\n\n```bash\n# Set E2B API key (required for integration tests)\nexport E2B_API_KEY=\"your_api_key\"\n\n# Run integration tests\npytest tests/test_integration.py -v\n\n# Run all tests including integration\npytest -v\n```\n\n#### Test Commands\n\n```bash\n# Run only unit tests (no E2B API key needed)\npytest -m \"not integration\"\n\n# Run only integration tests (E2B API key required)\npytest -m integration\n\n# Run all tests\npytest\n\n# Run with coverage\npytest --cov=e2b_mcp\n\n# Run specific test\npytest tests/test_integration.py::TestE2BMCPIntegration::test_tool_discovery -v\n```\n\n#### Integration Test Categories\n\n- **Basic Functionality**: Session creation, tool discovery, tool execution\n- **Package Installation**: Testing MCP servers with pip dependencies\n- **Environment Variables**: Testing custom environment configuration\n- **Error Handling**: Testing failure scenarios and cleanup\n- **Performance**: Concurrent sessions and rapid creation/destruction\n- **Stress Testing**: Multiple simultaneous operations\n\n**Note**: Integration tests create real E2B sandboxes and may take several minutes to complete. They require a valid E2B API key.\n\n### Running Examples\n\n```bash\n# Set E2B API key\nexport E2B_API_KEY=\"your_api_key\"\n\n# Run basic example\npython examples/basic_usage.py\n```\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n## Related Projects\n\n- [MCP (Model Context Protocol)](https://github.com/modelcontextprotocol) - The protocol this library implements\n- [E2B](https://e2b.dev) - Secure cloud sandboxes for AI\n- [MCP Servers](https://github.com/modelcontextprotocol/servers) - Official MCP server implementations\n\n## Package Management\n\ne2b-mcp supports flexible package installation across different ecosystems using `install_commands`:\n\n### Installation Commands\n```python\n\nrunner.add_server(ServerConfig(\n    name=\"multi_lang_server\",\n    command=\"node server.js\",\n    install_commands=[\n        # System packages\n        \"apt-get update\",\n        \"apt-get install -y build-essential\",\n        # Node.js ecosystem\n        \"curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -\",\n        \"apt-get install -y nodejs\",\n        \"npm install express @modelcontextprotocol/server-filesystem\",\n        # Python packages\n        \"pip install requests beautifulsoup4\",\n        # Custom setup\n        \"mkdir -p /app/data\",\n        \"chmod 755 /app/data\"\n    ]\n))\n```\n\n### Package Manager Examples\n\n#### Node.js/npm\n```python\nrunner.add_server_from_dict(\"nodejs_mcp\", {\n    \"command\": \"node mcp-server.js\",\n    \"install_commands\": [\n        \"apt-get update\",\n        \"apt-get install -y nodejs npm\",\n        \"npm install express sqlite3\"\n    ]\n})\n```\n\n#### Python with pip\n```python\nrunner.add_server_from_dict(\"python_mcp\", {\n    \"command\": \"python server.py\",\n    \"install_commands\": [\n        \"pip install --upgrade pip\",\n        \"pip install fastapi uvicorn pandas numpy\"\n    ]\n})\n```\n\n#### Rust with cargo\n```python\nrunner.add_server_from_dict(\"rust_mcp\", {\n    \"command\": \"./target/release/mcp-server\",\n    \"install_commands\": [\n        \"curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y\",\n        \"source ~/.cargo/env\",\n        \"cargo build --release\"\n    ]\n})\n```\n\n#### System Dependencies\n```python\nrunner.add_server_from_dict(\"system_mcp\", {\n    \"command\": \"python git_server.py\",\n    \"install_commands\": [\n        \"apt-get update\",\n        \"apt-get install -y git curl wget\",\n        \"pip install gitpython\"\n    ]\n})\n```\n\n## Configuration","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcased%2Fe2b-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcased%2Fe2b-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcased%2Fe2b-mcp/lists"}