# Deploy from Windsurf

> Connect Windsurf to Ploi Cloud over MCP and deploy from Cascade.

Deploy from Windsurf
---------------------

Windsurf is Codeium's AI-first editor, and Cascade is its agent surface. With Ploi Cloud connected as a Model Context Protocol (MCP) server, Cascade can create applications, attach managed services like Postgres or Redis, deploy from Git, watch deployments as they run, and read application and build logs from inside the chat panel. The connection takes a small JSON file and a single OAuth approval. After that, every Cascade session has Ploi Cloud at its fingertips, and you can ship a full-stack app from the same conversation where you wrote the code, without switching tabs to a separate console.

## Add Ploi Cloud to Windsurf

Windsurf reads its MCP servers from `~/.codeium/windsurf/mcp_config.json`. Create the file if it does not exist and add:

```json
{
  "mcpServers": {
    "ploi-cloud": {
      "serverUrl": "https://ploi.cloud/mcp"
    }
  }
}
```

Note that Windsurf uses `serverUrl` (with a capital U) rather than `url`. Save the file and either restart Windsurf or click the refresh button in the Cascade MCP panel.

## Authorize

The first time Cascade calls a Ploi Cloud tool, it shows a confirmation prompt in the chat with the tool name and the arguments it plans to send. Approve the call, and Cascade opens your browser to the Ploi Cloud OAuth consent screen. Sign in, approve the requested scopes, and Cascade stores the token locally. The browser tab closes itself and you return to chat. Subsequent calls use the cached token until it expires.

## Deploy your first app

Three example prompts.

> **You:** Deploy my Laravel app from github.com/myorg/checkout-service to Ploi Cloud.
>
> **Cascade:** Creating `checkout-service` on Ploi Cloud. PHP 8.3 with extensions detected from composer.json. MySQL and Redis added based on dependencies. Build configured, deploying. Live at https://checkout-service.ams.preview.ploi.it.

> **You:** Deploy this Next.js app from github.com/myorg/dashboard.
>
> **Cascade:** Creating `dashboard`. Next.js 15 detected, Postgres attached. Deploying. Live at https://dashboard.ams.preview.ploi.it.

> **You:** Deploy github.com/myorg/agency-blog as a WordPress site.
>
> **Cascade:** Creating `agency-blog`. WordPress detected, MySQL added, persistent volume mounted on wp-content/uploads. Deploying. Live at https://agency-blog.ams.preview.ploi.it.

## Where Cascade tool calls show up

Tool calls appear inline in the Cascade chat as collapsible blocks. Each block shows the tool name (for example `applications_store`) at the top and the request payload below. Click to expand and see the full JSON. The response from Ploi Cloud appears in the next block as the assistant's reply.

If you have approval mode enabled (Settings, Cascade, Tool approvals), every write call (create, update, delete) waits for a click before executing. Read calls (list, show, status) run immediately. This is useful when you want to keep tight control over what the agent changes in production.

## Common prompts

| Prompt | What Cascade does |
|--------|-------------------|
| `Deploy my app from github.com/org/repo` | Creates the application and triggers a deploy |
| `List my apps on Ploi Cloud` | Calls `applications_index` |
| `Add Postgres to my-app` | Calls `v1_applications_services_store` |
| `Set the secret OPENAI_API_KEY` | Calls `applications_secrets_store` |
| `Tail the logs for my-app` | Calls `applications_logs` |
| `Roll back the last deploy` | Calls `applications_rollback` |
| `Add api.example.com to my-app` | Calls `applications_domains_store` |
| `Check SSL on api.example.com` | Calls `applications_domains_ssl-status` |
| `Increase memory to 2Gi` | Calls `applications_resources_update` |
| `Suspend the staging app` | Calls `applications_suspend` |

## Troubleshooting

### Windsurf does not pick up the config

Confirm the path is exactly `~/.codeium/windsurf/mcp_config.json`. Windsurf does not look anywhere else. If the file is correct, open the Cascade MCP panel and click refresh. If `ploi-cloud` still does not appear, validate the JSON (a trailing comma is enough to break it) and restart Windsurf.

### OAuth stuck on consent screen

This usually means a popup blocker swallowed the redirect. Open Windsurf's MCP logs, find the OAuth callback URL, and paste it into a browser tab manually. Cascade picks up the resulting token from the redirect.

### ploi-cloud tools greyed out

Greyed-out tools mean the connection registered but the OAuth handshake never completed. Hover over the entry to see the error, then click "Reauthorize" to retry.

### How to check the connection from Cascade

Ask Cascade: "Are you connected to Ploi Cloud? Show me my user info." Cascade will call `user_show` and either return your account details or report the connection error in plain English. You can do the same thing for the active team with "Which Ploi Cloud team am I in right now?", which calls `teams_show` and confirms the team your tools currently target.

## Next steps

- Read the [marketing overview](/features/ai)
- Try the same workflow in [Claude Code](/documentation/ai/claude-code) or [Cursor](/documentation/ai/cursor)
- Browse the full [available AI tools](/documentation/ai/available-tools) reference
