Skip to main content
Glama
Laravel Cloud MCP Server

Laravel Cloud MCP Server

by captenmasin

Laravel Cloud MCP Server

MCP server for Laravel Cloud account management using the Laravel Cloud API.

It ships with two transports that share the same tools:

  • stdio — run locally, launched by your MCP client. Authenticates with a LARAVEL_CLOUD_API_TOKEN from the environment (src/index.ts).

  • Cloudflare Worker — remote, multi-tenant Streamable HTTP server. Each caller supplies their own Laravel Cloud token as Authorization: Bearer <token>; nothing is stored on the Worker (src/worker.ts). See Deploy to Cloudflare and Use with Poke.

Setup (local stdio)

npm install
npm run build

Create a Laravel Cloud API token from your Laravel Cloud organization settings, then configure your MCP client to launch this server with the token in the environment:

{
  "mcpServers": {
    "laravel-cloud": {
      "command": "node",
      "args": ["/path/to/laravel-cloud-mcp-server/dist/index.js"],
      "env": {
        "LARAVEL_CLOUD_API_TOKEN": "your-laravel-cloud-api-token"
      }
    }
  }
}

API tokens are scoped to a single organization, so the server operates on the organization that issued the token.

Optional environment variables:

  • LARAVEL_CLOUD_API_BASE_URL: override the API base URL. Defaults to https://cloud.laravel.com/api.

  • LARAVEL_CLOUD_USER_AGENT: override the user agent sent to Laravel Cloud. Defaults to laravel-cloud-mcp-server/1.0.0.

Related MCP server: forge-mcp-server

Deploy to Cloudflare

The Worker exposes the same tools over the MCP Streamable HTTP transport at /mcp (legacy SSE at /sse), backed by a Durable Object via the agents SDK. GET / is a health check.

Authentication is multi-tenant and pass-through. The Worker stores no Laravel Cloud credentials. Every request must carry the caller's own Laravel Cloud token as Authorization: Bearer <token>; that token is bound to the MCP session and used for all Laravel Cloud API calls in that session. Requests without a bearer token get 401.

Deploy

npm install
npx wrangler login
npm run deploy        # deploys to https://laravel-cloud-mcp-server.<subdomain>.workers.dev

No secrets to configure. Optional LARAVEL_CLOUD_API_BASE_URL / LARAVEL_CLOUD_USER_AGENT overrides can be added under vars in wrangler.jsonc.

Local development

npm run dev           # local worker at http://localhost:8787

Pass a token per request, e.g.:

curl -s http://localhost:8787/health
curl -s -X POST http://localhost:8787/mcp \
  -H "Authorization: Bearer <your-laravel-cloud-token>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"dev","version":"0"}}}'

After editing wrangler.jsonc, run npm run cf-typegen (wrangler types) and typecheck the Worker with npm run typecheck:worker.

Use with Poke

Poke sends the integration's API key as Authorization: Bearer <key> on every request — so each user simply pastes their own Laravel Cloud API token as the key, and the Worker uses it for that user.

  1. Deploy the Worker (above) and note its URL.

  2. In Poke, add an MCP integration:

    • URL: https://laravel-cloud-mcp-server.<subdomain>.workers.dev/mcp

    • API Key: the user's Laravel Cloud API token

    Or via CLI:

    npx poke@latest mcp add \
      https://laravel-cloud-mcp-server.<subdomain>.workers.dev/mcp \
      -n "Laravel Cloud" -k "<user-laravel-cloud-api-token>"

Each Poke user's token only ever touches their own session; the Worker keeps no copy. If a request arrives without a token, or the token is rejected by Laravel Cloud, the corresponding tool call returns an error.

Tools

Meta

  • laravel_cloud_get_organization

  • laravel_cloud_list_regions

  • laravel_cloud_get_usage

  • laravel_cloud_list_dedicated_clusters

Applications

  • laravel_cloud_list_applications

  • laravel_cloud_get_application

  • laravel_cloud_create_application

  • laravel_cloud_update_application

  • laravel_cloud_delete_application

  • laravel_cloud_delete_application_avatar

Environments

  • laravel_cloud_list_environments

  • laravel_cloud_get_environment

  • laravel_cloud_create_environment

  • laravel_cloud_update_environment

  • laravel_cloud_delete_environment

  • laravel_cloud_start_environment

  • laravel_cloud_stop_environment

  • laravel_cloud_get_environment_metrics

  • laravel_cloud_list_environment_logs

  • laravel_cloud_purge_edge_cache

  • laravel_cloud_add_environment_variables

  • laravel_cloud_delete_environment_variables

Domains

  • laravel_cloud_list_domains

  • laravel_cloud_get_domain

  • laravel_cloud_create_domain

  • laravel_cloud_update_domain

  • laravel_cloud_delete_domain

  • laravel_cloud_verify_domain

Commands

  • laravel_cloud_list_commands

  • laravel_cloud_get_command

  • laravel_cloud_run_command

Deployments

  • laravel_cloud_list_deployments

  • laravel_cloud_get_deployment

  • laravel_cloud_get_deployment_logs

  • laravel_cloud_initiate_deployment

Instances & managed queues

  • laravel_cloud_list_instances

  • laravel_cloud_get_instance

  • laravel_cloud_create_instance

  • laravel_cloud_update_instance

  • laravel_cloud_delete_instance

  • laravel_cloud_list_instance_sizes

  • laravel_cloud_set_default_managed_queue

  • laravel_cloud_pause_managed_queue

  • laravel_cloud_resume_managed_queue

  • laravel_cloud_purge_managed_queue

  • laravel_cloud_list_failed_jobs

  • laravel_cloud_retry_failed_job

  • laravel_cloud_delete_failed_job

Background processes

  • laravel_cloud_list_background_processes

  • laravel_cloud_get_background_process

  • laravel_cloud_create_background_process

  • laravel_cloud_update_background_process

  • laravel_cloud_delete_background_process

Caches

  • laravel_cloud_list_caches

  • laravel_cloud_list_cache_types

  • laravel_cloud_get_cache

  • laravel_cloud_create_cache

  • laravel_cloud_update_cache

  • laravel_cloud_delete_cache

  • laravel_cloud_get_cache_metrics

Database clusters & databases

  • laravel_cloud_list_database_clusters

  • laravel_cloud_list_database_types

  • laravel_cloud_get_database_cluster

  • laravel_cloud_create_database_cluster

  • laravel_cloud_update_database_cluster

  • laravel_cloud_delete_database_cluster

  • laravel_cloud_get_database_cluster_metrics

  • laravel_cloud_list_databases

  • laravel_cloud_get_database

  • laravel_cloud_create_database

  • laravel_cloud_delete_database

Database snapshots & restores

  • laravel_cloud_list_database_snapshots

  • laravel_cloud_get_database_snapshot

  • laravel_cloud_create_database_snapshot

  • laravel_cloud_delete_database_snapshot

  • laravel_cloud_create_database_restore

Object storage buckets & keys

  • laravel_cloud_list_buckets

  • laravel_cloud_get_bucket

  • laravel_cloud_create_bucket

  • laravel_cloud_update_bucket

  • laravel_cloud_delete_bucket

  • laravel_cloud_list_bucket_keys

  • laravel_cloud_get_bucket_key

  • laravel_cloud_create_bucket_key

  • laravel_cloud_update_bucket_key

  • laravel_cloud_delete_bucket_key

WebSocket clusters & applications

  • laravel_cloud_list_websocket_clusters

  • laravel_cloud_get_websocket_cluster

  • laravel_cloud_create_websocket_cluster

  • laravel_cloud_update_websocket_cluster

  • laravel_cloud_delete_websocket_cluster

  • laravel_cloud_get_websocket_cluster_metrics

  • laravel_cloud_list_websocket_applications

  • laravel_cloud_get_websocket_application

  • laravel_cloud_create_websocket_application

  • laravel_cloud_update_websocket_application

  • laravel_cloud_delete_websocket_application

  • laravel_cloud_get_websocket_application_metrics

Destructive tools (deletes plus managed-queue purges) require a confirm: true argument.

The deprecated Databases (Legacy) endpoints and the binary application avatar upload endpoint are intentionally omitted; use the database-cluster tools and the Laravel Cloud dashboard for those.

Available Tools

98 tools
laravel_cloud_add_environment_variablesAdd environment variablesA

Add or replace environment variables on an environment.

Inputs: method (required), variables (required), environment (required).

laravel_cloud_create_applicationCreate applicationB

Create a new application from a source control repository.

Inputs: name (required), region (required), repository (required), cluster_id, +1 more.

laravel_cloud_create_background_processCreate background processB

Create a new background process for an instance.

Inputs: type (required), instance (required), processes (required), config, +1 more.

laravel_cloud_create_bucketCreate object storage bucketA

Create a new object storage bucket with an initial access key.

Inputs: name (required), key_name (required), visibility (required), jurisdiction (required), +2 more.

laravel_cloud_create_bucket_keyCreate object storage keyB

Create a new key for an object storage bucket.

Inputs: name (required), filesystem (required), permission (required).

laravel_cloud_create_cacheCreate cacheC

Create a new cache.

Inputs: name (required), size (required), type (required), region (required), +3 more.

laravel_cloud_create_databaseCreate databaseA

Create a new database in a database cluster.

Inputs: name (required), database (required).

laravel_cloud_create_database_clusterCreate database clusterA

Create a new database cluster. The config object's fields vary by database type; see laravel_cloud_list_database_types.

Inputs: name (required), type (required), config (required), region (required), +1 more.

laravel_cloud_create_database_restoreCreate database restoreA

Restore a database cluster from a point in time or snapshot into a new database.

Inputs: name (required), database (required), restore_time, database_snapshot_id.

laravel_cloud_create_database_snapshotCreate database snapshotA

Create a new manual snapshot for a database cluster.

Inputs: name (required), database (required), description.

laravel_cloud_create_domainCreate domainB

Create a new domain for the given environment.

Inputs: name (required), environment (required), www_redirect, allow_downtime, +3 more.

laravel_cloud_create_environmentCreate environmentB

Create a new environment for an application.

Inputs: name (required), branch (required), application (required), cluster_id.

laravel_cloud_create_instanceCreate instanceB

Create a new instance (service or managed queue) for an environment.

Inputs: name (required), size (required), type (required), environment (required), +11 more.

laravel_cloud_create_websocket_applicationCreate WebSocket applicationB

Create a new application for a WebSocket cluster.

Inputs: name (required), websocket_server (required), ping_interval, allowed_origins, +1 more.

laravel_cloud_create_websocket_clusterCreate WebSocket clusterA

Create a new WebSocket cluster with a default application.

Inputs: name (required), type (required), region (required), max_connections (required).

laravel_cloud_delete_applicationDelete applicationA
Destructive

Delete an application and all of its environments. This is irreversible.

Inputs: confirm (required), application (required).

laravel_cloud_delete_application_avatarDelete application avatarB

Remove the avatar from an application.

Inputs: application (required).

laravel_cloud_delete_background_processDelete background processC
Destructive

Delete a background process.

Inputs: confirm (required), background_process (required).

laravel_cloud_delete_bucketDelete object storage bucketB
Destructive

Delete an object storage bucket.

Inputs: confirm (required), filesystem (required).

laravel_cloud_delete_bucket_keyDelete object storage keyB
Destructive

Delete an object storage key.

Inputs: confirm (required), filesystem_key (required).

laravel_cloud_delete_cacheDelete cacheC
Destructive

Delete a cache.

Inputs: cache (required), confirm (required).

laravel_cloud_delete_databaseDelete databaseC
Destructive

Delete a database from a database cluster.

Inputs: schema (required), confirm (required), database (required).

laravel_cloud_delete_database_clusterDelete database clusterB
Destructive

Delete a database cluster. This is irreversible.

Inputs: confirm (required), database (required).

laravel_cloud_delete_database_snapshotDelete database snapshotB
Destructive

Delete a database snapshot.

Inputs: confirm (required), database_snapshot (required).

laravel_cloud_delete_domainDelete domainB
Destructive

Delete a specific domain.

Inputs: domain (required), confirm (required).

laravel_cloud_delete_environmentDelete environmentA
Destructive

Delete an environment. This is irreversible.

Inputs: confirm (required), environment (required).

laravel_cloud_delete_environment_variablesDelete environment variablesB
Destructive

Remove specific environment variables by key name.

Inputs: keys (required), confirm (required), environment (required).

laravel_cloud_delete_failed_jobDelete managed queue failed jobA
Destructive

Permanently remove a failed job from the given managed queue.

Inputs: job_id (required), confirm (required), instance (required).

laravel_cloud_delete_instanceDelete instanceB
Destructive

Delete an instance.

Inputs: confirm (required), instance (required).

laravel_cloud_delete_websocket_applicationDelete WebSocket applicationB
Destructive

Delete a WebSocket application.

Inputs: confirm (required), websocket_application (required).

laravel_cloud_delete_websocket_clusterDelete WebSocket clusterA
Destructive

Delete a WebSocket cluster and all its applications.

Inputs: confirm (required), websocket_server (required).

laravel_cloud_get_applicationGet applicationA
Read-onlyIdempotent

Get a specific application.

Inputs: application (required), include.

laravel_cloud_get_background_processGet background processA
Read-onlyIdempotent

Get the details of a specific background process.

Inputs: background_process (required), include.

laravel_cloud_get_bucketGet object storage bucketA
Read-onlyIdempotent

Get a specific object storage bucket.

Inputs: filesystem (required), include.

laravel_cloud_get_bucket_keyGet object storage keyA
Read-onlyIdempotent

Get a specific object storage key.

Inputs: filesystem_key (required), include.

laravel_cloud_get_cacheGet cacheA
Read-onlyIdempotent

Get a specific cache.

Inputs: cache (required).

laravel_cloud_get_cache_metricsGet cache metricsA
Read-onlyIdempotent

Get metrics for a specific cache.

Inputs: cache (required), period.

laravel_cloud_get_commandGet commandB
Read-onlyIdempotent

Get the details of a specific command.

Inputs: command (required), include.

laravel_cloud_get_databaseGet databaseA
Read-onlyIdempotent

Get a specific database within a cluster.

Inputs: schema (required), database (required), include.

laravel_cloud_get_database_clusterGet database clusterB
Read-onlyIdempotent

Get a specific database cluster.

Inputs: database (required), include.

laravel_cloud_get_database_cluster_metricsGet database cluster metricsB
Read-onlyIdempotent

Get metrics for a specific database cluster.

Inputs: database (required), period.

laravel_cloud_get_database_snapshotGet database snapshotA
Read-onlyIdempotent

Get a specific database snapshot.

Inputs: database_snapshot (required), include.

laravel_cloud_get_deploymentGet deploymentA
Read-onlyIdempotent

Get the details of a specific deployment.

Inputs: deployment (required), include.

laravel_cloud_get_deployment_logsGet deployment logsA
Read-onlyIdempotent

Get the build and deploy logs for a specific deployment.

Inputs: deployment (required).

laravel_cloud_get_domainGet domainA
Read-onlyIdempotent

Show a specific domain.

Inputs: domain (required), verify, include.

laravel_cloud_get_environmentGet environmentB
Read-onlyIdempotent

Get a specific environment.

Inputs: environment (required), include.

laravel_cloud_get_environment_metricsGet environment metricsC
Read-onlyIdempotent

Get metrics for a specific environment.

Inputs: environment (required), period.

laravel_cloud_get_instanceGet instanceA
Read-onlyIdempotent

Get the details of a specific instance.

Inputs: instance (required), include.

laravel_cloud_get_organizationGet organizationA
Read-onlyIdempotent

Get details about the currently authenticated Laravel Cloud organization.

Inputs: no named parameters.

laravel_cloud_get_usageGet usageA
Read-onlyIdempotent

Get billing and usage data for the authenticated organization.

Inputs: period, environment.

laravel_cloud_get_websocket_applicationGet WebSocket applicationA
Read-onlyIdempotent

Get a specific WebSocket application including credentials.

Inputs: websocket_application (required), include.

laravel_cloud_get_websocket_application_metricsGet WebSocket application metricsA
Read-onlyIdempotent

Get metrics for a specific WebSocket application.

Inputs: websocket_application (required), period.

laravel_cloud_get_websocket_clusterGet WebSocket clusterC
Read-onlyIdempotent

Get a specific WebSocket cluster.

Inputs: websocket_server (required), include.

laravel_cloud_get_websocket_cluster_metricsGet WebSocket cluster metricsB
Read-onlyIdempotent

Get metrics for a specific WebSocket cluster.

Inputs: websocket_server (required), period.

laravel_cloud_initiate_deploymentInitiate deploymentC

Initiate a deployment for the given environment.

Inputs: environment (required).

laravel_cloud_list_applicationsList applicationsA
Read-onlyIdempotent

Get a list of all applications for the authenticated organization.

Inputs: name, slug, region, include.

laravel_cloud_list_background_processesList background processesA
Read-onlyIdempotent

Get a list of all background processes for the given instance.

Inputs: instance (required), include.

laravel_cloud_list_bucket_keysList object storage keysB
Read-onlyIdempotent

Get a list of all keys for a specific object storage bucket.

Inputs: filesystem (required), include.

laravel_cloud_list_bucketsList object storage bucketsB
Read-onlyIdempotent

Get a list of all object storage buckets for the authenticated organization.

Inputs: type, status, include, visibility.

laravel_cloud_list_cachesList cachesB
Read-onlyIdempotent

Get a list of all caches for the authenticated organization.

Inputs: type, region, status.

laravel_cloud_list_cache_typesList cache typesA
Read-onlyIdempotent

List all available cache types with their configuration options.

Inputs: no named parameters.

laravel_cloud_list_commandsList commandsA
Read-onlyIdempotent

Get a list of all commands for the given environment.

Inputs: environment (required), status, command, include.

laravel_cloud_list_database_clustersList database clustersA
Read-onlyIdempotent

Get a list of all database clusters for the authenticated organization.

Inputs: type, region, status, include.

laravel_cloud_list_databasesList databasesA
Read-onlyIdempotent

Get a list of all databases for a specific database cluster.

Inputs: database (required), include.

laravel_cloud_list_database_snapshotsList database snapshotsB
Read-onlyIdempotent

Get a list of all snapshots for a specific database cluster.

Inputs: database (required), include.

laravel_cloud_list_database_typesList database typesA
Read-onlyIdempotent

List all available database types with their configuration schemas.

Inputs: no named parameters.

laravel_cloud_list_dedicated_clustersList dedicated clustersA
Read-onlyIdempotent

Get a list of all dedicated clusters for the authenticated organization.

Inputs: type, region, status.

laravel_cloud_list_deploymentsList deploymentsA
Read-onlyIdempotent

Get a list of all deployments for the given environment.

Inputs: environment (required), status, include, branch_name, +1 more.

laravel_cloud_list_domainsList domainsB
Read-onlyIdempotent

List all domains for the given environment.

Inputs: environment (required), name, include, ssl_status, +2 more.

laravel_cloud_list_environment_logsList environment logsA
Read-onlyIdempotent

Get a list of logs for the given environment within a time range.

Inputs: to (required), from (required), environment (required), type, +5 more.

laravel_cloud_list_environmentsList environmentsA
Read-onlyIdempotent

Get a list of all environments for the given application.

Inputs: application (required), name, slug, status, +1 more.

laravel_cloud_list_failed_jobsList managed queue failed jobsA
Read-onlyIdempotent

Get a list of the jobs that have failed on the given managed queue.

Inputs: instance (required).

laravel_cloud_list_instancesList instancesB
Read-onlyIdempotent

Get a list of all instances for the given environment.

Inputs: environment (required), name, size, type, +2 more.

laravel_cloud_list_instance_sizesList instance sizesA
Read-onlyIdempotent

List all available instance sizes grouped by category.

Inputs: no named parameters.

laravel_cloud_list_regionsList regionsA
Read-onlyIdempotent

List all available Laravel Cloud regions.

Inputs: no named parameters.

laravel_cloud_list_websocket_applicationsList WebSocket applicationsA
Read-onlyIdempotent

Get a list of all applications for a specific WebSocket cluster.

Inputs: websocket_server (required), include.

laravel_cloud_list_websocket_clustersList WebSocket clustersA
Read-onlyIdempotent

Get a list of all WebSocket clusters for the authenticated organization.

Inputs: type, region, status, include.

laravel_cloud_pause_managed_queuePause managed queueA

Stop dispatching jobs to the queue's workers; queued messages are retained until resumed.

Inputs: instance (required).

laravel_cloud_purge_edge_cachePurge edge cacheB

Purge the edge cache for all domains associated with the environment.

Inputs: environment (required).

laravel_cloud_purge_managed_queuePurge managed queueA
Destructive

Permanently delete all messages currently in the queue. This cannot be undone.

Inputs: confirm (required), instance (required).

laravel_cloud_resume_managed_queueResume managed queueA

Resume dispatching jobs to the queue's workers after it was paused.

Inputs: instance (required).

laravel_cloud_retry_failed_jobRetry managed queue failed jobB

Re-queue a failed job so it is processed again.

Inputs: job_id (required), instance (required).

laravel_cloud_run_commandRun commandB

Run an Artisan or shell command on the given environment.

Inputs: command (required), environment (required).

laravel_cloud_set_default_managed_queueSet default managed queueA

Make this queue the environment's default, used when a job does not specify a queue.

Inputs: instance (required).

laravel_cloud_start_environmentStart environmentB

Start an environment and trigger a deployment.

Inputs: environment (required), redeploy.

laravel_cloud_stop_environmentStop environmentA

Stop an environment and cancel any in-progress deployment.

Inputs: environment (required).

laravel_cloud_update_applicationUpdate applicationC

Update an application.

Inputs: application (required), name, slug, repository, +3 more.

laravel_cloud_update_background_processUpdate background processB

Update a background process.

Inputs: background_process (required), type, config, command, +1 more.

laravel_cloud_update_bucketUpdate object storage bucketB

Update an object storage bucket.

Inputs: filesystem (required), name, visibility, cors_settings.

laravel_cloud_update_bucket_keyUpdate object storage keyC

Update an object storage key.

Inputs: name (required), filesystem_key (required).

laravel_cloud_update_cacheUpdate cacheC

Update a cache.

Inputs: cache (required), name, size, is_public, +2 more.

laravel_cloud_update_database_clusterUpdate database clusterB

Update a database cluster. The config object's fields vary by database type.

Inputs: config (required), database (required).

laravel_cloud_update_domainUpdate domainB

Update a specific domain.

Inputs: domain (required), verification_method (required).

laravel_cloud_update_environmentUpdate environmentB

Update an environment's deployment settings, runtime, and attached resources.

Inputs: environment (required), name, slug, color, +25 more.

laravel_cloud_update_instanceUpdate instanceB

Update an instance's size, scaling, and runtime settings.

Inputs: instance (required), name, size, uses_octane, +12 more.

laravel_cloud_update_websocket_applicationUpdate WebSocket applicationC

Update a WebSocket application.

Inputs: websocket_application (required), name, ping_interval, allowed_origins, +1 more.

laravel_cloud_update_websocket_clusterUpdate WebSocket clusterC

Update a WebSocket cluster.

Inputs: websocket_server (required), name, max_connections.

laravel_cloud_verify_domainVerify domainB

Check whether the DNS records for a given domain have been properly set up.

Inputs: domain (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 98 tools

    Disambiguation5/5

    Each tool targets a distinct resource and action. Even with 98 tools, the descriptions clearly differentiate them, and there is no overlap in purpose across categories like applications, environments, databases, etc.

    Naming Consistency5/5

    All tools follow the consistent pattern laravel_cloud_<verb>_<noun> using snake_case. Verbs are standard (list, get, create, update, delete, etc.), and resource names are consistent throughout.

    Tool Count2/5

    98 tools is excessive for typical MCP usage. While the domain is broad, this number overwhelms agents and increases context length. Most servers function well with fewer than 25 tools.

    Completeness4/5

    The tool surface covers a wide range of Laravel Cloud resources (applications, environments, databases, caches, buckets, websockets, etc.). Minor gaps exist, such as missing a 'list environment variables' tool, but core workflows are well-covered.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers