mcp-vercel
by: nganiet
MCP server connecting Claude to Vercel
πOverview
Purpose: To provide programmatic access to Vercel deployment management via a Model Context Protocol (MCP) integration.
Overview: This framework implements Vercel's core API as tools that facilitate deployment monitoring, management, and integration with CI/CD workflows.
Key Features:
-
Deployment Management: Tools like
vercel-list-all-deployments
andvercel-create-deployment
streamline the process of listing and creating deployments, ensuring efficient project maintenance. -
Environment Access: The
vercel-get-environments
tool allows users to retrieve project-specific environment variables for seamless configuration management. -
Team Coordination: The
vercel-list-all-teams
feature provides a comprehensive overview of team access, enhancing collaborative efforts in deployment tasks.
Vercel MCP Integration
A Model Context Protocol (MCP) integration for Vercel's REST API, providing programmatic access to Vercel deployment management.
Overview
This MCP server implements Vercel's core API endpoints as tools, enabling:
- Deployment monitoring & management
- Environment variable retrieval
- Project deployment status tracking
- CI/CD pipeline integration
Features
Current Tools
vercel-list-all-deployments
- List deployments with filteringvercel-get-deployment
- Retrieve specific deployment detailsvercel-create-deployment
- Create new deploymentsvercel-create-project
- Create new Vercel projectsvercel-create-environment-variables
- Create multiple environment variablesvercel-get-environments
- Access project environment variablesvercel-list-projects
- List all projects with paginationvercel-list-all-teams
- List all accessible teams
Roadmap
- Deployment creation workflow
- Project management tools
- Team management integration
- Real-time deployment monitoring
- Advanced error handling
- Deployment metrics dashboard
Tools
vercel-list-all-deployments
List deployments under the authenticated user or team
- Inputs:
app
(string): Filter by deployment nameprojectId
(string): Filter by project ID/namestate
(string): Filter by state (BUILDING, ERROR, INITIALIZING, QUEUED, READY, CANCELED)target
(string): Filter by environment (production/preview)limit
(number): Number of deployments to return
- Returns: Array of deployment objects with status, URLs, and metadata
vercel-get-deployment
Get detailed information about a specific deployment
- Inputs:
idOrUrl
(string): Deployment ID or URL (required)teamId
(string): Team ID for request scoping
- Returns: Full deployment details including build logs, domains, and environment variables
vercel-create-deployment
Create a new Vercel deployment
- Inputs:
name
(string): Deployment/project name (required)project
(string): Project ID/name (required)target
(string): Environment (production/preview)regions
(string[]): Deployment regionsteamId
(string): Team ID for scopingforceNew
(boolean): Force new deployment
- Returns: Created deployment details with status URLs
vercel-create-project
Create a new Vercel project
- Inputs:
name
(string): Project name (required)framework
(string): Framework presetbuildCommand
(string): Custom build commanddevCommand
(string): Custom dev commandoutputDirectory
(string): Build output directoryteamId
(string): Team ID for scoping
- Returns: Project configuration with deployment settings
vercel-create-environment-variables
Create multiple environment variables for a project
- Inputs:
projectId
(string): Target project ID (required)teamId
(string): Team ID for request scopingenvironmentVariables
(array): Environment variables to createkey
(string): Variable name (required)value
(string): Variable value (required)target
(string[]): Deployment targets (production/preview/development)type
(string): Variable type (system/encrypted/plain/sensitive)gitBranch
(string): Optional git branch for variable
- Returns: Object with created variables and any skipped entries
vercel-list-all-teams
List all teams accessible to authenticated user
- Inputs:
limit
(number): Maximum results to returnsince
(number): Timestamp for teams created afteruntil
(number): Timestamp for teams created beforeteamId
(string): Team ID for request scoping
- Returns: Paginated list of team objects with metadata
vercel-list-projects
List all projects under the authenticated user or team
- Inputs:
limit
(number): Maximum number of projects to returnfrom
(number): Timestamp for projects createdteamId
(string): Team ID for request scoping
- Returns: Paginated list of project objects with metadata including:
id
: Project IDname
: Project nameframework
: Associated frameworklatestDeployments
: Array of recent deploymentscreatedAt
: Creation timestamp
Getting Started
Prerequisites
- Node.js 18+
- Vercel API Token
- MCP Client
Installation
git clone [your-repo-url]
cd vercel-mcp
npm install
Configuration
- Create
.env
file:
VERCEL_API_TOKEN=your_api_token_here
- Start MCP server:
npm start
Usage Examples
List Deployments
const response = await mcpClient.callTool({
name: "vercel-list-all-deployments",
args: {
limit: 5,
target: "production",
},
});
Get Specific Deployment
const deployment = await mcpClient.callTool({
name: "vercel-get-deployment",
args: {
idOrUrl: "dpl_5WJWYSyB7BpgTj3EuwF37WMRBXBtPQ2iTMJHJBJyRfd",
},
});
Docker Deployment
Build the Image
docker build -t vercel-mcp .
Run Container
docker run -it --rm \
-e VERCEL_API_TOKEN=your_token_here \
-p 3399:3399 \
vercel-mcp
Production Deployment
docker run -d \
--name vercel-mcp \
--restart unless-stopped \
-e VERCEL_API_TOKEN=your_token_here \
-p 3399:3399 \
vercel-mcp
Development with Live Reload
docker build --target builder -t vercel-mcp-dev .
docker run -it --rm \
-e VERCEL_API_TOKEN=your_token_here \
-p 3399:3399 \
-v $(pwd)/src:/app/src \
vercel-mcp-dev
Project Structure
src/
βββ constants/ # Tool definitions
βββ tools/
β βββ deployments/ # Deployment handlers
β β βββ handlers.ts
β β βββ schema.ts
β β βββ types.ts
β βββ environments/# Environment management
βββ utils/ # API helpers
βββ index.ts # Server entrypoint
Configuration
Environment Variables
Variable | Description | Required |
---|---|---|
VERCEL_API_TOKEN | Vercel access token | Yes |
Contributing
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature
) - Commit changes (
git commit -m 'Add amazing feature'
) - Push to branch (
git push origin feature/amazing-feature
) - Open Pull Request
License
MIT License - see LICENSE for details