@sota-io/mcp

@sota-io/mcp

Enables AI agents to deploy, manage, and configure web applications on sota.io, including project creation, deployment, environment variables, custom domains, and rollbacks.

Category
Visit Server

README

@sota-io/mcp

MCP server for sota.io — deploy web apps via AI agents.

npm version npm downloads License: MIT Node

Two transports

Since v1.4.0 this package ships two transports:

  • sota-mcp (stdio, default) — for Claude Code, Cursor, Windsurf, and any MCP client that spawns a local process. Pass your SOTA_API_KEY via env var.
  • sota-mcp-http (Streamable HTTP) — for self-hosting the remote endpoint that powers mcp.sota.io (used by Claude Desktop and Claude.ai web). Reads SUPABASE_JWT_SECRET, DATABASE_URL, etc. — most users do not need this; it's the same code that runs on mcp.sota.io if you want to host your own.

Most users want the stdio transport.

One-click install for Claude Desktop / Claude.ai web

If you use Claude Desktop or Claude.ai (Pro / Max / Team / Enterprise plan), the easiest install is not this npm package — it's the hosted remote endpoint at mcp.sota.io. Click here:

Add to Claude →

OAuth handles auth. New users can sign up entirely inside Claude via the create_account tool — no browser tab switch.

See https://sota.io/docs/integrations/claude.

Quick Start (stdio — Claude Code, Cursor, Windsurf, …)

  1. Get an API key from sota.io/dashboard/settings
  2. Configure your IDE
  3. Ask your AI: "Deploy my app to sota.io"

Installation

No install needed — run directly with npx:

npx -y @sota-io/mcp

Or install globally:

npm install -g @sota-io/mcp
sota-mcp

Configuration

Claude Code

CLI method:

claude mcp add sota -- npx -y @sota-io/mcp

Then set your API key in the shell environment:

export SOTA_API_KEY=sota_your_api_key_here

Manual JSON (.claude/settings.json):

{
  "mcpServers": {
    "sota": {
      "command": "npx",
      "args": ["-y", "@sota-io/mcp"],
      "env": {
        "SOTA_API_KEY": "sota_your_api_key_here"
      }
    }
  }
}

Claude Desktop

Edit claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sota": {
      "command": "npx",
      "args": ["-y", "@sota-io/mcp"],
      "env": {
        "SOTA_API_KEY": "sota_your_api_key_here"
      }
    }
  }
}

Cursor

Create .cursor/mcp.json in your project root:

{
  "mcpServers": {
    "sota": {
      "command": "npx",
      "args": ["-y", "@sota-io/mcp"],
      "env": {
        "SOTA_API_KEY": "sota_your_api_key_here"
      }
    }
  }
}

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "sota": {
      "command": "npx",
      "args": ["-y", "@sota-io/mcp"],
      "env": {
        "SOTA_API_KEY": "sota_your_api_key_here"
      }
    }
  }
}

Tools

Tool Description Parameters
deploy Deploy an app project_id, directory?
get-logs Get build/runtime logs project_id, deployment_id?
set-env Set environment variable project_id, key, value
get-env List environment variables project_id
rollback Rollback to previous deployment project_id
get-status Get deployment status project_id
list-projects List all projects (none)
create-project Create a new project name
delete-project Delete a project permanently project_id
add-domain Add custom domain to project project_id, domain
list-domains List custom domains project_id
get-domain Get domain details and DNS status project_id, domain_id
remove-domain Remove custom domain project_id, domain_id

deploy

Deploy an application to sota.io. Creates a tar.gz archive of the specified directory and uploads it.

Parameter Type Required Description
project_id string Yes Project ID to deploy to
directory string No Directory to deploy (defaults to current working directory)
"Deploy my app in the current directory to sota.io"

get-logs

Get build and runtime logs for a deployment. If no deployment_id is provided, returns logs for the latest deployment.

Parameter Type Required Description
project_id string Yes Project ID to get logs for
deployment_id string No Specific deployment ID (defaults to latest)
"Show me the build logs for my sota.io project"

set-env

Set an environment variable for a project.

Parameter Type Required Description
project_id string Yes Project ID
key string Yes Environment variable name (e.g., DATABASE_URL)
value string Yes Environment variable value
"Set DATABASE_URL on my project to postgres://localhost/mydb"

get-env

List environment variables for a project.

Parameter Type Required Description
project_id string Yes Project ID
"Show all environment variables for my project"

rollback

Rollback a project to its previous deployment. This swaps the container image without rebuilding.

Parameter Type Required Description
project_id string Yes Project ID to rollback
"Roll back my app to the previous version"

get-status

Get the current deployment status for a project, including URL and recent deployment history.

Parameter Type Required Description
project_id string Yes Project ID to check status for
"What's the status of my sota.io deployment?"

list-projects

List all projects on your sota.io account.

No parameters required.

"List my sota.io projects"

create-project

Create a new project on sota.io. The project slug is auto-generated from the name (lowercase, hyphens, max 63 chars) and used as the subdomain ({slug}.sota.io). For example, "My API" becomes my-api.sota.io.

Parameter Type Required Description
name string Yes Name for the new project
"Create a new sota.io project called my-api"

delete-project

Delete a project and all its deployments from sota.io. This action is permanent.

Parameter Type Required Description
project_id string Yes Project ID to delete
"Delete my sota.io project abc123"

add-domain

Add a custom domain to a project. Returns DNS instructions for pointing the domain.

Parameter Type Required Description
project_id string Yes Project ID
domain string Yes Domain name (e.g., "example.com" or "app.example.com")
"Add example.com as a custom domain to my project"

list-domains

List all custom domains for a project.

Parameter Type Required Description
project_id string Yes Project ID
"Show all custom domains for my project"

get-domain

Get domain details including DNS verification status and SSL state.

Parameter Type Required Description
project_id string Yes Project ID
domain_id string Yes Domain ID
"Check the DNS status of my custom domain"

remove-domain

Remove a custom domain from a project.

Parameter Type Required Description
project_id string Yes Project ID
domain_id string Yes Domain ID to remove
"Remove the custom domain from my project"

Environment Variables

Variable Required Default Description
SOTA_API_KEY Yes API key with sota_ prefix. Create at sota.io/dashboard/settings
SOTA_API_URL No https://api.sota.io API base URL

Troubleshooting

"npx: command not found"

Problem: Your IDE doesn't inherit the shell PATH where nvm/fnm is loaded.

Fix: Use the absolute path to npx. Find it with:

which npx
# Example output: /Users/you/.nvm/versions/node/v22.0.0/bin/npx

Then update your MCP config to use the absolute path:

{
  "mcpServers": {
    "sota": {
      "command": "/Users/you/.nvm/versions/node/v22.0.0/bin/npx",
      "args": ["-y", "@sota-io/mcp"],
      "env": {
        "SOTA_API_KEY": "sota_your_api_key_here"
      }
    }
  }
}

"SOTA_API_KEY environment variable is required"

Problem: The API key is not set in your MCP configuration.

Fix: Add the env block to your MCP server config. Shell environment variables do not automatically pass to MCP servers — the env block in the config is required:

{
  "env": {
    "SOTA_API_KEY": "sota_your_api_key_here"
  }
}

Connection refused or timeout errors

Problem: Network issue or wrong API URL.

Fix: Check your internet connection. If you're using a custom API URL, verify SOTA_API_URL is set correctly. The default is https://api.sota.io.

License

MIT

Links

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured