Vercel MCP Server for Microsoft Copilot Studio
Provides tools for managing Vercel projects, deployments, build logs, domains, and environment variables.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Vercel MCP Server for Microsoft Copilot StudioShow me the build logs for the latest failed deployment"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Vercel MCP Server for Microsoft Copilot Studio
Let your Copilot Studio agent inspect Vercel projects and deployments, read build logs, and perform the management actions listed below. This is an independent, zero-dependency Node.js server, not Vercel's official MCP server.
In short: deploy this repository to Vercel, create a Vercel access token, and add your deployed /mcp URL to Copilot Studio using API key → Header → x-api-key. Paste the raw token into the connection's API key field.
Why this server exists
MCP (Model Context Protocol) lets an agent discover and call named tools. For an MCP connection, Copilot Studio needs a running server that presents those tools. Vercel's REST API is a different interface. An API key grants access, but does not translate between those interfaces. This server does the translation.
There are three parts:
Part | What it does |
Copilot Studio | Runs your agent and keeps the Vercel token in its connection. |
This MCP server | Runs at your deployed URL and translates tool calls into Vercel API requests. |
Vercel REST API | Checks the token's permissions and reads or changes your Vercel resources. |
The two requests use different authentication headers:
Copilot Studio
|
| POST https://<your-deployment>.vercel.app/mcp
| x-api-key: <raw Vercel access token>
v
Your hosted MCP server
|
| Request to https://api.vercel.com/...
| Authorization: Bearer <same Vercel access token>
v
Vercel REST APIThe conversion is already implemented in lib/mcp.js and lib/vercel-api.js. The server does not forward x-api-key to Vercel's REST API. You do not generate a separate MCP API key.
Does anything need to be hosted?
Yes: this repository must be deployed, not just stored on GitHub. Vercel can host it as a serverless function, so you do not need a separate VM, database, or always-on laptop. You need one deployment of this bridge, not one per Vercel project. Your token determines which resources it can access.
For the recommended setup, no VERCEL_TOKEN environment variable is needed on the server. Copilot Studio sends the connection's token with each request; the server processes it without persisting it. Only use a deployment you own or trust, since it receives that credential.
Why not use Vercel's official MCP server?
Vercel's official hosted MCP server is at https://mcp.vercel.com and uses OAuth sign-in with approved clients. This project is an alternative for an API-key-based connection that you host and control; it calls the REST API directly and does not depend on the official MCP server.
Copilot Studio supports OAuth, including dynamic discovery. The issue is provider approval, not a general lack of OAuth support. As checked on 2026-09-15, Vercel's documented supported-client list includes VS Code with Copilot, but not Microsoft Copilot Studio; these are different products.
Observed Copilot Studio connection failure
On 2026-09-15, a maintainer reported this error when connecting Copilot Studio to https://mcp.vercel.com using OAuth 2.0 → Dynamic discovery:
Failed to login. GetDynamicClientRegistrationResultAsync failed. Status Code: BadRequest, Response: {"error":"invalid_redirect_uri","error_description":"The provided redirect URIs are not approved for use by this authorization server."}A redirect URI (callback address) is where the authorization service sends the user back after sign-in. This error means the authorization server rejected the callback addresses submitted during client registration, before the connection could be authorized. It confirms that this connection attempt was blocked; it does not prove that every Copilot Studio configuration will always be unsupported.
Keep a working API-key bridge connection while asking Vercel for a supported Copilot Studio OAuth configuration or approval of its callback URI.
Regenerating a Vercel REST token, changing
x-api-key, or editing this bridge cannot fix the official service's callback approval policy. Switching to Manual OAuth alone is not a fix either: it still needs an appropriate OAuth client and an approved callback.Share the error and the failing setup step with support; provide any requested callback details through an approved private channel. Never share access tokens, cookies, or full sign-in URLs containing authorization codes.
Both options are remote once hosted: this bridge runs at your URL; the official service is hosted and maintained by Vercel. If the official connection becomes supported and its tools meet your needs, it can remove the need to host and maintain this bridge. Check Vercel's current supported-client guidance rather than treating this dated observation as a permanent limitation.
The API-key instructions below apply to this repository, not mcp.vercel.com.
Related MCP server: Vercel MCP Server
What it can and cannot do
Permissions and capabilities are different: the token determines which resources the agent may access; this server's tools determine which actions it can perform.
The server currently exposes 13 tools:
Tool | Action | Access |
| View the token owner's profile; not a connection test for project-scoped tokens. | Read |
| List team IDs and names; requests up to 100 teams. | Read |
| List projects, optionally by team or name; default 20 projects. | Read |
| View a project's details and Git repository link. | Read |
| List deployments, optionally by project, state or target; default 10 deployments. | Read |
| View a deployment's details and error information. | Read |
| Read build logs; default last 100 matching log lines. | Read |
| List attached domains and verification status; does not add domains or edit DNS. | Read |
| List environment variables; | Read |
| Cancel a building or queued deployment. | Write |
| Promote an existing READY deployment to production. | Write |
| Create or update a variable; defaults to | Write |
| Delete a variable using its ID. | Write |
List tools do not automatically fetch every page. Project, deployment and log tools accept a limit; a response is not necessarily a complete account inventory. See lib/tools.js for the implemented arguments and handlers.
This is not complete Vercel administration. It does not implement creating/deleting projects, creating deployments, editing DNS, managing team membership, or billing administration. A Full Account token does not add those missing tools; additional actions require implementation.
Can the agent create deployments or redeploy?
Not with the current 13 tools, but Vercel's REST API supports it. This is an implementation gap in this bridge, not a limitation of MCP or API-key authentication. The existing promote_deployment tool requests production promotion of an already-built deployment; it does not build the latest Git commit or create a new deployment.
Vercel's create-deployment API (POST /v13/deployments) supports these distinct operations:
Operation | What the API needs | Available in this bridge? |
Deploy from Git | A | No — requires a new tool. |
Redeploy an existing deployment | Its | No — requires a new tool. |
Deploy uploaded source files | File content, or references to files uploaded through Vercel's file-upload API; | No — requires a source-upload/deployment implementation. |
A sensible first extension is deploy/redeploy for an existing Git-connected project, with preview as the default and separately approved production changes. This is a proposed extension, not implemented behavior. It would need explicit project/team/source selection, input validation, write annotations, tests, and deployment-status checking before reporting success. A Vercel token alone does not supply source files or grant access to a private Git repository. Builds run on Vercel and can consume account usage.
Until those tools are implemented, create deployments through your existing Vercel Git integration, dashboard, CLI, or REST API, then use this server to inspect their status and logs. Deploying this MCP bridge during setup does not give the agent a tool for deploying your other applications.
Tool annotations
Every tool returned by tools/list declares all 4 MCP hints as explicit booleans. Hosts can use these descriptions to inform warnings and approval policies; they are not permission checks or an enforced confirmation step. See the MCP annotation specification.
Tools |
|
|
|
|
The 9 read tools listed above |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
All tools contact the external Vercel API, including the read-only tools. The 4 write tools can cancel work, replace production, overwrite a value, or remove data, so they are marked potentially destructive rather than merely additive.
Idempotency describes repeated effects, not identical responses: canceling the same deployment again is rejected (HTTP 400 for an already canceled deployment), and deleting the same variable ID again cannot delete another variable. Promotion and environment-variable upsert are conservatively not advertised as idempotent; this wrapper provides no guarantee of side-effect-free retries for them. Keep explicit approval for writes even when an idempotency hint is true.
Set up in Copilot Studio
You need a Vercel account, permission to deploy this repository, and access to add tools and connections to your Copilot Studio agent. Your organization's Power Platform data policies must also allow the connection; see Microsoft's MCP setup guide.
1. Deploy the bridge and copy its URL
Why: Copilot Studio calls a running HTTPS endpoint; it cannot run the GitHub repository itself.
Select Deploy with Vercel, sign in, and follow the prompts to create and deploy your copy.
Wait for the deployment to become ready.
Copy the project's production domain from Vercel and append
/mcp.
Your Server URL will look like https://<your-deployment>.vercel.app/mcp. Replace the placeholder with your actual domain. Do not use the GitHub URL, the Vercel dashboard URL, api.vercel.com, or mcp.vercel.com.
If you already have a working deployment, reuse it. You do not need to redeploy simply to change the token stored in Copilot Studio.
Opening /mcp in a browser normally returns HTTP 405 (Method Not Allowed): browsers make GET requests, while MCP uses POST. This alone is not a failure. If Deployment Protection is enabled, the connection must also satisfy that protection; a Vercel API token is not a deployment-protection credential. Do not disable organizational protections to complete setup.
2. Create a Vercel access token
Why: this tells Vercel whose permissions to use and which resources the agent may access.
Open your personal account's Account Tokens page.
Give the token a recognizable name, such as
Copilot Studio.Choose its Scope using the table below.
Choose an expiration, select Create, and copy the token securely. Its value is shown only once.
Scope | Choose it when | Access |
Project | The agent only needs one project. | That single project's resources; user-level and team-level requests are denied. |
Team / All Projects | The agent needs projects within one team. | That team's resources across all its projects. |
Full Account | You deliberately want access across your personal account and teams. | Your personal account and every team you belong to, subject to your permissions. |
Choose the narrowest scope that meets your needs. Full Account is broad access, not a prerequisite for setup. It still only enables the tools implemented by this server. See Vercel's token-scope documentation.
3. Add the server and create the connection
Why: the server definition tells Copilot Studio where to connect; the connection holds the credential to use.
Open your agent → Tools → Add a tool → New tool → Model Context Protocol.
Enter these server settings:
Field
Value
Server name
VercelServer description
Use the text below.
Server URL
https://<your-deployment>.vercel.app/mcpAuthentication
API key
Type / location
Header
Header name
x-api-keyCopyable server description:
Inspect Vercel projects, deployments, build logs, domains, account details, and teams. Manage environment variables, cancel deployments, and promote existing deployments to production.
Select Create, then Create a new connection in the Add tool dialog.
When prompted for the API key, paste only your Vercel access token. Do not add
Bearer, quotation marks, orx-api-key:. Do not paste it into the description, URL, agent instructions, or chat.Select the new connection and Add to agent. If you replaced an old token, make sure the tool is using the new/updated connection rather than the old one.
Leave VERCEL_TOKEN unset on the deployed server for this setup. The connection supplies the token. Keep API key authentication selected, not None or OAuth 2.0. These steps follow Microsoft's MCP onboarding wizard.
4. Verify with a read-only action
Why: discovering tools proves the server can respond, but does not prove that Vercel accepts the token. This implementation allows initialization and tool discovery without validating a Vercel credential.
In the agent's test pane, ask:
Use the Vercel list_projects tool with limit 1. Do not make any changes.
Check the actual tool result for success (isError: false), not just the agent's explanation. An empty project list can be a successful request with no projects in the selected account context.
Full Account token: for team projects, ask the agent to use
list_teams, identify your intended team, then calllist_projectswith that team'steamId. The server does not automatically loop through every team.Team or Project token: Vercel infers the team/project from the scope, so
teamIdcan be omitted.Project token: do not use
get_current_userorlist_teamsas the health check. Vercel denies those user/team requests even when access to the project works.
See Vercel's scope guidance. Once a read-only test succeeds, try “Show the build logs for the latest failed deployment of my-site.” Before enabling writes, put human approval controls in your agent/workflow; this server does not enforce confirmation. In particular, specify environment-variable targets explicitly to avoid unintentionally changing all three targets.
Troubleshooting
Start with the tool name and raw error, not an AI-generated guess. Do not paste credentials into chat or add request-header logging.
Symptom | What to check |
Official | The authorization server rejected the submitted OAuth callback addresses during registration. See the observed connection failure; this is separate from this bridge's REST-token errors. |
| Select the correct connection; confirm API key → Header → |
| Check the saved token's value, expiration, revocation and scope. Check team context and conflicting headers below. Do not assume the header conversion is missing. |
| The upstream API returned this error; it does not establish a single cause. Identify the failing tool, verify token scope and try the read-only project test. A token prefix alone does not prove validity. |
Projects are missing or the list is empty | For Full Account tokens, provide the intended team's |
Tools appear, but calls fail | Discovery does not validate credentials. Run the read-only test and inspect its result. |
Browser shows HTTP 405 at | Expected for GET; use Copilot Studio to send an MCP POST request. |
HTML login page, platform 404, or no MCP response | Check the deployment's readiness, exact |
For maintainers: token selection in lib/mcp.js checks a Bearer Authorization header first, then x-api-key, then x-vercel-token, and finally VERCEL_TOKEN. An unrelated Bearer header can override the intended API key. Also, Bearer inside the x-api-key value is not stripped: the outbound request would contain Bearer Bearer .... Send only the raw token in x-api-key.
If configuration checks do not resolve it, compare the same read-only operation with the same token directly against Vercel's API using a trusted local client. Direct failure points to the credential, scope, requested resource or Vercel; direct success with MCP failure narrows the investigation to the connection, header selection or deployed code. Never print authorization headers. Confirm the deployed revision rather than assuming it matches GitHub.
Security
Use HTTPS and a server deployment you own or trust. This bridge receives the Vercel token and can exercise its permissions.
Restrict who can use the agent and its connection. A shared connection uses the token owner's access; it does not automatically give each chat user their own Vercel identity.
Keep tokens out of Git, chat, screenshots, URLs and logs. If a full token is exposed, revoke it, create a replacement, and update the connection. Choose an expiration and plan for replacement.
Require human approval for writes, especially production promotion and environment-variable changes. A description asking for confirmation is not an authorization control, and the server has no built-in approval gate.
list_env_varsmasksencryptedandsensitivevalues, not every value or every tool response. Logs and plain variables can contain private data. Use Vercel's dashboard or your approved secret-management process for secret values rather than entering them in agent chat.
For developers and self-hosters
The main setup above needs no local terminal. The alternatives below are for maintainers.
Deploy with the CLI
From a local checkout, with the Vercel CLI installed and authenticated to the intended account/team:
vercel deploy --prodThis creates a production deployment of the bridge. Use its HTTPS URL ending in /mcp in Copilot Studio.
Run on another Node.js host
From a local checkout:
node server.jsThe package declares Node.js >=18; use a supported Node.js release meeting that requirement. The standalone server listens on PORT (default 3000) at /mcp or /api/mcp. Copilot Studio needs a reachable HTTPS address; localhost:3000 is only for local development. The standalone /health endpoint is not supplied by the Vercel function deployment.
No npm install is needed: there are no npm dependencies, database, or session store.
Advanced authentication
Other clients can supply Authorization: Bearer <token> or a raw token in x-vercel-token. Token headers are read in the precedence order described in Troubleshooting. Tokens in URL query parameters are not supported by this implementation.
The optional VERCEL_TOKEN fallback is for deliberately secured, single-tenant hosting only. If it is set, requests without a caller token can use that server-side credential. The bridge does not authenticate those callers itself. Never expose this fallback on an unprotected public endpoint; a hard-to-guess URL is not protection. Leave it unset for the recommended per-connection setup.
Implementation and tests
The transport is Streamable HTTP, with JSON responses and no sessions or server-initiated stream.
api/mcp.js: Vercel function entry point;vercel.jsonmaps/mcpto/api/mcp.server.js: standalone HTTP host.lib/mcp.js: stateless JSON-RPC 2.0 handling and token extraction; protocol versions 2024-11-05, 2025-03-26, 2025-06-18.lib/tools.js: the 13 tool definitions and handlers.lib/vercel-api.js: REST requests with Bearer authentication and upstream error handling.
Run the repository's test command:
node test/mcp.test.jsThe tests start a local HTTP server around the MCP handler and mock api.vercel.com. The same command runs protocol tests and test/tool-contracts.js: all 13 tools have success and upstream-error cases that check HTTP methods, encoded paths, team/query parameters, Bearer authentication, request bodies and returned content. Discovery tests verify all 4 hints for every tool, with additional checks for secret-value masking, explicit environment targets and default list limits. This is tool-level behavior coverage, not a claim of 100% line or branch coverage. Tests do not validate a real token, the deployed function, or a live Copilot Studio connection.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Build, validate, deploy — HTTP APIs, cron jobs, webhooks and MCP tools — from your AI client.
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Manage WeInc AI website builder orgs: projects, publishing, custom domains, and previews.
Deploy and manage your apps, databases, storage, and scheduled jobs from your AI agent
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to interact with the Vercel REST API to manage projects, deployments, domains, environment variables, and teams through natural language commands.-
- FlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Vercel API for managing projects, deployments, domains, and environment variables.-
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Vercel API to manage deployments, domains, projects, and environment variables.826 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables interaction with Vercel's REST API through natural language. Facilitates managing deployments, projects, domains, environment variables, teams, and more.94 npmMIT