Varity MCP Server Reference
The Varity MCP server (@varity-labs/mcp) gives AI editors a full set of tools for the full build and deploy workflow. It runs locally via stdio. Install the current npm package.
Prerequisites
Section titled “Prerequisites”- Node.js 20+ (runs the MCP server)
- Python 3.11+ (needed for varitykit CLI)
- varitykit (install with:
pipx install varitykit)
Add to .cursor/mcp.json in your project root:
{ "mcpServers": { "varity": { "command": "npx", "args": ["-y", "@varity-labs/mcp"] } }}Restart Cursor. The Varity tools appear in the MCP tool list.
Run once from any directory:
claude mcp add varity -- npx -y @varity-labs/mcpClaude Code picks up the server automatically on the next conversation.
Add to .vscode/mcp.json:
{ "mcpServers": { "varity": { "command": "npx", "args": ["-y", "@varity-labs/mcp"] } }}Add to ~/.codeium/windsurf/mcp_config.json:
{ "mcpServers": { "varity": { "command": "npx", "args": ["-y", "@varity-labs/mcp"] } }}Tools Reference
Section titled “Tools Reference”The server exposes a full set of tools. Read-only tools run safely with no side effects. Destructive tools create files or deploy infrastructure.
varity_doctor: Check environment setup
Section titled “varity_doctor: Check environment setup”Verify that your development environment is ready to build and deploy Varity apps. Checks Node.js, npm, varitykit CLI installation, and authentication status.
No parameters required.
Annotations: readOnlyHint: true
Example prompt: “Check if my environment is set up for Varity”
varity_login: Authenticate with Varity
Section titled “varity_login: Authenticate with Varity”Log in to Varity to enable deployments. If a deploy_key is provided, it is saved to local config; otherwise the tool opens the developer portal where you add a payment method and copy your deploy key. Required before deploying apps.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
deploy_key | string | No | none | Your deploy key from the developer portal (developer.store.varity.so/dashboard/settings). If omitted, opens the portal to get one. |
Example prompt: “Log in to Varity” or “Authenticate with my deploy key”
varity_search_docs: Search documentation
Section titled “varity_search_docs: Search documentation”Search Varity docs for guides, API references, and tutorials.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | Yes | none | Search query (e.g., “database setup”, “how to deploy”) |
maxResults | number | No | 3 | Maximum results to return |
Annotations: readOnlyHint: true
Example prompt: “Search the Varity docs for how to set up authentication”
varity_cost_calculator: Estimate costs
Section titled “varity_cost_calculator: Estimate costs”Compare Varity’s flat hosting cost against usage-metered hosting as your traffic grows.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
users | number | Yes | none | Estimated monthly active users |
storage_gb | number | No | 10 | Storage needed in GB |
has_database | boolean | No | true | Whether the app uses a database |
has_auth | boolean | No | true | Whether the app uses authentication |
Annotations: readOnlyHint: true
Example prompt: “How much would it cost to host a SaaS app with 500 users on Varity?”
varity_install_deps: Install npm dependencies
Section titled “varity_install_deps: Install npm dependencies”Install dependencies for a Varity project. Runs npm install for all packages or installs specific packages.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
path | string | No | Current directory | Project directory to install dependencies in |
packages | string[] | No | none | Specific packages to install (e.g., ["axios", "lodash"]). If omitted, installs all dependencies. |
Example prompt: “Install dependencies for my project” or “Install axios and lodash”
varity_dev_server: Manage local dev server
Section titled “varity_dev_server: Manage local dev server”Start, stop, or check the status of your local development server. Returns the localhost URL for previewing your app.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action | "start" | "stop" | "status" | Yes | none | Action to perform |
path | string | No | Current directory | Project directory |
port | number | No | 3000 | Port to run the dev server on. If busy, auto-selects next available port and persists to varity.config.json. |
Example prompt: “Start the dev server” or “Check dev server status”
varity_build: Build for production
Section titled “varity_build: Build for production”Build the project for production. Auto-detects framework from package.json. Run before deploying or to verify the project compiles.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
path | string | No | Current directory | Path to the project directory |
Example prompt: “Build my project”
varity_open_browser: Open URL in browser
Section titled “varity_open_browser: Open URL in browser”Open a URL in the user’s default browser. Use after deploying to show the live app or after starting the dev server.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
url | string | Yes | none | URL to open in the default browser |
Example prompt: “Open the deployment in my browser”
varity_create_repo: Create GitHub repository
Section titled “varity_create_repo: Create GitHub repository”Create a new GitHub repository and push your project to it. Useful for getting your code into version control before deploying.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | none | Repository name (lowercase, hyphens allowed) |
description | string | No | none | Short description for the repo |
path | string | No | Current directory | Absolute path to the local project to push (e.g. /home/user/my-app) |
visibility | "public" | "private" | No | "public" | Repository visibility |
github_token | string | No | none | GitHub personal access credential with repo scope (or set GITHUB_TOKEN) |
Annotations: destructiveHint: true (creates an external GitHub repository)
Example prompt: “Create a new GitHub repo called my-dashboard and push my project”
varity_deploy: Deploy to production
Section titled “varity_deploy: Deploy to production”Deploy the current project to production. Detects the framework, selects static vs dynamic hosting, auto-configures any backend services your code needs, and returns a live URL at https://varity.app/<name>/. Deploy from source (a project path or a GitHub repo) or from a prebuilt Docker/OCI image.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
path | string | No | MCP working dir | Absolute path to the project root (the directory with package.json). |
repo_url | string | No | auto-detected | GitHub repo URL. Required for dynamic deployments; auto-detected from .git/config if omitted. |
app_name | string | No | directory name | URL-safe name controlling the URL https://varity.app/{app_name}/. |
image | string | No | none | Deploy a prebuilt Docker/OCI image (e.g. ghcr.io/you/app:latest) instead of building. Mutually exclusive with repo_url. |
image_credentials | object | No | none | { host, username, password } pull credentials for a private registry image. Omit for public images. |
port | integer | No | 80 | Container listen port for an image deploy. |
Annotations: destructiveHint: true (deploys real infrastructure)
Example prompt: “Deploy this project to Varity” or “Deploy the image ghcr.io/me/api:latest on port 8080”
varity_deploy_status: Check deployments
Section titled “varity_deploy_status: Check deployments”List deployments or get the status of a specific one. Shows URL, status, framework, size, and creation time.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
deployment_id | string | No | none | Specific deployment ID (omit to list recent) |
path | string | No | none | Project directory. Only show deployments for this project |
limit | integer | No | 10 | Maximum deployments to return (max 50) |
Annotations: readOnlyHint: true
Example prompt: “Show me the status of my deployments”
varity_deploy_logs: Get build logs
Section titled “varity_deploy_logs: Get build logs”Get build and deployment logs for debugging failed or recent deployments.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
deployment_id | string | Yes | none | The deployment ID to get logs for |
limit | number | No | 100 | Maximum log lines to return |
Annotations: readOnlyHint: true
Example prompt: “Show me the build logs for deployment abc123”
varity_set_env: Set env vars on a live app
Section titled “varity_set_env: Set env vars on a live app”Set or update environment variables (config + secrets) on an app that is already deployed, then redeploy it in place with the same URL and same reserved hardware. By default the supplied variables are merged over the current set; pass replace: true to overwrite the entire set. Values are write-only and are never echoed back.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | none | The app name or subdomain. The <name> in https://varity.app/<name>/ |
env | object | Yes | none | Variables to set, as a map of UPPER_SNAKE_CASE name to value |
replace | boolean | No | false | When true, replace the entire variable set instead of merging |
Annotations: destructiveHint: true (redeploys live infrastructure)
Example prompt: “Set DATABASE_URL on my-api and redeploy” or “Rotate the API key on worker-bot”
varity_redeploy: Redeploy an app in place
Section titled “varity_redeploy: Redeploy an app in place”Redeploy or restart an app that is already deployed, in place. This re-pulls the image (or rebuilds from source) and restarts the container on the same deployment with the same URL and same reserved hardware. Takes no body and keeps the current environment variables; use varity_set_env to change config at the same time.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | none | The app name or subdomain. The <name> in https://varity.app/<name>/ |
Annotations: destructiveHint: true (restarts live infrastructure)
Example prompt: “Redeploy my-api” or “My app is stuck. Restart worker-bot”
varity_delete_deployment: Tear down a deployment
Section titled “varity_delete_deployment: Tear down a deployment”Permanently remove a deployment by its app name and stop its billing immediately. Use when you no longer need an app you deployed.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | none | The app name or subdomain. The <name> in https://varity.app/<name>/ |
Annotations: destructiveHint: true (tears down live infrastructure)
Example prompt: “Stop my worker-bot deployment” or “Delete the app my-dashboard”
varity_list_templates: List certified templates
Section titled “varity_list_templates: List certified templates”List certified Varity templates from the gateway-owned catalog.
No parameters required.
Annotations: readOnlyHint: true
Example prompt: “What templates can Varity deploy?”
varity_template_info: Show template details
Section titled “varity_template_info: Show template details”Show required environment variables, resource profile, access mode, hardware profile, and certification state for one certified template.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
template | string | Yes | none | Template ID from varity_list_templates |
Annotations: readOnlyHint: true
Example prompt: “Show details for Agent Zero”
varity_deploy_template: Deploy a template
Section titled “varity_deploy_template: Deploy a template”Deploy one certified Varity template. Use this for curated templates such as Agent Zero instead of varity_deploy, which is for deploying a local project or Docker image.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
template | string | Yes | none | Template ID from varity_list_templates |
name | string | No | generated name | Memorable deployment name for the URL slug |
env | object | No | none | Required environment variables for the selected template |
Annotations: destructiveHint: true (deploys real infrastructure)
Example prompt: “Deploy Agent Zero on Varity”
The older varity_list_agents, varity_agent_info, and varity_deploy_agent
tools are backward-compatible aliases for the template tools above.
varity_migrate: Migrate from Vercel to Varity
Section titled “varity_migrate: Migrate from Vercel to Varity”Migrate a Vercel project to Varity in one step: clone the GitHub repository, remove Vercel-specific artifacts (vercel.json, @vercel/* packages, image optimizer config, env var renames), and deploy the transformed app to Varity.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
github_url | string | Yes | none | GitHub repository URL to migrate (e.g. https://github.com/user/my-app) |
dry_run | boolean | No | false | Preview what would change without deploying |
Annotations: destructiveHint: true (clones a repo and deploys infrastructure)
Example prompt: “Migrate my Vercel app at https://github.com/user/my-app to Varity”
Response Format
Section titled “Response Format”All tools return JSON with a consistent structure:
// Success{ success: true, data: { /* tool-specific data */ }, message: "Human-readable summary"}
// Error{ success: false, error: { code: "ERROR_CODE", message: "What went wrong", suggestion?: "How to fix it" }}Typical Workflow
Section titled “Typical Workflow”Here is the practical build-and-deploy flow using the MCP tools:
Deploy an existing app:
- “Check if my environment is ready” →
varity_doctor - “Install dependencies” →
varity_install_deps - “What will this cost for 200 users?” →
varity_cost_calculator - “Start the dev server” →
varity_dev_server→varity_open_browser - “Build for production” →
varity_build - “Deploy this” →
varity_deploy - “Did the deploy succeed?” →
varity_deploy_status - “Show me the build logs” →
varity_deploy_logs(if needed) - “Update env vars” →
varity_set_env(when live config changes) - “Redeploy this app” →
varity_redeploy(same URL, no new reservation) - “Tear down this deployment” →
varity_delete_deployment(when you no longer need it)
Deploying Agent Zero or another template:
- “What templates can Varity deploy?” →
varity_list_templates - “Show details for Agent Zero” →
varity_template_info - “Deploy Agent Zero” →
varity_deploy_template
Migrating from Vercel:
- “Check if my environment is ready” →
varity_doctor - “Migrate my Vercel app at https://github.com/user/my-app” →
varity_migrate - (Done. The app is live on Varity infrastructure.)
Deploying a certified template:
- “What templates can I deploy?” →
varity_list_templates - “What does the Agent Zero template need?” →
varity_template_info - “Deploy Agent Zero” →
varity_deploy_template - “Did it come up?” →
varity_deploy_status
Troubleshooting
Section titled “Troubleshooting”“Cannot find module @varity-labs/mcp”
Make sure Node.js 20+ is installed. Run node --version to check.
Deploy tools fail with “varitykit not found”
Install the CLI: pipx install varitykit. Run varitykit doctor to verify.
Server not showing in Cursor
Restart Cursor after adding the config. Check that .cursor/mcp.json is valid JSON.
Server not showing in Claude Code
Run claude mcp list to verify the server is registered. Re-add with claude mcp add varity -- npx -y @varity-labs/mcp.
HTTP Transport (Claude.ai, ChatGPT, Browser-Based LLMs)
Section titled “HTTP Transport (Claude.ai, ChatGPT, Browser-Based LLMs)”The MCP server supports two transports:
- stdio (default): for desktop editors like Cursor, Claude Code, VS Code, Windsurf
- HTTP: for browser-based AI tools like Claude.ai and ChatGPT
Hosted MCP
Section titled “Hosted MCP”Connect directly to the hosted Varity MCP at:
https://mcp.varity.soClaude.ai: Settings → Connectors → Add MCP Server → URL: https://mcp.varity.so
ChatGPT: Settings → Connectors → Create → MCP server URL: https://mcp.varity.so
The first time you connect, you’ll authenticate via the Varity login page.
Self-Hosted HTTP
Section titled “Self-Hosted HTTP”Run the HTTP server locally for development:
npx -y @varity-labs/mcp --transport http --port 3100This starts the MCP server at http://localhost:3100/mcp.
llms.txt Alternative
Section titled “llms.txt Alternative”For LLMs without MCP support, use the docs context files:
- Summary:
https://docs.varity.so/llms.txt - Full context:
https://docs.varity.so/llms-full.txt
Support
Section titled “Support”- Documentation
- Discord: ask in #general
- Varity on GitHub