# 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