Cloudflare MCP Server
by thangho98
README.md
# Cloudflare MCP Server & CLI
MCP server and CLI for managing Cloudflare domains - DNS records, SSL certificates, and Zone operations.
**Two interfaces available:**
- **MCP Server** - For Claude Desktop, Claude Code, and other MCP-compatible clients
- **CLI** - For OpenClaw, shell scripts, and direct terminal usage
## Features
### Zone/Domain Management
- `list_zones` - List all domains in your account
- `get_zone` - Get details of a specific zone
### DNS Records
- `list_dns_records` - List DNS records for a zone
- `get_dns_record` - Get details of a specific record
- `create_dns_record` - Create new DNS record (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, PTR)
- `update_dns_record` - Update existing DNS record
- `delete_dns_record` - Delete a DNS record
### SSL/TLS
- `get_ssl_universal_settings` - Get Universal SSL settings (enabled status, certificate authority)
- `update_ssl_universal_settings` - Enable or disable Universal SSL
- `list_ssl_certificates` - List SSL certificate packs
- `get_ssl_verification` - Check SSL verification status
### Analytics & Cache
- `get_zone_analytics` - Get analytics data for a zone
- `purge_cache` - Purge cached content (all, by URL, or by tag)
## Installation
```bash
npm install
npm run build
```
## Configuration
### 1. Get API Token from Cloudflare
1. Login to [Cloudflare Dashboard](https://dash.cloudflare.com)
2. Go to **My Profile** → **API Tokens**
3. Click **Create Token**
4. Create a custom token with the following permissions:
- Zone → Zone: Read
- Zone → DNS: Edit
- Zone → SSL and Certificates: Edit
- Zone → Analytics: Read
- Zone → Cache Purge: Purge
### 2. Add to Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"cloudflare": {
"command": "node",
"args": ["/path/to/cloudflare-mcp/dist/index.js"],
"env": {
"CLOUDFLARE_API_TOKEN": "your-api-token-here"
}
}
}
}
```
### 3. Add to Claude Code
Add to `~/.claude/settings.json`:
```json
{
"mcpServers": {
"cloudflare": {
"command": "node",
"args": ["/path/to/cloudflare-mcp/dist/index.js"],
"env": {
"CLOUDFLARE_API_TOKEN": "your-api-token-here"
}
}
}
}
```
## Usage Examples
### List all domains
```
list_zones
```
### Create an A record
```
create_dns_record zone_id="xxx" type="A" name="www" content="1.2.3.4" proxied=true
```
### Create a CNAME record
```
create_dns_record zone_id="xxx" type="CNAME" name="blog" content="example.com" proxied=true
```
### Create an MX record
```
create_dns_record zone_id="xxx" type="MX" name="@" content="mail.example.com" priority=10
```
### Update a DNS record
```
update_dns_record zone_id="xxx" record_id="yyy" content="5.6.7.8"
```
### Delete a DNS record
```
delete_dns_record zone_id="xxx" record_id="yyy"
```
### Check SSL status
```
get_ssl_universal_settings zone_id="xxx"
list_ssl_certificates zone_id="xxx"
```
### Purge all cache
```
purge_cache zone_id="xxx" purge_everything=true
```
### Purge specific URLs
```
purge_cache zone_id="xxx" files=["https://example.com/style.css", "https://example.com/script.js"]
```
---
## CLI Usage
The CLI provides the same functionality as the MCP server but can be used directly in terminal or by OpenClaw.
### Install CLI globally
```bash
npm install -g .
# or
npm link
```
### Set API Token
```bash
export CLOUDFLARE_API_TOKEN="your-api-token-here"
```
### Commands
```bash
# Zones
cloudflare-cli zones list
cloudflare-cli zones list --name example.com
cloudflare-cli zones get <zone-id>
# DNS
cloudflare-cli dns list <zone-id>
cloudflare-cli dns list <zone-id> --type A
cloudflare-cli dns create <zone-id> -t A -n www -c 192.168.1.1 --proxied
cloudflare-cli dns create <zone-id> -t CNAME -n blog -c example.com --proxied
cloudflare-cli dns create <zone-id> -t MX -n @ -c mail.example.com --priority 10
cloudflare-cli dns update <zone-id> <record-id> -c 192.168.1.2
cloudflare-cli dns delete <zone-id> <record-id>
# SSL
cloudflare-cli ssl settings <zone-id>
cloudflare-cli ssl enable <zone-id>
cloudflare-cli ssl disable <zone-id>
cloudflare-cli ssl certificates <zone-id>
cloudflare-cli ssl verification <zone-id>
# Cache
cloudflare-cli cache purge <zone-id> --all
cloudflare-cli cache purge <zone-id> --files https://example.com/page1 https://example.com/page2
# Analytics
cloudflare-cli analytics dashboard <zone-id> --since -1d --until now
cloudflare-cli analytics dashboard <zone-id> --since -7d --until now
```
All commands output JSON for easy parsing.
---
## OpenClaw Setup
For OpenClaw bots that don't support MCP, use the CLI with the provided skill.
### 1. Install CLI globally
```bash
cd /path/to/cloudflare-mcp
npm install
npm run build
npm link # Makes cloudflare-cli available globally
```
### 2. Copy skill to OpenClaw
```bash
# Copy to managed skills (available for all agents)
cp -r skill ~/.openclaw/skills/cloudflare
# Or copy to workspace skills (specific project)
cp -r skill /path/to/your/workspace/skills/cloudflare
```
### 3. Configure OpenClaw
Add to `~/.openclaw/openclaw.json`:
```json
{
"skills": {
"entries": {
"cloudflare": {
"enabled": true,
"env": {
"CLOUDFLARE_API_TOKEN": "your-api-token-here"
}
}
}
}
}
```
### 4. Verify installation
```bash
# Check if CLI is available
which cloudflare-cli
cloudflare-cli --version
# Test with your token
export CLOUDFLARE_API_TOKEN="your-token"
cloudflare-cli zones list
```
Now the OpenClaw bot can use `/cloudflare` or invoke `cloudflare-cli` commands directly.
---
## Development
```bash
# Build
npm run build
# Watch mode
npm run dev
# Test with MCP Inspector
npm run inspector
# Test CLI
node dist/cli.js --help
```
## License
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues