https://github.com/cfdude/mcp-namecheap
MCP server for interacting with Namecheap API
https://github.com/cfdude/mcp-namecheap
Last synced: 11 months ago
JSON representation
MCP server for interacting with Namecheap API
- Host: GitHub
- URL: https://github.com/cfdude/mcp-namecheap
- Owner: cfdude
- Created: 2025-07-10T16:19:24.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2025-07-10T17:06:57.000Z (11 months ago)
- Last Synced: 2025-07-10T23:04:25.930Z (11 months ago)
- Language: TypeScript
- Size: 43.9 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# MCP Namecheap Server
A Model Context Protocol (MCP) server that provides tools for interacting with the Namecheap API. This server allows AI assistants to manage domains, check availability, and configure DNS records through Namecheap.
## Features
- **Domain Management**: List domains, check availability, get domain information
- **DNS Management**: Get and set DNS records, configure custom nameservers
- **Secure**: API keys stored in environment variables
- **Flexible**: Supports both production and sandbox Namecheap APIs
- **MCP Compatible**: Works with any MCP-compatible client
## Prerequisites
- Node.js 18 or higher
- Namecheap account with API access enabled
- Production API key from Namecheap (get it from https://ap.www.namecheap.com/settings/tools/apiaccess/)
- Sandbox API key for testing (register at https://www.sandbox.namecheap.com and enable API access)
## Installation
### From Source
1. Clone the repository:
```bash
git clone https://github.com/yourusername/mcp-namecheap.git
cd mcp-namecheap
```
2. Install dependencies:
```bash
npm install
```
3. Create a `.env` file from the example:
```bash
cp .env.example .env
```
4. Edit `.env` and add your Namecheap API credentials:
```env
# Production API Key (from Namecheap account settings)
NAMECHEAP_API_KEY=your_production_api_key_here
# Sandbox API Key (from https://www.sandbox.namecheap.com)
NAMECHEAP_SANDBOX_API_KEY=your_sandbox_api_key_here
NAMECHEAP_API_USER=your_api_username_here
NAMECHEAP_CLIENT_IP=your_whitelisted_ip_here
# Set to 'true' to use sandbox API, 'false' for production
NAMECHEAP_USE_SANDBOX=true
```
**Important**: You must whitelist your IP address in the Namecheap API settings.
5. Build the project:
```bash
npm run build
```
### Using Docker
1. Build the Docker image:
```bash
docker build -t mcp-namecheap .
```
2. Run with environment variables:
```bash
docker run -i \
-e NAMECHEAP_API_KEY=your_production_api_key \
-e NAMECHEAP_SANDBOX_API_KEY=your_sandbox_api_key \
-e NAMECHEAP_API_USER=your_username \
-e NAMECHEAP_CLIENT_IP=your_ip \
-e NAMECHEAP_USE_SANDBOX=true \
mcp-namecheap
```
## Configuration
### MCP Client Configuration
Add the server to your MCP client configuration:
#### For Claude Desktop
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"namecheap": {
"command": "node",
"args": ["/path/to/mcp-namecheap/dist/index.js"],
"env": {
"NAMECHEAP_API_KEY": "your_production_api_key",
"NAMECHEAP_SANDBOX_API_KEY": "your_sandbox_api_key",
"NAMECHEAP_API_USER": "your_username",
"NAMECHEAP_CLIENT_IP": "your_ip",
"NAMECHEAP_USE_SANDBOX": "true"
}
}
}
}
```
#### For Smithery
The server is configured to work with Smithery installation. Simply use:
```bash
smithery install mcp-namecheap
```
## Available Tools
### Domain Management Tools
#### `namecheap_domains_list`
Lists all domains in your Namecheap account.
Parameters:
- `listType` (optional): "ALL", "EXPIRING", or "EXPIRED"
- `searchTerm` (optional): Filter domains by search term
- `page` (optional): Page number for pagination
- `pageSize` (optional): Number of results per page
- `sortBy` (optional): Sort order - "NAME", "NAME_DESC", "EXPIREDATE", "EXPIREDATE_DESC", "CREATEDATE", "CREATEDATE_DESC"
#### `namecheap_domains_check`
Checks if domains are available for registration. **Supports bulk checking!**
Parameters:
- `domainList` (required): Array of domain names to check (can check multiple domains at once)
#### `namecheap_domains_getinfo`
Gets detailed information about a specific domain.
Parameters:
- `domainName` (required): Domain name to get information for
- `hostName` (optional): Hosted domain name for which domain information needs to be requested
#### `namecheap_domains_getcontacts`
Gets contact information for a domain.
Parameters:
- `domainName` (required): Domain name to get contacts for
#### `namecheap_domains_create`
Registers a new domain name.
Parameters:
- `domainName` (required): Domain name to register
- `years` (required): Number of years to register (1-10)
- `registrantFirstName` (required): Registrant first name
- `registrantLastName` (required): Registrant last name
- `registrantAddress1` (required): Registrant address
- `registrantCity` (required): Registrant city
- `registrantStateProvince` (required): Registrant state/province
- `registrantPostalCode` (required): Registrant postal code
- `registrantCountry` (required): Registrant country code (e.g., "US")
- `registrantPhone` (required): Registrant phone number
- `registrantEmailAddress` (required): Registrant email address
- Additional optional contact fields for admin, tech, and billing contacts
- `nameservers` (optional): Comma-separated list of nameservers
- `addFreeWhoisguard` (optional): "yes" or "no" (default: "yes")
- `wgEnabled` (optional): Enable WhoisGuard privacy protection "yes" or "no" (default: "yes")
#### `namecheap_domains_gettldlist`
Gets a list of all supported TLDs (Top Level Domains).
No parameters required.
#### `namecheap_domains_setcontacts`
Updates contact information for a domain.
Parameters:
- `domainName` (required): Domain name to update
- Various contact fields (all optional) for registrant, admin, tech, and billing contacts
#### `namecheap_domains_reactivate`
Reactivates an expired domain.
Parameters:
- `domainName` (required): Domain name to reactivate
- `isPremiumDomain` (optional): Whether this is a premium domain (default: false)
#### `namecheap_domains_renew`
Renews an expiring domain.
Parameters:
- `domainName` (required): Domain name to renew
- `years` (required): Number of years to renew (1-10)
- `isPremiumDomain` (optional): Whether this is a premium domain (default: false)
#### `namecheap_domains_getregistrarlock`
Gets the registrar lock status of a domain.
Parameters:
- `domainName` (required): Domain name to check lock status
#### `namecheap_domains_setregistrarlock`
Sets the registrar lock status for a domain.
Parameters:
- `domainName` (required): Domain name to lock/unlock
- `lockAction` (required): "LOCK" or "UNLOCK"
### DNS Management Tools
#### `namecheap_dns_getlist`
Retrieves DNS host records for a domain.
Parameters:
- `sld` (required): Second level domain (e.g., "example" from "example.com")
- `tld` (required): Top level domain (e.g., "com" from "example.com")
#### `namecheap_dns_setcustom`
Sets custom nameservers for a domain.
Parameters:
- `sld` (required): Second level domain
- `tld` (required): Top level domain
- `nameservers` (required): Array of nameserver addresses
#### `namecheap_dns_sethosts`
Sets DNS host records for a domain.
Parameters:
- `sld` (required): Second level domain
- `tld` (required): Top level domain
- `hosts` (required): Array of DNS records with:
- `hostname`: Subdomain or "@" for root
- `recordType`: "A", "AAAA", "CNAME", "MX", "TXT", "NS", "SRV", or "CAA"
- `address`: Value for the DNS record
- `mxPriority` (optional): Priority for MX records
- `ttl` (optional): Time to live in seconds (default: 1800)
## Development
### Running in Development Mode
```bash
npm run dev
```
### Building
```bash
npm run build
```
### Testing with MCP Inspector
You can test the server using the MCP Inspector:
```bash
npx @modelcontextprotocol/inspector dist/index.js
```
## Security Notes
- Never commit your `.env` file or expose your API keys
- Always use environment variables for sensitive data
- Whitelist only necessary IP addresses in Namecheap
- Use the sandbox API for testing
## Troubleshooting
### "Error 10: Unknown command"
Make sure your API access is enabled in Namecheap and you're using the correct API endpoint.
### "Error 11: Authentication failed"
Check that:
- Your API key is correct
- Your username matches the API user
- Your IP is whitelisted in Namecheap
### Connection Issues
Ensure the server is running and your MCP client is properly configured with the correct path.
## License
MIT
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.