Extract keyword data from Google Ads Keyword Planner and analyze it using MCP Server.
MCP SEO/
├── server/ # MCP Server (Express API)
│ ├── Dockerfile
│ ├── src/
│ │ └── index.ts # Main server file
│ ├── package.json
│ └── tsconfig.json
│
├── extension/ # Chrome Extension
│ ├── src/
│ │ ├── manifest.json
│ │ ├── content.ts # Keyword extraction script
│ │ ├── background.ts # Service worker
│ │ └── popup/
│ │ ├── index.html
│ │ └── popup.ts
│ ├── package.json
│ └── tsconfig.json
│
└── docker/
├── docker-compose.yml # Deployment configuration
└── .env.example
# Upload files to VPS
scp -r server/ root@72.62.127.3:/root/mcp-seo/server/
scp -r extension/ root@72.62.127.3:/root/mcp-seo/extension/
scp docker/ root@72.62.127.3:/root/mcp-seo/docker/
# SSH to VPS
ssh root@72.62.127.3
# Generate API Key
API_KEY=$(openssl rand -hex 32)
echo "API_KEY=$API_KEY" > /root/mcp-seo/.env
# Deploy with Docker Compose
cd /root/mcp-seo/docker
docker-compose up -d --build
# Check status
docker-compose ps
docker logs mcp-seo-server# Health check
curl https://seo.modalhp.com/api/health
# Test with API Key
curl -X POST https://seo.modalhp.com/api/keywords \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keywords":[{"keyword":"test keyword"}]}'-
Build extension (if not already built):
cd extension/ npm install npm run build -
Load in Chrome:
- Open
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select
extension/folder
- Open
-
Configure Extension:
- Click extension icon
- Enter MCP Server URL:
https://seo.modalhp.com - Enter API Key (from step 1)
- Click "Save Configuration"
-
Use with Google Ads:
- Navigate to Google Ads Keyword Planner
- Click "Send to MCP Server" button
- Verify data sent successfully
| Endpoint | Method | Auth Required | Description |
|---|---|---|---|
/api/health |
GET | No | Health check |
/api/keywords |
POST | Yes | Receive keyword data |
/api/analyze |
POST | Yes | Analyze keywords |
{
"keywords": [
{
"keyword": "example keyword",
"monthlySearches": 10000,
"competition": "HIGH",
"lowTopPageBid": 1.50,
"highTopPageBid": 3.00
}
],
"source": "Google Ads Keyword Planner"
}{
"success": true,
"message": "Successfully received 1 keywords",
"count": 1
}| Variable | Default | Description |
|---|---|---|
PORT |
4000 | Server port |
API_KEY |
(required) | Authentication key |
NODE_ENV |
production | Environment mode |
- NEVER commit
.envfiles to git - ALWAYS use environment variables for sensitive data
- API Key is required for all endpoints except
/api/health - HTTPS is enforced via Traefik
docker logs mcp-seo-server
docker inspect mcp-seo-serverdocker logs traefik-traefik-1
ls -la /var/lib/docker/volumes/traefik-letsencrypt/- Check server URL in extension settings
- Verify API Key is correct
- Test connection using "Test Server Connection" button
- Check browser console for CORS errors
MIT