MCP Tools
Connect Claude and other AI agents to getlaunch.dev using the Model Context Protocol.
Connecting
There are two ways to connect an MCP client:
OAuth 2.0 — claude.ai and OAuth-capable clients
For clients that support OAuth (such as claude.ai), no API key setup is required:
- In your AI client, add a new MCP server with URL
https://api.getlaunch.dev/mcp, give it a name (e.g.getlaunch), and click Connect - You'll be redirected to the getlaunch.dev authorization page
- Review the requested permissions and click Allow
- The client receives access automatically — no copy-pasting required
The granted token appears in your API Keys list as oauth2:<client-name>. Delete it there to revoke access at any time.
API Key — Claude Desktop · Claude Code CLI · custom tools
For clients that require manual configuration, create an API key at Dashboard → API Keys and add it to your client config.
| Endpoint | POST https://api.getlaunch.dev/mcp |
| Auth | Authorization: Bearer <api-key> |
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"getlaunch": {
"type": "http",
"url": "https://api.getlaunch.dev/mcp",
"headers": {
"Authorization": "Bearer glk_your_key_here"
}
}
}
}
Claude Code (CLI)
claude mcp add --transport http getlaunch https://api.getlaunch.dev/mcp \
--header "Authorization: Bearer glk_your_key_here"
Grant only the scopes your AI assistant needs.
Required Scopes
| Scope | Tools unlocked |
|---|---|
projects:read | list_projects, get_project, list_vcs_connections, list_repositories |
projects:write | create_project, update_project, create_storage_project, delete_project, get_github_connect_url |
deployments:read | list_deployments, get_deployment_logs, get_container_logs |
deployments:write | trigger_deployment |
files:read | list_project_files |
files:write | upload_static_files |
billing:read | get_subscription, list_invoices, get_quota |
18 tools total.
Tool Reference
Projects
list_projects · projects:read
List all projects owned by the authenticated user with latest deployment status.
Returns: id, name, deployment_type, generated_by, branch, service_url, latest_deployment_status, deployed_at
No parameters.
get_project · projects:read
Get full configuration and metadata of a specific project.
Returns: id, name, slug, deployment_type, generated_by, repository_url, branch, auto_deploy, port, service_url, env_var_keys, created_at
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | ✅ | Obtain from list_projects |
create_project · projects:write
Create a project backed by a GitHub repository.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | ✅ | Human-readable name |
vcs_connection_id | string | ✅ | From list_vcs_connections |
repository_url | string | ✅ | Full HTTPS clone URL, from list_repositories |
deployment_type | string | ✅ | container or static_web |
branch | string | Defaults to main | |
port | number | Container port, defaults to 3000 | |
dockerfile_path | string | Relative path to Dockerfile | |
auto_deploy | boolean | Auto-deploy on push, defaults to false |
update_project · projects:write
Update project configuration. All fields optional — omit to keep current value.
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | ✅ | |
branch | string | ||
auto_deploy | string | "true" or "false" | |
port | number | Container only | |
dockerfile_path | string | Container only | |
env_vars_json | string | JSON object e.g. {"KEY":"value"} — replaces all env vars |
create_storage_project · projects:write
Create a storage project for hosting static files without a git repository.
Returns: id, name, slug, created_at
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | ✅ | Human-readable name |
delete_project · projects:write
Permanently delete a project and all its resources. Irreversible.
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | ✅ |
Files
upload_static_files · files:write
Upload files to a storage project and deploy them live. Triggers deployment automatically — response includes public_url.
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | ✅ | Must be a storage project |
files_json | string | ✅ | JSON array: [{"path":"index.html","content":"...","content_type":"text/html"}]. content_type is optional. |
list_project_files · files:read
List files currently deployed in a storage project.
Returns: path, size (bytes), last_modified
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | ✅ | Must be a storage project |
Deployments
trigger_deployment · deployments:write
Trigger a build and deployment for a git-backed project.
Returns: id, status, created_at
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | ✅ | |
commit_sha | string | Defaults to latest commit on branch |
list_deployments · deployments:read
List recent deployments for a project, newest first.
Returns: id, status, commit_sha, deployment_type, public_url, error_message, deployed_at, created_at
Status values: pending · building · deploying · running · failed · superseded
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | ✅ | |
limit | number | 1–50, defaults to 10 |
get_deployment_logs · deployments:read
Fetch raw build logs for a specific deployment.
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | ✅ | |
deployment_id | string | ✅ | From list_deployments or trigger_deployment |
get_container_logs · deployments:read
Fetch recent runtime logs from a live container (last ~100 lines, last 15 minutes). Container projects only. For a pay-as-you-go web app, which has no runtime logs yet, it returns the app's health summary for the last 24 hours instead.
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | ✅ | Must be a container project |
GitHub
list_vcs_connections · projects:read
List connected GitHub accounts.
Returns: id, provider, created_at
No parameters.
get_github_connect_url · projects:write
Generate a one-time OAuth URL for connecting a GitHub account. User must open it in a browser.
No parameters.
list_repositories · projects:read
List GitHub repositories accessible via a VCS connection.
Returns: id, name, full_name, clone_url, private, default_branch
| Parameter | Type | Required | Description |
|---|---|---|---|
connection_id | string | ✅ | From list_vcs_connections |
Billing
get_subscription · billing:read
Get current subscription status.
Returns: tier_name, status, cycle_start, cycle_end, cancelled_at, grace_period_until
No parameters.
list_invoices · billing:read
List all invoices, newest first.
Returns: id, month, base_fee_idr, overage_fee_idr, total_idr, payment_status, period_start, period_end, paid_at
No parameters.
get_quota · billing:read
Get resource limits for the current subscription tier.
Returns: containers, static_sites, cpu_hours, requests, data_transfer_gb, storage_gb, is_custom
No parameters.
Tips
Start read-only. Give the AI projects:read + deployments:read first. Once you trust it, add write scopes.
Separate keys per client. One key for Claude Desktop, another for automations. Makes it easy to revoke one without breaking everything else.
delete_project is irreversible. If you don't want the AI to be able to delete projects, don't grant projects:write — or grant it only temporarily.
env_vars_json replaces all env vars. When calling update_project, always fetch the current env var keys with get_project first, then reconstruct the full set.
What's Next
- Create an API key: API Keys
- Deploy a container: Containers
- Deploy a static site: Static Sites

