Documentation
Quickstart
Get started with MCP
Available servers
Browse 200+ pre-built MCP servers
Custom templates
Prepull MCP servers for faster runtime
Custom servers
Use custom MCP servers from GitHub
Examples
See examples
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
Connect to 200+ tools through the Model Context Protocol
import Sandbox from 'e2b'
const sbx = await Sandbox.create({
mcp: {
browserbase: {
apiKey: process.env.BROWSERBASE_API_KEY!,
geminiApiKey: process.env.GEMINI_API_KEY!,
projectId: process.env.BROWSERBASE_PROJECT_ID!,
},
exa: {
apiKey: process.env.EXA_API_KEY!,
},
airtable: {
airtableApiKey: process.env.AIRTABLE_API_KEY!,
},
},
});
const mcpUrl = sbx.getMcpUrl();
const mcpToken = await sbx.getMcpToken();
// You can now connect the gateway to any MCP client, for example claude:
// This also works for your local claude!
await sbx.commands.run(`claude mcp add --transport http e2b-mcp-gateway ${mcpUrl} --header "Authorization: Bearer ${mcpToken}"`, { timeoutMs: 0, onStdout: console.log, onStderr: console.log });
await sbx.commands.run(
`echo 'Use browserbase and exa to research open positions at e2b.dev. Collect your findings in Airtable.' | claude -p --dangerously-skip-permissions`,
{ timeoutMs: 0, onStdout: console.log, onStderr: console.log }
)
import asyncio
from e2b import AsyncSandbox
import os
import dotenv
dotenv.load_dotenv()
async def main():
sbx = await AsyncSandbox.create(mcp={
"browserbase": {
"apiKey": os.getenv("BROWSERBASE_API_KEY"),
"geminiApiKey": os.getenv("GEMINI_API_KEY"),
"projectId": os.getenv("BROWSERBASE_PROJECT_ID"),
},
"exa": {
"apiKey": os.getenv("EXA_API_KEY"),
},
"airtable": {
"airtableApiKey": os.getenv("AIRTABLE_API_KEY"),
},
})
mcp_url = sbx.get_mcp_url()
mcp_token = await sbx.get_mcp_token()
# You can now connect the gateway to any MCP client, for example claude:
# This also works for your local claude!
await sbx.commands.run(f'claude mcp add --transport http e2b-mcp-gateway {mcp_url} --header "Authorization: Bearer {mcp_token}"', timeout=0, on_stdout=print, on_stderr=print)
await sbx.commands.run(
"echo 'Use browserbase and exa to research open positions at e2b.dev. Collect your findings in Airtable.' | claude -p --dangerously-skip-permissions",
timeout=0, on_stdout=print, on_stderr=print
)
if __name__ == "__main__":
asyncio.run(main())
Was this page helpful?