Skip to main content
Glama
johnsorrentino

MCP Namecheap Server

README.md
# MCP Namecheap Server

A Model Context Protocol (MCP) server that provides integration with the Namecheap API for domain management operations.

## Features

I only added the functionality I use and I don't think it's a good idea to allow an agent to register domains. The complete set of Namecheap API methods can be found [here](https://www.namecheap.com/support/api/methods/).

- **Get Domain List**: Retrieve all domains in your Namecheap account
- **Check Domain Availability**: Check if domains are available for registration
- **Set Custom DNS**: Configure custom nameservers for your domains
- **Configurable Tools**: Enable/disable specific tools to control what's available in Cursor

## Prerequisites

Before using this MCP server, you need:

1. **Namecheap Account Requirements**:
   - At least 20 domains under your account
   - $50 on your account balance
   - $50 spent within the last 2 years

2. **API Access Setup**:
   - Enable API access in your Namecheap dashboard
   - Obtain your API key
   - Whitelist your IP address

## Installation

1. Clone this repository:
```bash
git clone <repository-url>
cd mcp-namecheap
```

2. Install dependencies:
```bash
npm install
```

3. Build the project:
```bash
npm run build
```

## Configuration

Create a `.env` file with your Namecheap credentials:
```bash
NAMECHEAP_API_USER=your_api_username
NAMECHEAP_API_KEY=your_api_key
NAMECHEAP_USERNAME=your_namecheap_username
NAMECHEAP_CLIENT_IP=your_whitelisted_ip_address
```

Or reference the `mcp-config.json` file which shows all available environment variables.

### Tool Configuration

You can enable/disable specific tools by setting these environment variables:

- `NAMECHEAP_ENABLE_GETLIST` - Enable domain list retrieval (default: true)
- `NAMECHEAP_ENABLE_CHECK` - Enable domain availability checking (default: true)
- `NAMECHEAP_ENABLE_SETCUSTOM` - Enable custom DNS configuration (default: true)

Set any of these to `false` to disable the corresponding tool.

### Sandbox Mode

For testing, you can use Namecheap's sandbox environment:
```bash
NAMECHEAP_SANDBOX=true
```

## Usage

### Running the Server

```bash
npm start
```

### Available Tools

#### 1. Get Domain List (`namecheap_get_domain_list`)
Returns a list of all domains in your Namecheap account with details including expiration dates, auto-renewal status, and DNS configuration.

**Parameters**: None

#### 2. Check Domain Availability (`namecheap_check_domain_availability`)
Checks the availability of one or more domains for registration.

**Parameters**:
- `domains` (array): Array of domain names to check (e.g., ["example.com", "test.org"])

#### 3. Set Custom DNS (`namecheap_set_custom_dns`)
Sets custom nameservers for a domain. Note that services like URL forwarding, email forwarding, and dynamic DNS will not work with custom nameservers.

**Parameters**:
- `domain` (string): The domain name (e.g., "example.com")
- `nameservers` (array): Array of nameserver addresses (1-12 nameservers)

## MCP Client Configuration

To use this server with an MCP client like Cursor, add the following to your MCP configuration:

```json
{
  "mcpServers": {
    "namecheap": {
      "command": "node",
      "args": ["path/to/mcp-namecheap/dist/index.js"],
      "env": {
        "NAMECHEAP_API_USER": "your_api_username",
        "NAMECHEAP_API_KEY": "your_api_key",
        "NAMECHEAP_USERNAME": "your_namecheap_username",
        "NAMECHEAP_CLIENT_IP": "your_whitelisted_ip_address"
      }
    }
  }
}
```

## Development

### Scripts

- `npm run build` - Build the TypeScript project
- `npm run dev` - Run in development mode with tsx
- `npm start` - Run the built project

### Project Structure

```
src/
├── index.ts          # Main MCP server implementation
├── namecheap-client.ts # Namecheap API client
└── types.ts          # TypeScript type definitions
```

## API Reference

This server uses the following Namecheap API endpoints:

- `namecheap.domains.getList` - Retrieve domain list
- `namecheap.domains.check` - Check domain availability
- `namecheap.domains.dns.setCustom` - Set custom nameservers

For more information, see the [Namecheap API documentation](https://www.namecheap.com/support/api/methods/).

## Error Handling

The server includes comprehensive error handling for:

- Missing or invalid API credentials
- Network connectivity issues
- Namecheap API errors
- Invalid parameters
- Disabled tools

## Security Considerations

- Store API credentials securely
- Keep your IP whitelist updated
- Use environment variables for sensitive configuration
- Consider using the sandbox environment for testing

## License

MIT 

TDQS

B3.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: checking domain availability, listing owned domains, and setting DNS nameservers. The descriptions clearly differentiate these three separate operations in the domain management workflow.

Naming Consistency5/5

All three tools follow a perfect namecheap_verb_noun pattern with consistent snake_case formatting. The naming convention is predictable and readable throughout the entire tool set.

Tool Count3/5

With only 3 tools, this server feels somewhat thin for a comprehensive domain management system. While the tools cover core operations, typical domain management would include additional functionality like domain registration, renewal, transfer, or contact management.

Completeness2/5

There are significant gaps in the domain management lifecycle. The server lacks essential operations like registering a domain after checking availability, renewing domains, transferring domains, or managing domain contacts/settings beyond DNS. This creates dead ends in typical domain management workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues