The Vercel MCP connector routes your AI agent's tool calls to Vercel's own MCP server through Scalekit. Each user signs in to Vercel once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 34 tools.
- Tools
- 34
- What they doRead · write · destructive
- 21 · 8 · 521 read8 write5 destructive
- Users sign in with
- OAuth
- OAuth app
- Your own Vercel app
What you can do
- Deploy projects: deploy the current project or create a project from a Git repository
- Inspect deployments: list and fetch deployments, read build logs, and open protected deployment URLs
- Debug production: pull runtime logs and grouped runtime errors with affected routes and counts
- Review analytics: query Web Analytics visits and custom events for a project
- Buy domains and upgrades: check domain availability and pricing, get quotes, and purchase domains, credits, or Pro
- Handle toolbar comments: list, reply to, edit, react to, and resolve toolbar comment threads
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. 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>Create the Vercel MCP connection
In AgentKit > Connections, create a Vercel MCP connection and copy its redirect URI. The name you give it is the
connection_nameyour code passes. See Configure connections.Register an OAuth app
Vercel connections use your own OAuth app. Register one with Vercel and add the redirect URI you copied.
Then enter the app's Client ID and Client Secret on the Vercel MCP connection.
Console steps with screenshots
Register your Scalekit environment with the Vercel MCP connector so Scalekit handles the OAuth flow and token lifecycle for your users. Follow every step below from start to finish — by the end you will have a working connection.
-
Create a Vercel OAuth integration
You need a Vercel OAuth integration to get the Client ID and Client Secret that Scalekit will use to authorize your users.
Go to the Vercel Integrations Console:
-
Open vercel.com/dashboard/integrations/console in your browser and sign in.
-
Click Create Integration (top right of the page).
-
Fill in the form:
Field What to enter Integration Name A recognizable name, e.g. My Vercel MCP AgentURL Slug Auto-generated from the name — you can leave it as-is Website URL Your app’s public URL. For testing you can use https://localhostShort Description Brief description of your integration -
Leave the Redirects section empty for now. You will add the Scalekit callback URL in the next step.
-
Click Create →.
After the integration is created, Vercel takes you to the integration’s settings page. Keep this tab open.
-
-
Copy the redirect URI from Scalekit
Scalekit gives you a callback URL that Vercel will redirect users back to after they authorize your app.
In the Scalekit dashboard:
- Go to app.scalekit.com and sign in.
- In the left sidebar, click AgentKit > Connections > Create Connection.
- Search for Vercel MCP and click Create.
- A connection details panel opens. Find the Redirect URI field — it looks like:
https://<YOUR_ENV>.scalekit.cloud/sso/v1/oauth/conn_<ID>/callback
- Click the copy icon next to the Redirect URI.
-
Add the redirect URI and copy credentials from Vercel
Switch back to the Vercel integration tab you left open.
Register the redirect URI:
- In the left sidebar of your integration settings, click Credentials.
- Scroll down to the Redirect URIs section.
- Paste the redirect URI you copied from Scalekit into the input field.
- Click Add URI, then click Save Changes.
Copy your credentials:
- Scroll up to the OAuth Credentials section.
- Client ID — shown in plain text. Click Copy ID.
- Client Secret — click Reveal to show the secret, then copy it.
-
Configure permissions in Vercel
-
In the Vercel integration settings sidebar, click Permissions.
-
Enable the scopes your integration needs:
Scope Access granted openidRequired to issue an ID token for user identification emailUser’s email address profileUser’s name, username, and profile picture offline_accessRefresh token for long-lived access without re-authorization -
Click Save Changes.
-
-
Add credentials in Scalekit
Switch back to the Scalekit dashboard tab.
-
Go to AgentKit > Connections and click the Vercel MCP connection you created in step 2.
-
Fill in the credentials form:
Field Value Client ID Paste the Client ID from step 3 Client Secret Paste the Client Secret from step 3 Scopes Enter the scopes you enabled in step 4, e.g. openid profile email offline_access -
Click Save.
Your Vercel MCP connection is now configured. Scalekit will use these credentials to run the OAuth flow whenever a user connects their Vercel account.
-
-
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.actionsconst connector = 'vercelmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Vercel MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'vercelmcp_listteams',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "vercelmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Vercel MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="vercelmcp_listteams",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolvercelmcp_getagentrunGet details for a single Agent RunRead-onlyVercel Get Agent Run
Get details for a single Agent Run
Inputs
projectIdstringrequired- The project ID to scope the request to. Alternatively the project slug can be used.
runIdstringrequired- The Agent Run ID to inspect.
teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
environmentstring- Agent run environment, usually "production" or "preview". Defaults to "production".
fromstring- Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration. Must be used with to.
periodstring- Preset time range. Ignored when both from and to are provided.one of
5m15m1h6h12h1d3d7d14d30d90d tostring- End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration, or "now". Must be used with from.
vercelmcp_getagentruntraceGet the execution trace for a single Agent RunRead-onlyVercel Get Agent Run Trace
Get the execution trace for a single Agent Run
Inputs
projectIdstringrequired- The project ID to scope the request to. Alternatively the project slug can be used.
runIdstringrequired- The Agent Run ID to inspect.
teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
environmentstring- Agent run environment, usually "production" or "preview". Defaults to "production".
fromstring- Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration. Must be used with to.
maxFieldLengthnumber- Maximum length for individual string fields in the returned trace. Defaults to 8000; use 0 to disable truncation.
periodstring- Preset time range. Ignored when both from and to are provided.one of
5m15m1h6h12h1d3d7d14d30d90d tostring- End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration, or "now". Must be used with from.
vercelmcp_getdeploymentGet a specific deployment by ID or URLRead-onlyVercel Get Deployment
Get a specific deployment by ID or URL
Inputs
idOrUrlstringrequired- The deployment ID or URL to retrieve
teamIdstringrequired- The ID of the team that owns the deployment
vercelmcp_getdeploymentbuildlogsGet the build logs of a deployment by deployment ID or URLRead-onlyVercel Get Deployment Build Logs
Get the build logs of a deployment by deployment ID or URL
Inputs
idOrUrlstringrequired- The deployment ID or URL whose build logs to retrieve
teamIdstringrequired- The ID of the team that owns the deployment
vercelmcp_getdomainorderGet the status of a domain purchase order returned by buy_domain, to confirm whether the registration completedRead-onlyVercel Get Domain Order
Get the status of a domain purchase order returned by buy_domain, to confirm whether the registration completed
Inputs
orderIdstringrequired- The orderId returned by buy_domain.
teamIdstring- The team ID to scope the request to. Alternatively the team slug can be used.
vercelmcp_getprojectGet a specific project in VercelRead-onlyVercel Get Project
Get a specific project in Vercel
Inputs
projectIdstringrequired- The ID of the project to retrieve
teamIdstringrequired- The ID of the team that owns the project
vercelmcp_getprojectdeploymentprotectionGet the effective password protection, Vercel Authentication, and Trusted IP settings for a Vercel projectRead-onlyVercel Get Project Deployment Protection
Get the effective password protection, Vercel Authentication, and Trusted IP settings for a Vercel project
Inputs
projectIdstringrequired- The project ID to scope the request to. Alternatively the project slug can be used.
teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
vercelmcp_getpurchasequoteGet a signed price quote for a Vercel Pro upgrade, credits top-up, add-on, or domain purchase, before executing itRead-onlyVercel Get Purchase Quote
Get a signed price quote for a Vercel Pro upgrade, credits top-up, add-on, or domain purchase, before executing it
Inputs
productstringrequired- Which purchase to quote.one of
creditsdomainaddonpro teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
amountinteger- Required for product:credits — amount in whole US dollars (1-1000).
autoRenewboolean- For product:domain — whether to auto-renew at term end. Defaults to true.
creditTypestring- Required for product:credits — which credit balance to top up.one of
v0gatewayagent domainstring- Required for product:domain — the domain to register.
productAliasstring- Required for product:addon — the add-on to quote. Only "siem" is available today.one of
siem quantityinteger- Required for product:addon — number of units.
yearsinteger- For product:domain — registration term in years (defaults to the TLD minimum).
vercelmcp_getruntimeerrorsGet grouped runtime error clusters for a project (error name, occurrence count, affected routes, sample messages, first/last seen)Read-onlyVercel Get Runtime Errors
Get grouped runtime error clusters for a project (error name, occurrence count, affected routes, sample messages, first/last seen)
Inputs
projectIdstringrequired- The project ID to scope the request to. Alternatively the project slug can be used.
teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
routesstring- Comma-separated route paths to filter by.
sincestring- Start of the window as an ISO date or relative lookback from now. Defaults to 24h ago; max lookback is 7d.
untilstring- Optional end of the window as an ISO date, relative lookback, or "now".
vercelmcp_getruntimelogsGet runtime logs for a project or deploymentRead-onlyVercel Get Runtime Logs
Get runtime logs for a project or deployment
Inputs
projectIdstringrequired- The ID of the project whose runtime logs to retrieve
teamIdstringrequired- The ID of the team that owns the project
deploymentIdstring- Optional deployment ID to filter runtime logs to a specific deployment
limitnumber- Maximum number of log entries to return
vercelmcp_gettoolbarthreadGet a specific toolbar thread by IDRead-onlyVercel Get Toolbar Thread
Get a specific toolbar thread by ID
Inputs
teamIdstringrequired- The ID of the team that owns the thread
threadIdstringrequired- The ID of the toolbar thread to retrieve
vercelmcp_getwebanalyticsQuery Web Analytics visits or custom events for a project, as a total count or aggregated by dimensionRead-onlyVercel Get Web Analytics
Query Web Analytics visits or custom events for a project, as a total count or aggregated by dimension
Inputs
projectIdstringrequired- The project ID to scope the request to. Alternatively the project slug can be used.
byarray- One or two dimensions for aggregate mode (e.g. day, country, deviceType, requestPath).
datasetstring- Data to query: visits for automatically tracked pageviews, or events for custom events sent with track(). Defaults to visits.one of
visitsevents filterstring- OData filter expression, for example requestPath eq '/pricing' and country eq 'US'.
limitinteger- Maximum distinct results in aggregate mode. Remaining values are grouped into Others. Defaults to 10.
modestring- Count returns one total. Aggregate returns rows grouped by one or two by dimensions and requires since, until, and by. Defaults to count.one of
countaggregate sincestring- Start of the date range as a date string, ISO 8601 timestamp, or Unix timestamp in milliseconds. Since and until must be provided together.
teamIdstring- The team ID to scope the request to. Alternatively the team slug can be used.
untilstring- End of the date range as a date string, ISO 8601 timestamp, or Unix timestamp in milliseconds. Since and until must be provided together.
vercelmcp_listagentrunprojectsList projects that have Agent Runs, with countsRead-onlyVercel List Agent Run Projects
List projects that have Agent Runs, with counts
Inputs
teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
environmentstring- Agent run environment, usually "production" or "preview". Defaults to "production".
fromstring- Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration. Must be used with to.
periodstring- Preset time range. Ignored when both from and to are provided.one of
5m15m1h6h12h1d3d7d14d30d90d tostring- End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration, or "now". Must be used with from.
vercelmcp_listagentrunsList Agent Runs for a projectRead-onlyVercel List Agent Runs
List Agent Runs for a project
Inputs
projectIdstringrequired- The project ID to scope the request to. Alternatively the project slug can be used.
teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
environmentstring- Agent run environment, usually "production" or "preview". Defaults to "production".
fromstring- Start time as ISO 8601, Unix seconds, Unix milliseconds, or a relative duration. Must be used with to.
pagenumber- 1-based page number. Defaults to 1.
pageSizenumber- Number of runs per page. The dashboard endpoint caps this at 100.
periodstring- Preset time range. Ignored when both from and to are provided.one of
5m15m1h6h12h1d3d7d14d30d90d searchstring- Server-side title search for Agent Runs.
tostring- End time as ISO 8601, Unix seconds, Unix milliseconds, a relative duration, or "now". Must be used with from.
vercelmcp_listdeploymentsList all deployments for a projectRead-onlyVercel List Deployments
List all deployments for a project
Inputs
projectIdstringrequired- The ID of the project whose deployments to list
teamIdstringrequired- The ID of the team that owns the project
limitnumber- Maximum number of deployments to return
statestring- Filter deployments by state (e.g. READY, ERROR, BUILDING, QUEUED, CANCELED)
vercelmcp_listprojectsList all Vercel projects for a user (with a max of 50)Read-onlyVercel List Projects
List all Vercel projects for a user (with a max of 50)
Inputs
teamIdstringrequired- The ID of the team whose projects to list
limitnumber- Maximum number of projects to return (max 50)
searchstring- Search query to filter projects by name
vercelmcp_listteamsList the user's teamsRead-onlyVercel List Teams
List the user's teams
Inputs
This tool takes no inputs.
vercelmcp_listtoolbarthreadsList Vercel toolbar comment threads for a teamRead-onlyVercel List Toolbar Threads
List Vercel toolbar comment threads for a team
Inputs
teamIdstringrequired- The ID of the team whose toolbar threads to list
deploymentIdstring- Filter threads by deployment ID (optional)
projectIdstring- Filter threads by project ID (optional)
vercelmcp_searchverceldocumentationSearch the Vercel documentation for information about a topicRead-onlyVercel Search Documentation
Search the Vercel documentation for information about a topic
Inputs
topicstringrequired- The topic or query to search for in the Vercel documentation
limitnumber- Maximum number of documentation results to return
vercelmcp_webfetchvercelurlFetches a Vercel deployment URL and returns the response bodyRead-onlyVercel Fetch URL
Fetches a Vercel deployment URL and returns the response body
Inputs
urlstringrequired- The Vercel deployment URL to fetch
vercelmcp_addtoolbarreactionAdd an emoji reaction to a message in a toolbar threadWriteVercel Add Toolbar Reaction
Add an emoji reaction to a message in a toolbar thread
Inputs
emojistringrequired- The emoji character to use as the reaction (e.g. '👍', '❤️')
messageIdstringrequired- The ID of the message to react to
teamIdstringrequired- The ID of the team that owns the thread
threadIdstringrequired- The ID of the toolbar thread containing the message
vercelmcp_changetoolbarthreadresolvestatusChange the resolve status of a toolbar threadWriteVercel Resolve Toolbar Thread
Change the resolve status of a toolbar thread
- Idempotent
Inputs
resolvedbooleanrequired- Set to true to mark the thread as resolved, false to mark it as unresolved
teamIdstringrequired- The ID of the team that owns the thread
threadIdstringrequired- The ID of the toolbar thread to update
vercelmcp_creategitprojectCreate (or link) a Vercel project from a Git repositoryWriteVercel Create Git Project
Create (or link) a Vercel project from a Git repository
Inputs
repostringrequired- Repository as "owner/name", or a repository URL such as https://github.com/owner/name.
teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
deployboolean- Whether to create a preview deployment from the linked repository's production branch.default
true projectNamestring- Vercel project to create or reuse. Defaults to the lowercased repository name.
providerstring- Git provider to link. Inferred from the repository URL; defaults to "github".one of
githubgitlabbitbucketcursor-origin rootDirectorystring- Root-relative directory to build in a monorepo. Only applied when creating the project.
vercelmcp_deploytovercelDeploy the current project to VercelWriteVercel Deploy Project
Deploy the current project to Vercel
Inputs
This tool takes no inputs.
vercelmcp_edittoolbarmessageEdit an existing message in a toolbar threadWriteVercel Edit Toolbar Message
Edit an existing message in a toolbar thread
- Idempotent
Inputs
markdownstringrequired- The updated message content in Markdown format
messageIdstringrequired- The ID of the message to edit
teamIdstringrequired- The ID of the team that owns the thread
threadIdstringrequired- The ID of the toolbar thread containing the message
vercelmcp_getaccesstovercelurlCreates a temporary shareable link that bypasses authentication for a Vercel deployment URLWriteVercel Get Access Link
Creates a temporary shareable link that bypasses authentication for a Vercel deployment URL
Inputs
urlstringrequired- The Vercel deployment URL to create a temporary shareable access link for
vercelmcp_importclaudedesignfromurlImport a design into Vercel from a publicly fetchable URLWriteVercel Import Claude Design
Import a design into Vercel from a publicly fetchable URL
Inputs
teamIdstringrequired- The ID of the team to import the design into
urlstringrequired- The publicly fetchable URL of the design to import
projectIdstring- The ID of the project to associate the design with (optional)
vercelmcp_replytotoolbarthreadAdd a reply message to an existing toolbar threadWriteVercel Reply to Toolbar Thread
Add a reply message to an existing toolbar thread
Inputs
markdownstringrequired- The reply message content in Markdown format
teamIdstringrequired- The ID of the team that owns the thread
threadIdstringrequired- The ID of the toolbar thread to reply to
vercelmcp_buyaddonExecute an add-on purchase previously quoted by get_purchase_quote.DestructiveVercel Buy Addon
Execute an add-on purchase previously quoted by get_purchase_quote. Requires a prior quote and confirm:true
Inputs
productAliasstringrequired- The add-on to purchase. Only "siem" is available today.one of
siem quantityintegerrequired- Number of units to purchase.
teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
confirmboolean- Set true to execute the charge; requires the idempotencyKey from get_purchase_quote.
idempotencyKeystring- The idempotencyKey returned by get_purchase_quote.
vercelmcp_buycreditsExecute a credits top-up previously quoted by get_purchase_quote.DestructiveVercel Buy Credits
Execute a credits top-up previously quoted by get_purchase_quote. Requires a prior quote and confirm:true
Inputs
amountintegerrequired- Amount to purchase, in whole US dollars (1-1000).
creditTypestringrequired- Which credit balance to top up: v0, gateway (AI Gateway), or agent (Vercel Agent).one of
v0gatewayagent teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
confirmboolean- Set true to execute the charge; requires the idempotencyKey from get_purchase_quote.
idempotencyKeystring- The idempotencyKey returned by get_purchase_quote.
vercelmcp_buydomainExecute a single-domain registration previously quoted by get_purchase_quote (product:domain).DestructiveVercel Buy Domain
Execute a single-domain registration previously quoted by get_purchase_quote (product:domain). Requires a prior quote and confirm:true
Inputs
domainstringrequired- The domain to register, e.g. "example.com".
teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
autoRenewboolean- Whether to auto-renew at the end of the term. Defaults to true.
confirmboolean- Set true to execute the purchase; requires the idempotencyKey from get_purchase_quote.
contactobject- Registrant (WHOIS) contact. Not needed for the quote; REQUIRED on confirm. All fields must be provided.
expectedPricenumber- Required on confirm: the purchasePrice (USD) from the quote. The server rejects the order if it no longer matches the live price.
idempotencyKeystring- The idempotencyKey returned by get_purchase_quote.
yearsinteger- Registration term in years. Required on confirm — must match the term shown in the quote.
vercelmcp_buyproExecute a Vercel Pro upgrade previously quoted by get_purchase_quote.DestructiveVercel Buy Pro
Execute a Vercel Pro upgrade previously quoted by get_purchase_quote. Requires a prior quote and confirm:true
Inputs
teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
confirmboolean- Set true to execute the upgrade; requires the idempotencyKey from get_purchase_quote.
idempotencyKeystring- The idempotencyKey returned by get_purchase_quote.
vercelmcp_updateprojectdeploymentprotectionEnable or disable password protection, Vercel Authentication, and Trusted IPs for a Vercel projectDestructiveVercel Update Project Deployment Protection
Enable or disable password protection, Vercel Authentication, and Trusted IPs for a Vercel project
- Idempotent
Inputs
projectIdstringrequired- The project ID to scope the request to. Alternatively the project slug can be used.
teamIdstringrequired- The team ID to scope the request to. Alternatively the team slug can be used.
passwordProtectionstring- Enable or disable password protection. Omit to preserve the current setting.
ssoProtectionstring- Enable or disable Vercel Authentication. Omit to preserve the current setting.
trustedIpsstring- Enable or disable Trusted IPs. Omit to preserve the current setting.
No tools match.