MCP Namecheap Server
# 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
Scored across 3 tools
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.
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.
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.
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.