{
  "markdown": "<div align=\"center\">\n\n# Sevalla MCP Server\n\n**Give AI agents full access to the Sevalla PaaS API. Just 2 tools.**\n\n[![CI](https://github.com/sevalla-hosting/mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/sevalla-hosting/mcp/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Node.js](https://img.shields.io/badge/Node.js-24+-339933?logo=node.js&logoColor=white)](https://nodejs.org/)\n[![MCP](https://img.shields.io/badge/MCP-StreamableHTTP-8B5CF6)](https://modelcontextprotocol.io/)\n[![Hosted at](https://img.shields.io/badge/Hosted_at-mcp.sevalla.com/mcp-FF6723)](https://mcp.sevalla.com/mcp)\n\n</div>\n\n---\n\nA remote [Model Context Protocol](https://modelcontextprotocol.io/) 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.\n\n- **`search`** - query the OpenAPI spec to discover endpoints, parameters, and schemas\n- **`execute`** - run JavaScript in a sandboxed V8 isolate that calls the API via `sevalla.request()`\n\nThis reduces context window usage by ~99% compared to traditional one-tool-per-endpoint approaches.\n\n[![Sevalla server MCP server](https://glama.ai/mcp/servers/sevalla-hosting/mcp/badges/card.svg?v=2)](https://glama.ai/mcp/servers/sevalla-hosting/mcp)\n\n## Background\n\nCloudflare came up with the [Code Mode MCP](https://blog.cloudflare.com/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.\n\nAs a [Cloudflare partner](https://www.sevalla.com), we took this pattern and built it for the Sevalla PaaS API. The sandbox architecture and tool design are inspired by [codemode](https://github.com/cnap-tech/codemode), an open-source implementation of the same pattern.\n\nAny 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.\n\n## Quick Start\n\nConnect 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.\n\n### Claude Code\n\n```bash\nclaude mcp add --transport http sevalla https://mcp.sevalla.com/mcp\n```\n\nThen type `/mcp` inside Claude Code and select **Authenticate** to complete the OAuth flow.\n\n[Claude Code MCP docs](https://docs.anthropic.com/en/docs/claude-code/mcp)\n\n### Claude Desktop\n\nAdd via **Settings → Connectors → Add Connector** and enter `https://mcp.sevalla.com/mcp` as the URL. Claude Desktop handles OAuth automatically.\n\n[Claude Desktop MCP docs](https://modelcontextprotocol.io/quickstart/user)\n\n### Cursor\n\nAdd to `.cursor/mcp.json` in your project root:\n\n```json\n{\n  \"mcpServers\": {\n    \"sevalla\": {\n      \"url\": \"https://mcp.sevalla.com/mcp\"\n    }\n  }\n}\n```\n\n[Cursor MCP docs](https://docs.cursor.com/context/mcp)\n\n### Windsurf\n\nAdd to `~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"sevalla\": {\n      \"serverUrl\": \"https://mcp.sevalla.com/mcp\"\n    }\n  }\n}\n```\n\n[Windsurf MCP docs](https://docs.windsurf.com/windsurf/cascade/mcp)\n\n### OpenCode\n\nAdd to `opencode.json` in your project root:\n\n```json\n{\n  \"$schema\": \"https://opencode.ai/config.json\",\n  \"mcp\": {\n    \"sevalla\": {\n      \"type\": \"remote\",\n      \"url\": \"https://mcp.sevalla.com/mcp\"\n    }\n  }\n}\n```\n\nThen run `opencode mcp auth sevalla` to complete the OAuth flow.\n\n[OpenCode MCP docs](https://opencode.ai/docs/mcp-servers)\n\n---\n\nSevalla 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](https://api-docs.sevalla.com) (base URL: `api.sevalla.com/v3`).\n\n## Uninstall\n\nTo fully remove the Sevalla MCP server, delete the server configuration **and** clear stored OAuth credentials.\n\nRemoving the MCP server does **not** delete your API key on Sevalla. To revoke it, go to [app.sevalla.com/api-keys](https://app.sevalla.com/api-keys).\n\n### Claude Code\n\n```bash\nclaude mcp remove sevalla\n```\n\nThen clear the stored OAuth token: run `/mcp` inside Claude Code, select **sevalla**, and choose **Clear authentication**.\n\nIf the server was added at a non-default scope, specify it explicitly:\n\n```bash\nclaude mcp remove --scope user sevalla\nclaude mcp remove --scope project sevalla\n```\n\n[Claude Code MCP reference](https://docs.anthropic.com/en/docs/claude-code/mcp)\n\n### Claude Desktop\n\nOpen **Settings → Connectors**, find the Sevalla connector, and remove it. Then fully quit and restart Claude Desktop.\n\nOAuth tokens are stored in the operating system keychain (macOS Keychain / Windows Credential Manager). To remove them, delete the Sevalla entry from your keychain manually.\n\n[Claude Desktop MCP docs](https://modelcontextprotocol.io/quickstart/user)\n\n### Cursor\n\nDelete the `sevalla` entry from `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global). Then clear cached OAuth tokens:\n\n```bash\nrm -rf ~/.mcp-auth\n```\n\n[Cursor MCP docs](https://docs.cursor.com/context/mcp)\n\n### Windsurf\n\nDelete the `sevalla` entry from `~/.codeium/windsurf/mcp_config.json`.\n\n[Windsurf MCP docs](https://docs.windsurf.com/windsurf/cascade/mcp)\n\n### OpenCode\n\n```bash\nopencode mcp logout sevalla\n```\n\nThen delete the `sevalla` entry from `opencode.json` in your project root.\n\n[OpenCode MCP docs](https://opencode.ai/docs/mcp-servers)\n\n## How It Works\n\n```\nMCP Client (Claude, Cursor, etc.)\n       │\n       │  POST /mcp\n       │  Authorization: Bearer <sevalla-api-key>\n       ▼\n┌─────────────────────────────┐\n│  Sevalla MCP Server         │\n│  (Hono + StreamableHTTP)    │\n│                             │\n│  ┌───────────────────────┐  │\n│  │  CodeMode             │  │\n│  │  • search tool        │  │\n│  │  • execute tool       │  │\n│  │  • V8 sandboxed JS    │  │\n│  └───────────────────────┘  │\n└──────────────┬──────────────┘\n               │  fetch() with Bearer token\n               ▼\n     https://api.sevalla.com/v3\n```\n\nEach request creates an isolated MCP session bound to the caller's API key. The server is fully stateless.\n\n## Example\n\nOnce connected, the AI agent discovers and calls APIs on your behalf:\n\n```js\n// Search for the right endpoint\nconst endpoints = await sevalla.search('list all applications')\n\n// Execute an API call in the V8 sandbox\nconst apps = await sevalla.request({\n  method: 'GET',\n  path: '/applications',\n})\n```\n\n## Self-Hosting\n\n**Requirements:** Node.js 24+ (TypeScript runs natively, no build step)\n\n```bash\ngit clone https://github.com/sevalla-hosting/mcp.git\ncd mcp\npnpm install\npnpm start\n```\n\nOr with Docker:\n\n```bash\ndocker build -t sevalla-mcp .\ndocker run -p 3000:3000 sevalla-mcp\n```\n\n## Development\n\n```bash\npnpm dev           # Hot reload (node --watch)\npnpm test          # Run tests (node:test)\npnpm check:code    # tsc + oxlint + oxfmt\n```\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 7133,
  "sha": "f2cf98f70b3bb8e94f83491a9906c5016f8ecb88c807376363693603f248ad60",
  "repo_slug": "sevalla-hosting/mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_sevalla_hosting_mcp_45f502da/readme"
}