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

# Replit MCP Server

> Connect an MCP client to Replit to create, find, inspect, update, and publish Replit Apps.

Replit MCP uses the [Model Context Protocol](https://modelcontextprotocol.io/) to let you create, find, inspect, update, and publish Replit projects from AI tools you already use.

This page is the reference for direct MCP clients and their tools.

## Connect an MCP client directly

Use the direct connection when your MCP client does not have a Replit native integration.

| Property           | Value                                    |
| ------------------ | ---------------------------------------- |
| **URL**            | `https://replit-mcp.com/server/mcp`      |
| **Transport**      | Streamable HTTP                          |
| **Authentication** | OAuth using protected-resource discovery |

Add the server URL to an MCP client that supports Streamable HTTP and OAuth authorization. The client reads Replit's protected-resource metadata. Then it prompts you to sign in to Replit.

Do not create a custom OAuth server. The Replit MCP Server provides the OAuth metadata that your client needs.

You can create apps or work with apps that you can edit, including apps shared with you.

### Set up Replit MCP

Codex and Claude Code are examples. You can add Replit MCP to any compatible MCP client.

<Tabs>
  <Tab title="Codex">
    <Steps>
      <Step title="Open the MCP list">
        In Codex, open **Settings** → **Plugins** → **MCPs**.
      </Step>

      <Step title="Add Replit">
        Add a custom MCP. Use a descriptive name such as `Replit`. Select **Streamable HTTP**. Enter `https://replit-mcp.com/server/mcp` and save. Do not add a bearer token or custom headers.

        <Frame>
          <img src="https://mintcdn.com/replit/nfrowf7Tj6EJT_iY/images/replitai/custom-mcp/codex-add-replit-mcp.png?fit=max&auto=format&n=nfrowf7Tj6EJT_iY&q=85&s=b55230326055b96644eca0cd1083ad87" alt="Codex custom MCP form with Replit, Streamable HTTP, the Replit endpoint, and empty bearer token and header fields" width="2000" height="1293" data-path="images/replitai/custom-mcp/codex-add-replit-mcp.png" />
        </Frame>
      </Step>

      <Step title="Authenticate Replit">
        In the MCP list, enable **Replit** and select **Authenticate**. Choose the Replit workspace to connect. Then select **Allow**.

        <Frame>
          <img src="https://mintcdn.com/replit/nfrowf7Tj6EJT_iY/images/replitai/custom-mcp/codex-authenticate-replit-mcp.png?fit=max&auto=format&n=nfrowf7Tj6EJT_iY&q=85&s=bc9f9186c8727e8a32ff632f6de8f427" alt="Codex MCP list with Replit enabled and an Authenticate button" width="2000" height="1293" data-path="images/replitai/custom-mcp/codex-authenticate-replit-mcp.png" />
        </Frame>

        <Frame>
          <img src="https://mintcdn.com/replit/nfrowf7Tj6EJT_iY/images/replitai/custom-mcp/codex-authorize-replit-workspace.png?fit=max&auto=format&n=nfrowf7Tj6EJT_iY&q=85&s=f55c986af7326bcbb528fdeaa1d60d9c" alt="Replit authorization dialog with generic account and workspace placeholders, including workspace choices and an Allow button" width="1588" height="991" data-path="images/replitai/custom-mcp/codex-authorize-replit-workspace.png" />
        </Frame>
      </Step>

      <Step title="Use Replit in Codex">
        Ask Codex to create, inspect, or update a Replit project. For example, ask: "List my recently updated Replit projects."

        <Frame>
          <img src="https://mintcdn.com/replit/nfrowf7Tj6EJT_iY/images/replitai/custom-mcp/codex-list-replit-projects.png?fit=max&auto=format&n=nfrowf7Tj6EJT_iY&q=85&s=9108ae7d068f42f7d036ab3c32ba9ef7" alt="Codex response listing three recently updated Replit projects" width="2000" height="951" data-path="images/replitai/custom-mcp/codex-list-replit-projects.png" />
        </Frame>
      </Step>
    </Steps>
  </Tab>

  <Tab title="Claude Code">
    <Steps>
      <Step title="Add Replit">
        In a terminal, add the server with HTTP transport.

        ```bash theme={null}
        claude mcp add replit https://replit-mcp.com/server/mcp --transport http
        ```

        <Frame>
          <img src="https://mintcdn.com/replit/nfrowf7Tj6EJT_iY/images/replitai/custom-mcp/claude-code-add-replit-mcp.png?fit=max&auto=format&n=nfrowf7Tj6EJT_iY&q=85&s=b81bc9f93a87c4cbfd62c9a4dff41ac5" alt="Claude Code terminal after adding Replit MCP with the HTTP server command and a generic local configuration path" width="2000" height="1097" data-path="images/replitai/custom-mcp/claude-code-add-replit-mcp.png" />
        </Frame>
      </Step>

      <Step title="Select Replit">
        Start or restart Claude Code. Run `/mcp`, then select `replit`.

        <Frame>
          <img src="https://mintcdn.com/replit/nfrowf7Tj6EJT_iY/images/replitai/custom-mcp/claude-code-select-local-replit-mcp.png?fit=max&auto=format&n=nfrowf7Tj6EJT_iY&q=85&s=b5dd66f1428a698eee19d89e1335e828" alt="Claude Code MCP list with the local replit server selected and marked needs authentication" width="2000" height="596" data-path="images/replitai/custom-mcp/claude-code-select-local-replit-mcp.png" />
        </Frame>
      </Step>

      <Step title="Authenticate Replit">
        For the local `replit` server, select **Authenticate**. Complete Replit sign-in, choose the workspace to connect, and select **Allow**.

        <Frame>
          <img src="https://mintcdn.com/replit/nfrowf7Tj6EJT_iY/images/replitai/custom-mcp/claude-code-authenticate-local-replit-mcp.png?fit=max&auto=format&n=nfrowf7Tj6EJT_iY&q=85&s=9fb01839630ffef454f8fa88089c3481" alt="Claude Code local replit server details with the direct Replit endpoint and Authenticate selected" width="2000" height="596" data-path="images/replitai/custom-mcp/claude-code-authenticate-local-replit-mcp.png" />
        </Frame>

        <Frame>
          <img src="https://mintcdn.com/replit/nfrowf7Tj6EJT_iY/images/replitai/custom-mcp/claude-code-authorize-replit-workspace.png?fit=max&auto=format&n=nfrowf7Tj6EJT_iY&q=85&s=2814f71811da92d06d32a40d6ab90fe4" alt="Claude authorization dialog with generic account and workspace placeholders, including workspace choices and an Allow button" width="1588" height="991" data-path="images/replitai/custom-mcp/claude-code-authorize-replit-workspace.png" />
        </Frame>
      </Step>

      <Step title="Use Replit in Claude Code">
        Ask Claude Code to create, inspect, or update a Replit project. For example, ask: "List my recently updated Replit projects."

        <Frame>
          <img src="https://mintcdn.com/replit/nfrowf7Tj6EJT_iY/images/replitai/custom-mcp/claude-code-list-replit-projects.png?fit=max&auto=format&n=nfrowf7Tj6EJT_iY&q=85&s=3d4d4c3ef1ce4c5783f80aaaf3e7efc6" alt="Claude Code response listing generic Replit projects and placeholder URLs" width="2000" height="850" data-path="images/replitai/custom-mcp/claude-code-list-replit-projects.png" />
        </Frame>
      </Step>
    </Steps>
  </Tab>
</Tabs>

## Native integrations

Replit is also available as a native integration in [ChatGPT](/features/platforms/chatgpt), [Claude](/features/platforms/claude), and [Slack](/features/platforms/slack). Use the linked pages for platform-specific connection steps.

## Tools

| Tool                      | Required input                | Optional input                                                            | Use                                                                                                                                                                                                                                                                            |
| ------------------------- | ----------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `create_app_from_prompt`  | `appDescription`, `app_stack` | `userSpecifiedAppName`, `userQuotes`, `attachmentSummary`, `sourceReplId` | Start a new app. `app_stack` is one of `react_website`, `mobile_app`, `design`, `slides`, `animation`, `data_visualization`, `3d_game`, `document`, or `spreadsheet`. Set `sourceReplId` to start the new app as a private copy of an existing app instead of a blank project. |
| `search_apps`             | None                          | `query`, `url`, `updatedAfter`, `updatedBefore`, `limit`                  | Find apps by title keywords, URL, or last-updated time. `limit` is 1 through 50.                                                                                                                                                                                               |
| `resolve_app_by_name`     | `name`                        | None                                                                      | Find one app by its exact title.                                                                                                                                                                                                                                               |
| `list_apps`               | None                          | `query`, `limit`                                                          | List apps you can edit, ordered by recent activity. The default limit is 25 and the maximum is 50.                                                                                                                                                                             |
| `ask_question`            | `replId`, `question`          | None                                                                      | Ask Agent about an app without changing it.                                                                                                                                                                                                                                    |
| `update_app_using_prompt` | `replId`, `changeDescription` | `userQuotes`, `attachmentSummary`                                         | Start an Agent update for an existing app.                                                                                                                                                                                                                                     |
| `publish_app`             | `replId`                      | None                                                                      | Publish an app or republish its latest changes.                                                                                                                                                                                                                                |
| `get_publish_status`      | `replId`                      | None                                                                      | Check whether an app has been published, its current publish status, and its public URL.                                                                                                                                                                                       |

## Troubleshooting

| Problem                                               | What to do                                                                                           |
| ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| Replit asks you to authenticate                       | Complete the OAuth sign-in flow again from your MCP client.                                          |
| An app is not found                                   | Check that you can edit the app. Then search by URL or use `list_apps` to choose from matching apps. |
| A create, update, or publish request is still running | Wait before retrying. For publishing, use `get_publish_status` to check the current result.          |
