A Model Context Protocol (MCP) server that provides comprehensive access to the Vercel API. This server exposes 114+ tools, 4 resources, and 5 prompts for complete Vercel platform management through a secure and configurable interface.
- 🚀 Deployment Management: Create, list, view, cancel, and delete deployments; access deployment files and events
- 🌐 DNS Management: Full CRUD operations for DNS records
- 🔗 Domain Management: Add, remove, verify, and configure domains
- 📁 Project Management: Create and manage projects, project domains, and environment variables
- 👥 Team Management: Manage team members, roles, and access controls
- 🔐 Security: Configure firewall rules, attack protection, and bypass IPs
- 📊 Monitoring: Set up webhooks, log drains, and access checks
- 🎫 Access Control: Manage access groups, project members, and permissions
- ⚙️ Edge Configuration: Manage edge configs and items
- 🏪 Marketplace: Handle integrations, billing, and marketplace events
- 📦 Artifacts: Manage build artifacts and caching
- 🔑 Authentication: Manage auth tokens and SSO configuration
- 🎯 Aliases: Configure deployment and project aliases
- 🌍 Custom Environments: Create and manage custom deployment environments
- 📜 SSL Certificates: Upload and manage SSL certificates
- 📖 Resources: Quick read-only access to deployments, projects, domains, and teams
- 💬 Prompts: Interactive guided workflows for common tasks
- 📄 Pagination: Automatic pagination support for all list operations
- 🔒 Secure Configuration: Environment variable support with API key validation
- ⚡ Production Ready: Built with TypeScript, comprehensive error handling
- 🛠️ Modular Architecture: Clean separation of concerns with dedicated modules
The server requires a Vercel API key for authentication. You can provide it in two ways:
-
Command Line Argument (Recommended):
npx @mistertk/vercel-mcp VERCEL_API_KEY=<your-vercel-api-key>
-
Environment Variable:
export VERCEL_API_KEY=<your-vercel-api-key>
-
VERCEL_REQUEST_TIMEOUT
- Request timeout in milliseconds (default: 30000) -
VERCEL_MAX_RETRIES
- Maximum retry attempts for failed requests (default: 3) -
VERCEL_DEBUG
- Enable debug logging (default: false) -
VERCEL_RATE_LIMIT_PER_MINUTE
- API calls per minute (default: 60) -
VERCEL_RATE_LIMIT_BURST
- Burst limit for rate limiting (default: 10)
npm install -g @mistertk/vercel-mcp
Or use directly with npx
:
npx @mistertk/vercel-mcp
{
"mcpServers": {
"vercel": {
"command": "npx",
"args": ["@mistertk/vercel-mcp", "VERCEL_API_KEY=<your-api-key>"]
}
}
}
For development or testing the latest version:
{
"mcpServers": {
"vercel": {
"command": "node",
"args": ["/path/to/vercel-api-mcp/build/index.js"],
"env": {
"VERCEL_API_KEY": "<YOUR_API_KEY>"
}
}
}
}
The server provides read-only resources for quick access to key data:
-
vercel://deployments
- List of recent deployments with status and metadata -
vercel://projects
- All Vercel projects with their configuration -
vercel://domains
- All configured domains in your account -
vercel://teams
- All teams you have access to
Interactive prompts guide you through common workflows:
-
deploy-project
- Deploy a project to Vercel- Arguments:
projectPath
(required),projectName
(optional)
- Arguments:
-
manage-domains
- Manage domains and DNS- Arguments:
domain
(required),action
(optional)
- Arguments:
-
optimize-deployment
- Optimize deployment configuration- Arguments:
projectId
(required)
- Arguments:
-
setup-monitoring
- Set up monitoring and logging- Arguments:
projectId
(required),features
(optional)
- Arguments:
-
team-management
- Manage team and access control- Arguments:
teamId
(optional),action
(optional)
- Arguments:
This MCP server provides 114+ tools organized by category:
-
getDeploymentEvents
- Get deployment events -
getDeployment
- Get deployment details -
cancelDeployment
- Cancel a deployment -
listDeploymentFiles
- List deployment files -
getDeploymentFileContents
- Get file contents -
getDeployments
- List deployments (paginated) -
deleteDeployment
- Delete a deployment -
createDeployment
- Create a new deployment
-
listDnsRecords
- List DNS records (paginated) -
createDnsRecord
- Create a DNS record -
updateDnsRecord
- Update a DNS record -
deleteDnsRecord
- Delete a DNS record
-
getDomain
- Get domain information -
getDomainConfig
- Get domain configuration -
listDomains
- List all domains (paginated) -
addDomain
- Add a new domain -
removeDomain
- Remove a domain -
verifyDomain
- Verify domain ownership
-
listProjects
- List projects (paginated) -
createProject
- Create a new project -
updateProject
- Update project settings -
deleteProject
- Delete a project -
listProjectDomains
- List project domains (paginated) -
getProjectDomain
- Get project domain details -
addProjectDomain
- Add domain to project -
updateProjectDomain
- Update project domain -
removeProjectDomain
- Remove domain from project -
verifyProjectDomain
- Verify project domain -
listEnvVars
- List environment variables (paginated) -
getEnvVar
- Get environment variable value -
createEnvVar
- Create environment variables -
editEnvVar
- Edit environment variable -
removeEnvVar
- Remove environment variable
-
getTeams
- List all teams (paginated) -
getTeam
- Get team information -
createTeam
- Create a new team -
updateTeam
- Update team settings -
deleteTeam
- Delete a team -
getTeamMembers
- List team members (paginated) -
inviteUserToTeam
- Invite user to team -
requestAccessToTeam
- Request team access -
getTeamAccessRequest
- Get access request status -
joinTeam
- Join team with invite code -
removeTeamMember
- Remove team member
-
updateAttackChallengeMode
- Configure attack protection -
putFirewallConfig
- Create/replace firewall config -
updateFirewallConfig
- Update firewall config -
getFirewallConfig
- Get firewall configuration -
getActiveAttackStatus
- Get attack status -
getBypassIp
- List bypass IPs (paginated) -
addBypassIp
- Add bypass IP -
removeBypassIp
- Remove bypass IP
-
listAccessGroups
- List access groups (paginated) -
createAccessGroup
- Create access group -
getAccessGroup
- Get access group details -
updateAccessGroup
- Update access group -
deleteAccessGroup
- Delete access group -
listAccessGroupMembers
- List group members (paginated) -
addAccessGroupMember
- Add member to group -
removeAccessGroupMember
- Remove member from group -
listAccessGroupProjects
- List group projects (paginated)
-
getWebhooks
- List webhooks (paginated) -
createWebhook
- Create a webhook -
deleteWebhook
- Delete a webhook
-
getIntegrationLogDrains
- List integration log drains (paginated) -
getAllLogDrains
- List all log drains (paginated) -
createLogDrain
- Create a log drain -
getLogDrain
- Get log drain details -
deleteLogDrain
- Delete a log drain -
createConfigurableLogDrain
- Create configurable log drain
-
getEdgeConfigs
- List edge configs (paginated) -
createEdgeConfig
- Create edge config -
getEdgeConfig
- Get edge config details -
updateEdgeConfig
- Update edge config -
deleteEdgeConfig
- Delete edge config -
getEdgeConfigItems
- List edge config items (paginated) -
getEdgeConfigItem
- Get edge config item -
createEdgeConfigItem
- Create edge config item -
updateEdgeConfigItem
- Update edge config item -
deleteEdgeConfigItem
- Delete edge config item
-
listAuthTokens
- List auth tokens (paginated) -
createAuthToken
- Create auth token -
getAuthToken
- Get auth token details -
deleteAuthToken
- Delete auth token
-
uploadCert
- Upload SSL certificate -
getCert
- Get certificate details -
removeCert
- Remove certificate -
getIssuedCert
- Get issued certificate
-
getAllChecks
- List all checks (paginated) -
createCheck
- Create a check -
getCheck
- Get check details -
updateCheck
- Update a check -
rerequestCheck
- Rerequest a check
-
getUser
- Get user information -
listUserEvents
- List user events (paginated) -
deleteUser
- Delete user account
-
listAliases
- List aliases (paginated) -
getAlias
- Get alias details -
deleteAlias
- Delete an alias -
listDeploymentAliases
- List deployment aliases (paginated) -
assignAlias
- Assign alias to deployment
-
recordArtifactEvents
- Record artifact cache events -
getArtifactStatus
- Get artifact cache status -
uploadArtifact
- Upload artifact -
downloadArtifact
- Download artifact -
artifactExists
- Check if artifact exists -
artifactQuery
- Query artifact information
-
createCustomEnvironment
- Create custom environment -
getCustomEnvironments
- List custom environments (paginated) -
getCustomEnvironment
- Get custom environment -
updateCustomEnvironment
- Update custom environment -
deleteCustomEnvironment
- Delete custom environment
-
getConfigurations
- List integration configs (paginated) -
getConfiguration
- Get integration config -
deleteConfiguration
- Delete integration config -
gitNamespaces
- List git namespaces -
searchRepo
- Search git repositories
-
getProjectMembers
- List project members (paginated) -
addProjectMember
- Add project member -
removeProjectMember
- Remove project member
-
getAccountInfo
- Get marketplace account info -
getMember
- Get marketplace member info -
createEvent
- Create marketplace event -
submitBillingData
- Submit billing data -
submitInvoice
- Submit invoice -
getInvoice
- Get invoice details -
updateInvoice
- Update invoice (refund) -
updateResourceSecrets
- Update resource secrets -
updateResourceSecretsById
- Update secrets by ID -
exchangeSsoToken
- Exchange SSO token
// Resources are automatically available in MCP clients
// Access them via: vercel://deployments, vercel://projects, etc.
// Example: Deploy a project
// Prompt: deploy-project
// Arguments: { projectPath: "/path/to/project", projectName: "my-app" }
// Example: Manage domains
// Prompt: manage-domains
// Arguments: { domain: "example.com", action: "add" }
// List deployments with pagination
const result = await getDeployments({ limit: 20 });
// Response includes pagination metadata:
// {
// data: { deployments: [...] },
// pagination: {
// next: "dpl_xyz123",
// hasMore: true,
// count: 20,
// total: 150
// }
// }
// Get next page
const nextPage = await getDeployments({
limit: 20,
from: result.pagination.next
});
- Use the
deploy-project
prompt for guided deployment - Or manually:
createProject
→createDeployment
→ monitor withgetDeployment
- Add domain:
addDomain
- Verify ownership:
verifyDomain
- Add to project:
addProjectDomain
- Configure DNS:
createDnsRecord
- Create team:
createTeam
- Invite members:
inviteUserToTeam
- Configure access groups:
createAccessGroup
- Assign projects:
addAccessGroupProject
vercel-mcp/
├── src/
│ ├── index.ts # MCP server setup and tool registration
│ ├── config.ts # Configuration management
│ ├── utils.ts # Shared utilities and pagination
│ └── vercel/ # Vercel SDK integrations
│ ├── deployments.ts
│ ├── dns.ts
│ ├── domains.ts
│ ├── projects.ts
│ ├── teams.ts
│ ├── security.ts
│ └── ... (20+ modules)
├── build/ # Compiled JavaScript
└── package.json
# Install dependencies
npm install
# Build the project
npm run build
# Run locally
npm start
# Format code
npm run check
- API keys are validated on startup
- Sensitive values are masked in logs
- Environment variables are preferred over command line arguments
- All API operations are scoped to the authenticated user/team
Contributions are welcome! Please ensure:
- Code follows the existing modular pattern
- All functions include JSDoc comments
- Error handling is comprehensive
- New features include appropriate MCP tools
MIT