npm package: @mistertk/vercel-mcp
Description: Model Context Protocol server for Vercel API - provides 114+ tools, 4 resources, and 5 prompts for comprehensive Vercel platform management including deployments, domains, DNS, projects, teams, security, monitoring, and more
Author: MisterTK
Latest version: 0.1.1

<div align="center">
  <img src="logos/vercel-mcp-logo.svg" alt="Vercel MCP Server Logo" width="64" height="64">
  <h1>The ultimate Vercel MCP Server</h1>
</div>

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.

## Features

### Core Capabilities
- **🚀 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

### MCP Features
- **📖 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

## Configuration

The server requires a Vercel API key for authentication. You can provide it in two ways:

1. **Command Line Argument (Recommended)**:
   ```bash
   npx @mistertk/vercel-mcp VERCEL_API_KEY=<your-vercel-api-key>
   ```

2. **Environment Variable**:
   ```bash
   export VERCEL_API_KEY=<your-vercel-api-key>
   ```

### Optional Environment Variables

- `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)

## Installation

```bash
npm install -g @mistertk/vercel-mcp
```

Or use directly with `npx`:
```bash
npx @mistertk/vercel-mcp
```

## Usage

```json
{
 "mcpServers": {
     "vercel": {
       "command": "npx",
       "args": ["@mistertk/vercel-mcp", "VERCEL_API_KEY=<your-api-key>"]
       }
     }
}
```

### Local Development

For development or testing the latest version:

```json
{
  "mcpServers": {
     "vercel": {
       "command": "node",
       "args": ["/path/to/vercel-api-mcp/build/index.js"],
       "env": {
         "VERCEL_API_KEY": "<YOUR_API_KEY>"
         }
       }
     }
}
```

## Resources

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

## Prompts

Interactive prompts guide you through common workflows:

- **`deploy-project`** - Deploy a project to Vercel
  - Arguments: `projectPath` (required), `projectName` (optional)
- **`manage-domains`** - Manage domains and DNS
  - Arguments: `domain` (required), `action` (optional)
- **`optimize-deployment`** - Optimize deployment configuration
  - Arguments: `projectId` (required)
- **`setup-monitoring`** - Set up monitoring and logging
  - Arguments: `projectId` (required), `features` (optional)
- **`team-management`** - Manage team and access control
  - Arguments: `teamId` (optional), `action` (optional)

## Tools

This MCP server provides 114+ tools organized by category:

### Deployments (8 tools)
- `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

### DNS (4 tools)
- `listDnsRecords` - List DNS records (paginated)
- `createDnsRecord` - Create a DNS record
- `updateDnsRecord` - Update a DNS record
- `deleteDnsRecord` - Delete a DNS record

### Domains (6 tools)
- `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

### Projects (14 tools)
- `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

### Teams (11 tools)
- `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

### Security (8 tools)
- `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

### Access Groups (9 tools)
- `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)

### Webhooks (3 tools)
- `getWebhooks` - List webhooks (paginated)
- `createWebhook` - Create a webhook
- `deleteWebhook` - Delete a webhook

### Log Drains (6 tools)
- `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

### Edge Config (10 tools)
- `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

### Authentication (4 tools)
- `listAuthTokens` - List auth tokens (paginated)
- `createAuthToken` - Create auth token
- `getAuthToken` - Get auth token details
- `deleteAuthToken` - Delete auth token

### Certificates (4 tools)
- `uploadCert` - Upload SSL certificate
- `getCert` - Get certificate details
- `removeCert` - Remove certificate
- `getIssuedCert` - Get issued certificate

### Checks (4 tools)
- `getAllChecks` - List all checks (paginated)
- `createCheck` - Create a check
- `getCheck` - Get check details
- `updateCheck` - Update a check
- `rerequestCheck` - Rerequest a check

### User (3 tools)
- `getUser` - Get user information
- `listUserEvents` - List user events (paginated)
- `deleteUser` - Delete user account

### Aliases (5 tools)
- `listAliases` - List aliases (paginated)
- `getAlias` - Get alias details
- `deleteAlias` - Delete an alias
- `listDeploymentAliases` - List deployment aliases (paginated)
- `assignAlias` - Assign alias to deployment

### Artifacts (6 tools)
- `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

### Environment (5 tools)
- `createCustomEnvironment` - Create custom environment
- `getCustomEnvironments` - List custom environments (paginated)
- `getCustomEnvironment` - Get custom environment
- `updateCustomEnvironment` - Update custom environment
- `deleteCustomEnvironment` - Delete custom environment

### Integrations (5 tools)
- `getConfigurations` - List integration configs (paginated)
- `getConfiguration` - Get integration config
- `deleteConfiguration` - Delete integration config
- `gitNamespaces` - List git namespaces
- `searchRepo` - Search git repositories

### Project Members (3 tools)
- `getProjectMembers` - List project members (paginated)
- `addProjectMember` - Add project member
- `removeProjectMember` - Remove project member

### Marketplace (11 tools)
- `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

## Example Usage

### Using Resources
```typescript
// Resources are automatically available in MCP clients
// Access them via: vercel://deployments, vercel://projects, etc.
```

### Using Prompts
```typescript
// 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" }
```

### Using Tools with Pagination
```typescript
// 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 
});
```

### Common Workflows

#### Deploy a Project
1. Use the `deploy-project` prompt for guided deployment
2. Or manually: `createProject` → `createDeployment` → monitor with `getDeployment`

#### Configure Custom Domain
1. Add domain: `addDomain`
2. Verify ownership: `verifyDomain`
3. Add to project: `addProjectDomain`
4. Configure DNS: `createDnsRecord`

#### Set Up Team Access
1. Create team: `createTeam`
2. Invite members: `inviteUserToTeam`
3. Configure access groups: `createAccessGroup`
4. Assign projects: `addAccessGroupProject`

## Architecture

```
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
```

## Development

```bash
# Install dependencies
npm install

# Build the project
npm run build

# Run locally
npm start

# Format code
npm run check
```

## Security Considerations

- 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

## Contributing

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

## License

MIT