Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Replit MCP server

Vendor MCP
Open markdown

The Replit MCP connector routes your AI agent's tool calls to Replit's own MCP server through Scalekit. Each user signs in to Replit once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 8 tools.

Tools
8
What they doRead · write · destructive
4 · 3 · 14 read3 write1 destructive
Users sign in with
OAuth app
Scalekit's or your own

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Replit MCP connection

    In AgentKit > Connections, create a Replit MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Replit MCP server, so you don't need to register an OAuth app.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'replitmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Replit MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'replitmcp_list_apps',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • replitmcp_ask_questionAsk the Replit Agent a question about an app's codebase or behavior without modifying it.Read-only

    Ask Question

    Ask the Replit Agent a question about an app's codebase or behavior without modifying it. Use this for explanations and debugging, not for making changes.

    Inputs

    questionstringrequired
    The question to send to Replit Agent. This question will be visible by the user if they open their Replit App in Replit, so try to keep it in the same language that the user communicated in with you.
    replIdstringrequired
    The replId (a UUID) of the user's Replit App being queried. Get it from create_app_from_prompt (for an app created in this conversation), resolve_app_by_name (for an app the user named exactly), or list_apps (when the user picked one from their app list).
    policystring
    Ignored. Don't waste tokens sending this.
  • replitmcp_list_appsList the authenticated user's Replit apps, most recently updated first, with optional name filtering.Read-only

    List Apps

    List the authenticated user's Replit apps, most recently updated first, with optional name filtering.

    Inputs

    limitinteger
    Optional maximum number of apps to return (default 25, capped at 50).
    querystring
    Optional case-insensitive substring to filter the user's apps by title. Omit to list the user's most recently updated apps.
  • replitmcp_replit_widget_get_auth_tokenInternal Replit widget tool that retrieves an auth token for a given repl.Read-only

    Replit Widget Get Auth Token

    Internal Replit widget tool that retrieves an auth token for a given repl. Not intended for direct use.

    Inputs

    replIdstring
    No description.
    tracingobject
    No description.
  • replitmcp_resolve_app_by_nameLook up an existing Replit app by its exact name and return its repl ID and URL for use in other tools.Read-only

    Resolve App By Name

    Look up an existing Replit app by its exact name and return its repl ID and URL for use in other tools.

    Inputs

    namestringrequired
    The name of the user's Replit App to resolve. Matched against the app's title using a case-insensitive exact comparison; substrings, prefixes, and fuzzy matches are NOT supported. Pass the exact name as the user said it.
  • replitmcp_create_app_from_promptCreate a new Replit app from a natural-language description in the authenticated user's account.Write

    Create App From Prompt

    Create a new Replit app from a natural-language description in the authenticated user's account.

    Inputs

    app_stackstringrequired
    The type of project to create. Use "react_website" for websites, web apps, dashboards, interactive demos, and any web-based experience (this is the default). Use "mobile_app" only when the user explicitly wants a native mobile app. Use "design" for UI/UX design prototypes. Use "slides" for slide decks and presentations. Use "animation" for motion graphics and animated videos. Use "data_visualization" for charts, graphs, and data dashboards. Use "3d_game" for 3D games. Use "document" for written documents and reports. Use "spreadsheet" for spreadsheet-based projects.one of react_websitemobile_appdesignslidesanimationdata_visualization3d_gamedocumentspreadsheet
    appDescriptionstringrequired
    Describe the user's Replit App's intended functionality in natural language with enough detail for Replit Agent to understand what their Replit App should do, without restating every part of the conversation. Use natural language only—Replit Agent will handle implementation.
    attachmentSummarystring
    If attachments are provided, summarize only the essential details needed to understand the request, kept to a few lines. Leave null if no attachments.
    userQuotesstring
    Important details from the user's messages not fully captured in appDescription—copy their exact words, do not paraphrase. Use quotation marks: "exact quote". Leave null if appDescription covers everything.
    userSpecifiedAppNamestring
    App name provided directly by the user, if any. Leave this null when the user did not specify a name in their own words.
  • replitmcp_replit_widget_get_preview_urlInternal Replit widget tool that retrieves the preview URL for a running repl build.Write

    Replit Widget Get Preview Url

    Internal Replit widget tool that retrieves the preview URL for a running repl build. Not intended for direct use.

    Inputs

    enableHeliumbooleanrequired
    No description.
    gitShastringrequired
    No description.
    replIdstringrequired
    No description.
    timestampstringrequired
    No description.
    tracingobject
    No description.
  • replitmcp_replit_widget_start_app_previewInternal Replit widget tool that starts an app preview session for a given repl.Write

    Replit Widget Start App Preview

    Internal Replit widget tool that starts an app preview session for a given repl. Not intended for direct use.

    Inputs

    previewUrlstringrequired
    No description.
    riverGurlstringrequired
    No description.
    riverTokenstringrequired
    No description.
    replIdstring
    No description.
    tracingobject
    No description.
  • replitmcp_update_app_using_promptUpdate an existing Replit app using a natural-language description of the desired change.Destructive

    Update App Using Prompt

    Update an existing Replit app using a natural-language description of the desired change.

    Inputs

    changeDescriptionstringrequired
    Describe the requested change to the user's Replit App in natural language, providing enough detail for Replit Agent to understand what should be updated without repeating the entire conversation. Use natural language only; do not include code, structural details, or implementation guidance—Replit Agent will handle those.
    replIdstringrequired
    The replId (a UUID) of the user's Replit App being updated. Get it from create_app_from_prompt (for an app created in this conversation), resolve_app_by_name (for an app the user named exactly), or list_apps (when the user picked one from their app list).
    attachmentSummarystring
    If attachments are provided, summarize only the essential information needed to support the update, kept to a few lines. Leave null if no attachments.
    policystring
    Ignored. Don't waste tokens sending this.
    replUrlstring
    The replUrl (a URL) of the user's Replit App being updated, as returned by create_app_from_prompt, resolve_app_by_name, or list_apps.
    userQuotesstring
    Important details from the user's messages not fully captured in changeDescription—copy their exact words, do not paraphrase. Use quotation marks: "exact quote". Leave null if changeDescription covers everything.