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 (recommended, nothing to copy-paste) — run
Browser login
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
| Scope | What it allows |
|---|---|
read | All read-only tools (list projects, status, logs, artifacts, …) |
write | Everything 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 variable | Required | Default | Description |
|---|---|---|---|
VENELX_TOKEN | no* | — | Personal API token (vx_...). *Not needed after npx @venelx/mcp login — falls back to ~/.venelx/mcp-token. |
VENELX_API_URL | no | https://api.venelx.com | API base URL (self-hosted etc.) |
Install & run
Claude Code
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:
{
"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:
{
"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
| Tool | Scope needed | What it does |
|---|---|---|
list_projects | read | List projects the token can access (id, name, GitHub URL, platforms, role). |
get_project | read | Project details plus a GitHub access summary. |
trigger_build | write | Queue a build for a platform (ios, android, …). Surfaces skipReason (e.g. signing_not_ready, github_token_invalid). |
build_status | read | Current pipeline status per platform + the 10 most recent builds. |
tail_logs | read | Last N lines of a build log (latest build, or a given buildId). |
list_artifacts | read | Build artifacts for a project. |
list_workers | read | Build workers owned by the account (name, status, capabilities). |
signing_status | read | Code-signing readiness, optionally per platform (ios/android). |
github_access | read | GitHub repo access diagnosis: githubAccess {ok, reason, message} + auth source label. |
discover_local_ios_signing | read | macOS only. List provisioning profiles and Keychain code-signing identities on this machine. Read-only, nothing uploaded. |
sync_local_ios_signing | write | macOS 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_signing | read | Scan a local project checkout's android/ dir for a keystore + gradle.properties credentials. Read-only. |
sync_local_android_signing | write | Upload a local project checkout's release keystore as this project's Android signing credentials. |
Onboarding and workers
| Tool | Scope needed | What it does |
|---|---|---|
detect_project_setup | read | Scan 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_project | write | Create a Venelx project linked to a GitHub repository and register the push webhook. Returns the next steps. |
worker_install_command | read | The 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_metrics | read | CPU, memory, free disk and running/queued history for one of your workers (1h, 24h or 7d). |
worker_usage | read | Build minutes and build counts per worker for a month. |
assign_worker_team | write | Assign 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.
| Tool | Scope needed | What it does |
|---|---|---|
get_build_config | read | Everything 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_branches | read | List the repository's branches. |
update_build_commands | write | Change the build commands for a platform. |
reset_build_commands | write | Reset build commands back to the defaults. |
update_build_target | write | Add or change a build target. |
remove_build_target | write | Remove a build target. |
set_build_stack | write | Set the project's build stack (for example Expo or React Native). |
update_project_settings | write | Change project settings such as the root directory. |
list_env_vars | read | List the project's build environment variable names (values are always masked). |
set_env_var | write | Create or update a project environment variable, optionally marked secret. |
delete_env_var | write | Delete a project environment variable. |
sync_build_files | write | Upload 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_runs | read | Recent app test (Maestro) runs and results, plus the current test configuration. |
update_test_config | write | Change the project's app test (Maestro) configuration. |
list_web_sites | read | List the project's web test sites. |
get_web_site_config | read | Show a web test site's configuration. |
web_test_runs | read | Recent web test (Playwright) runs and results. |
create_web_site | write | Add a web test site. |
update_web_site | write | Change a web test site. |
update_web_site_config | write | Change a web test site's test configuration. |
set_web_site_secrets | write | Set or delete a web test site's secrets (env vars for repo-mode runs). Other keys are kept. |
delete_web_site | write | Delete a web test site. |
run_web_test | write | Start a web test run for a site. |
validate_web_flow | write | Check a no-code web flow (browser steps) and return it normalized, without saving anything. |
approve_web_baseline | write | Accept 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_projectneeds it to link the repository. - Use a token with the write scope (
npx @venelx/mcp logingrants 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
originremote.
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_TOKENis missing, wrong, or revoked. Runnpx @venelx/mcp loginagain, or create a new token at Account → API tokens and update your MCP config. - 403 Forbidden on
trigger_build— your token only has thereadscope. 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 tohttps://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.