Venelx Docs

MCP Server

@venelx/mcp is an MCP (Model Context Protocol) server that lets AI assistants — Claude Code, Cursor, Kimi Code, and any MCP-compatible client — operate the Venelx platform through its REST API: list projects, trigger builds, check build status, tail logs, list artifacts and workers, diagnose code-signing / GitHub access, and sync local iOS/Android signing credentials.

The server talks to the Venelx API over HTTPS and to your AI client over stdio.

Prerequisites

  • Node.js ≥ 18
  • A Venelx account with at least one project
  • A token — either of:
    • Browser login (recommended, nothing to copy-paste) — run npx @venelx/mcp login
    • Manual token — create one in the dashboard at Account → API tokens: app.venelx.com/account/tokens

Browser login

bash
npx @venelx/mcp login

Opens app.venelx.com in your browser. Approve access there and the token is saved to ~/.venelx/mcp-token — the server picks it up automatically, so your MCP client config doesn't need a VENELX_TOKEN env var at all.

Token scopes

ScopeWhat it allows
readAll read-only tools (list projects, status, logs, artifacts, …)
writeEverything read allows, plus any action that changes something: trigger builds, create projects, edit env vars and build config, sync signing, assign workers to teams

Tokens look like vx_.... Treat them like passwords — pass them via environment variables, never commit them. See API tokens for the full lifecycle.

Configuration

Environment variableRequiredDefaultDescription
VENELX_TOKENno*—Personal API token (vx_...). *Not needed after npx @venelx/mcp login — falls back to ~/.venelx/mcp-token.
VENELX_API_URLnohttps://api.venelx.comAPI base URL (self-hosted etc.)

Install & run

Claude Code

bash
claude mcp add venelx --env VENELX_TOKEN=vx_... -- npx -y @venelx/mcp

Skip the --env VENELX_TOKEN=... entirely if you've already run npx @venelx/mcp login.

Cursor

Add to .cursor/mcp.json:

json
{
  "mcpServers": {
    "venelx": {
      "command": "npx",
      "args": ["-y", "@venelx/mcp"],
      "env": {
        "VENELX_TOKEN": "vx_..."
      }
    }
  }
}

Kimi Code / generic MCP client

Same shape — add to your client's MCP JSON config:

json
{
  "mcpServers": {
    "venelx": {
      "command": "npx",
      "args": ["-y", "@venelx/mcp"],
      "env": {
        "VENELX_TOKEN": "vx_...",
        "VENELX_API_URL": "https://api.venelx.com"
      }
    }
  }
}

Build from source

The MCP server is open source: github.com/VenelX/mcp. Most people just use npx -y @venelx/mcp.

Tools

ToolScope neededWhat it does
list_projectsreadList projects the token can access (id, name, GitHub URL, platforms, role).
get_projectreadProject details plus a GitHub access summary.
trigger_buildwriteQueue a build for a platform (ios, android, …). Surfaces skipReason (e.g. signing_not_ready, github_token_invalid).
build_statusreadCurrent pipeline status per platform + the 10 most recent builds.
tail_logsreadLast N lines of a build log (latest build, or a given buildId).
list_artifactsreadBuild artifacts for a project.
list_workersreadBuild workers owned by the account (name, status, capabilities).
signing_statusreadCode-signing readiness, optionally per platform (ios/android).
github_accessreadGitHub repo access diagnosis: githubAccess {ok, reason, message} + auth source label.
discover_local_ios_signingreadmacOS only. List provisioning profiles and Keychain code-signing identities on this machine. Read-only, nothing uploaded.
sync_local_ios_signingwritemacOS only. Export the matching Distribution cert + key from Keychain and upload it with the best-matching local provisioning profile(s) as this project's iOS signing credentials.
discover_local_android_signingreadScan a local project checkout's android/ dir for a keystore + gradle.properties credentials. Read-only.
sync_local_android_signingwriteUpload a local project checkout's release keystore as this project's Android signing credentials.

Onboarding and workers

ToolScope neededWhat it does
detect_project_setupreadScan a local repo folder (read-only) and suggest the Venelx setup: GitHub URL and branch from git, build stack, app folder in a monorepo, platforms, bundle id / package name, EAS profiles, env var names from .env.example (never values) and gitignored build files that need sync_build_files.
create_projectwriteCreate a Venelx project linked to a GitHub repository and register the push webhook. Returns the next steps.
worker_install_commandreadThe one-line command that installs a build worker (macOS, Linux, Windows). After installing, open Venelx Worker, click Connect, and approve the pairing code at Account → Self-hosted workers. See Build workers.
worker_metricsreadCPU, memory, free disk and running/queued history for one of your workers (1h, 24h or 7d).
worker_usagereadBuild minutes and build counts per worker for a month.
assign_worker_teamwriteAssign one of your workers to a team, or clear it with teamId: null.

Build and test configuration

These tools edit what the dashboard edits. Updates read the current value and merge, so a partial update never wipes the rest.

ToolScope neededWhat it does
get_build_configreadEverything that decides how a project builds: stack, build targets, commands per target, and settings such as root directory and default branch. Read it before changing any of them.
list_branchesreadList the repository's branches.
update_build_commandswriteChange the build commands for a platform.
reset_build_commandswriteReset build commands back to the defaults.
update_build_targetwriteAdd or change a build target.
remove_build_targetwriteRemove a build target.
set_build_stackwriteSet the project's build stack (for example Expo or React Native).
update_project_settingswriteChange project settings such as the root directory.
list_env_varsreadList the project's build environment variable names (values are always masked).
set_env_varwriteCreate or update a project environment variable, optionally marked secret.
delete_env_varwriteDelete a project environment variable.
sync_build_fileswriteUpload gitignored files a build needs (for example google-services.json, a keystore, local.properties) from this machine. They are stored encrypted and written into the build workspace.
test_runsreadRecent app test (Maestro) runs and results, plus the current test configuration.
update_test_configwriteChange the project's app test (Maestro) configuration.
list_web_sitesreadList the project's web test sites.
get_web_site_configreadShow a web test site's configuration.
web_test_runsreadRecent web test (Playwright) runs and results.
create_web_sitewriteAdd a web test site.
update_web_sitewriteChange a web test site.
update_web_site_configwriteChange a web test site's test configuration.
set_web_site_secretswriteSet or delete a web test site's secrets (env vars for repo-mode runs). Other keys are kept.
delete_web_sitewriteDelete a web test site.
run_web_testwriteStart a web test run for a site.
validate_web_flowwriteCheck a no-code web flow (browser steps) and return it normalized, without saving anything.
approve_web_baselinewriteAccept a web test run's screenshots as the new visual-diff baseline (all of them, or the ones you name).

sync_local_ios_signing only syncs one extra provisioning profile per project today (whichever sub-bundle-ID extension is found locally — typically a share extension). If your app has multiple extension targets, the tool's response lists every extension bundle ID it found so you can see what was skipped.

Set up a project automatically

Open the repository you want to build in Claude Code, Cursor or any MCP client with the Venelx server installed, and paste this prompt. The assistant scans the repo, creates the Venelx project, and walks you through the rest, asking before it uploads anything sensitive.

Prompt for AI

Set up this repo on Venelx

Set up this repository on Venelx using the venelx MCP server.

1. Run detect_project_setup on this repo and show me what it found (GitHub URL, branch,
   build stack, platforms, app folder). If there is no GitHub remote, stop and tell me:
   Venelx builds from GitHub.
2. Call create_project with the detected name, githubUrl, buildStack and defaultBranch.
   If the stack is ambiguous, ask me which one.
3. If the app is not in the repo root, call update_project_settings with the rootDirectory.
4. For every key in envKeys, ask me for the value (do not read my .env file) and set it
   with set_env_var. Mark secrets as secret.
5. If detect_project_setup lists gitignored build files (google-services.json, keystore,
   local.properties), upload them with sync_build_files, after telling me which files.
6. Signing: run discover_local_ios_signing and discover_local_android_signing, show me
   what was found, and only sync after I say yes. Then check signing_status.
7. Run list_workers. If no worker is online, call worker_install_command and give me the
   command to run on the build machine, then wait for me to confirm it is paired.
8. Call trigger_build for the main platform, follow it with build_status and tail_logs, and
   if it fails, diagnose it. Fix build configuration with get_build_config and
   update_build_commands; do not change my source code unless I ask.
9. Finish with a short summary: project id, what was configured, build result, anything left.

Rules: never print token values or secret values; ask before any step that uploads
credentials; stop and ask if something is unclear.

The same prompt is available as plain text at docs.venelx.com/ai-setup-prompt.txt, and on the Set up with AI page.

Before you start

  • Connect GitHub to your Venelx account (Account → GitHub). create_project needs it to link the repository.
  • Use a token with the write scope (npx @venelx/mcp login grants it). Read-only tokens can scan and inspect but cannot create or change anything.
  • Push the repo to GitHub first. The scan reads the local origin remote.

detect_project_setup is read-only and runs on your machine. It reads key names from .env.example and never reads .env values. Signing files and secrets are only uploaded by the explicit sync tools, after you approve them.

Troubleshooting

  • 401 Authentication failed — VENELX_TOKEN is missing, wrong, or revoked. Run npx @venelx/mcp login again, or create a new token at Account → API tokens and update your MCP config.
  • 403 Forbidden on trigger_build — your token only has the read scope. Create a token with the write scope.
  • Could not reach the Venelx API (ECONNREFUSED / ENOTFOUND) — the API base URL is unreachable. Check VENELX_API_URL (defaults to https://api.venelx.com) and your network.
  • Nothing happens / no output — MCP servers speak JSON-RPC on stdout; run it through your MCP client, not directly in a terminal. Diagnostics are printed to stderr.

Never paste a vx_ token into a chat, a commit, or a client config file that is checked into git. If a token leaks, revoke it immediately in the dashboard.