> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dedaluslabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Deploy

> Host your MCP server and share it with others.

Deploy your server to the Dedalus platform. Once deployed, you can:

* **Access it from anywhere** — No local server required.
* **Share with others** — Let anyone use your MCP server.
* **Monetize** — In the future, earn revenue sharing when others use your server.

<Steps>
  <Step title="Go to Dashboard">
    Go to [dedaluslabs.ai](https://dedaluslabs.ai) and click **Dashboard**.

    <Frame>
      <img src="https://mintcdn.com/dedaluslabs/B1H5mDK6z8NfutJN/assets/images/deploy-step-1.png?fit=max&auto=format&n=B1H5mDK6z8NfutJN&q=85&s=bbe5178e40083be29171e9f32ebf09c9" alt="Dedalus homepage with Dashboard button" width="900" height="484" data-path="assets/images/deploy-step-1.png" />
    </Frame>
  </Step>

  <Step title="Add Server">
    Click `Add Server` to create a new deployment.

    <Frame>
      <img src="https://mintcdn.com/dedaluslabs/B1H5mDK6z8NfutJN/assets/images/deploy-step-2.png?fit=max&auto=format&n=B1H5mDK6z8NfutJN&q=85&s=709b83906d8f4baba980b6b4dd981ffa" alt="Servers page with Add Server button" width="900" height="473" data-path="assets/images/deploy-step-2.png" />
    </Frame>
  </Step>

  <Step title="Connect Repository">
    Select your GitHub repository. Dedalus pulls from your repo on each deploy.

    <Frame>
      <img src="https://mintcdn.com/dedaluslabs/B1H5mDK6z8NfutJN/assets/images/deploy-step-3.png?fit=max&auto=format&n=B1H5mDK6z8NfutJN&q=85&s=ee6a37186255064ff45d80169303278d" alt="Connect GitHub repository modal" width="900" height="473" data-path="assets/images/deploy-step-3.png" />
    </Frame>
  </Step>

  <Step title="Configure & Deploy">
    Configure your server:

    * **Environment Variables**: Your API keys (e.g., `OPENAI_API_KEY`). Encrypted and only accessible to your server.
    * **Required Credentials**: Fields users must provide (e.g., Supabase key, X API key). Users supply their own credentials at runtime.

    Click `Deploy` when ready.

    <Frame>
      <img src="https://mintcdn.com/dedaluslabs/B1H5mDK6z8NfutJN/assets/images/deploy-step-4.png?fit=max&auto=format&n=B1H5mDK6z8NfutJN&q=85&s=d2008edfce555f52c9872580d248e202" alt="Deploy server configuration" width="900" height="473" data-path="assets/images/deploy-step-4.png" />
    </Frame>
  </Step>

  <Step title="Publish to Marketplace">
    Once deployed, click `Publish` to list your server on the Dedalus MCP marketplace. In the future, when others use your server, you earn revenue sharing on every API call.

    <Frame>
      <img src="https://mintcdn.com/dedaluslabs/B1H5mDK6z8NfutJN/assets/images/deploy-step-5.png?fit=max&auto=format&n=B1H5mDK6z8NfutJN&q=85&s=f11058e08f8e9a3ba83c6fc2eeeccaeb" alt="Publish server to marketplace" width="900" height="473" data-path="assets/images/deploy-step-5.png" />
    </Frame>
  </Step>
</Steps>

Your server is now live. Use your slug in the Dedalus SDK:

```python theme={"theme":{"light":"github-light","dark":"github-dark"}}
mcp_servers=["your-org/your-server"]
```

Pro users get a server URL to add your server to Cursor, Claude, or any MCP client in one click.

## Tips

<AccordionGroup>
  <Accordion title="Server structure">
    Your repository should follow this structure:

    ```
    my-server/
    ├── main.py           # Required: server entry point
    ├── pyproject.toml    # Required: dependencies
    ├── tools/            # Optional: organize tools in a folder
    │   ├── __init__.py
    │   ├── search.py
    │   └── fetch.py
    └── ...
    ```

    You can define tools directly in `main.py` or split them into a `tools/` folder for larger servers.
  </Accordion>

  <Accordion title="OAuth servers: names must match your slug">
    For OAuth servers, the `name` parameter in `Connection("my-server", ...)` must match your
    deployment slug exactly (not including the org prefix). Same applies to
    `ctx.dispatch("my-server")`. This ensures OAuth callbacks route correctly.
  </Accordion>

  <Accordion title="Environment variables vs required credentials">
    **Environment Variables** are your secrets (e.g., `OPENAI_API_KEY`). They're encrypted and only accessible to your server.

    **Required Credentials** are fields users must provide when connecting to your server (e.g., their own API keys). Users supply these at runtime.
  </Accordion>

  <Accordion title="Build failures">
    If your build fails, check the build logs in your dashboard. Common issues:

    * Missing dependencies in `pyproject.toml`
    * Environment variables not set
  </Accordion>
</AccordionGroup>
