A remote Model Context Protocol server that exposes the entire Sevalla PaaS API through just 2 tools instead of ~200. AI agents write JavaScript that runs in sandboxed V8 isolates to discover and call any API endpoint on demand.
search- query the OpenAPI spec to discover endpoints, parameters, and schemasexecute- run JavaScript in a sandboxed V8 isolate that calls the API viasevalla.request()
This reduces context window usage by ~99% compared to traditional one-tool-per-endpoint approaches.
Cloudflare came up with the Code Mode MCP pattern: instead of registering one tool per API endpoint, you give the agent two tools. One to search the API spec, one to execute code against it. Simple idea, massive difference in practice.
As a Cloudflare partner, we took this pattern and built it for the Sevalla PaaS API. The sandbox architecture and tool design are inspired by codemode, an open-source implementation of the same pattern.
Any MCP client can now manage Sevalla infrastructure through conversation. The AI writes and runs API calls in a secure V8 sandbox. No SDK needed, no boilerplate, no 200-tool context window.
Connect your MCP client to the hosted server at https://mcp.sevalla.com/mcp. Authentication is handled via OAuth — your client will open a browser to log in with your Sevalla account. No API keys needed in the config.
claude mcp add --transport http sevalla https://mcp.sevalla.com/mcpThen type /mcp inside Claude Code and select Authenticate to complete the OAuth flow.
Add via Settings → Connectors → Add Connector and enter https://mcp.sevalla.com/mcp as the URL. Claude Desktop handles OAuth automatically.
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"sevalla": {
"url": "https://mcp.sevalla.com/mcp"
}
}
}Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"sevalla": {
"serverUrl": "https://mcp.sevalla.com/mcp"
}
}
}Add to opencode.json in your project root:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sevalla": {
"type": "remote",
"url": "https://mcp.sevalla.com/mcp"
}
}
}Then run opencode mcp auth sevalla to complete the OAuth flow.
Sevalla API keys support granular permissions — you can create a read-only key if you want your agent to query infrastructure without modifying it. Full API reference at api-docs.sevalla.com (base URL: api.sevalla.com/v3).
To fully remove the Sevalla MCP server, delete the server configuration and clear stored OAuth credentials.
Removing the MCP server does not delete your API key on Sevalla. To revoke it, go to app.sevalla.com/api-keys.
claude mcp remove sevallaThen clear the stored OAuth token: run /mcp inside Claude Code, select sevalla, and choose Clear authentication.
If the server was added at a non-default scope, specify it explicitly:
claude mcp remove --scope user sevalla
claude mcp remove --scope project sevallaOpen Settings → Connectors, find the Sevalla connector, and remove it. Then fully quit and restart Claude Desktop.
OAuth tokens are stored in the operating system keychain (macOS Keychain / Windows Credential Manager). To remove them, delete the Sevalla entry from your keychain manually.
Delete the sevalla entry from .cursor/mcp.json (project) or ~/.cursor/mcp.json (global). Then clear cached OAuth tokens:
rm -rf ~/.mcp-authDelete the sevalla entry from ~/.codeium/windsurf/mcp_config.json.
opencode mcp logout sevallaThen delete the sevalla entry from opencode.json in your project root.
MCP Client (Claude, Cursor, etc.)
│
│ POST /mcp
│ Authorization: Bearer <sevalla-api-key>
▼
┌─────────────────────────────┐
│ Sevalla MCP Server │
│ (Hono + StreamableHTTP) │
│ │
│ ┌───────────────────────┐ │
│ │ CodeMode │ │
│ │ • search tool │ │
│ │ • execute tool │ │
│ │ • V8 sandboxed JS │ │
│ └───────────────────────┘ │
└──────────────┬──────────────┘
│ fetch() with Bearer token
▼
https://api.sevalla.com/v3
Each request creates an isolated MCP session bound to the caller's API key. The server is fully stateless.
Once connected, the AI agent discovers and calls APIs on your behalf:
// Search for the right endpoint
const endpoints = await sevalla.search('list all applications')
// Execute an API call in the V8 sandbox
const apps = await sevalla.request({
method: 'GET',
path: '/applications',
})Requirements: Node.js 24+ (TypeScript runs natively, no build step)
git clone https://github.com/sevalla-hosting/mcp.git
cd mcp
pnpm install
pnpm startOr with Docker:
docker build -t sevalla-mcp .
docker run -p 3000:3000 sevalla-mcppnpm dev # Hot reload (node --watch)
pnpm test # Run tests (node:test)
pnpm check:code # tsc + oxlint + oxfmt