An MCP (Model Context Protocol) server that provides access to Semrush API functionality for AI assistants.
- Domain Overview: Get comprehensive domain analytics including organic traffic, keywords, and authority score
- Keyword Research: Analyze keyword metrics including search volume, difficulty, and CPC
- Organic Search Analysis: Retrieve organic search keywords and rankings for any domain
- Paid Search Analysis: Get Google Ads keywords and PPC data for domains
- Backlinks Overview: Get backlink metrics and analysis for domains or specific URLs
- Competitor Research: Identify and analyze organic competitors
- Related Keywords: Discover related keywords and search suggestions
- Node.js 18+
- A Semrush API key (get one at https://www.semrush.com/api/)
- Clone this repository or create a new directory:
mkdir semrush-mcp
cd semrush-mcp
- Create the following directory structure:
semrush-mcp/
├── src/
│ └── index.ts
├── package.json
├── tsconfig.json
├── .env.example
├── .gitignore
└── README.md
- Save the provided files in their respective locations
Then manually:
npm install
npm run build
Set your Semrush API key as an environment variable:
export SEMRUSH_API_KEY="your-api-key-here"
Or create a .env
file:
SEMRUSH_API_KEY=your-api-key-here
Add the server to your Claude Desktop configuration file (claude_desktop_config.json
):
{
"mcpServers": {
"semrush": {
"command": "node",
"args": ["/path/to/semrush-mcp-server/dist/index.js"],
"env": {
"SEMRUSH_API_KEY": "your-api-key-here"
}
}
}
}
Get comprehensive domain analytics.
Parameters:
domain
(required): Domain to analyze (e.g., "example.com")database
(optional): Database code (default: "us")
Get keyword metrics and data.
Parameters:
phrase
(required): Keyword phrase to analyzedatabase
(optional): Database code (default: "us")
Get organic search keywords for a domain.
Parameters:
domain
(required): Domain to analyzedatabase
(optional): Database code (default: "us")limit
(optional): Number of results (default: 10)offset
(optional): Offset for pagination (default: 0)
Get backlinks overview for a domain or URL.
Parameters:
target
(required): Domain or URL to analyzetarget_type
(optional): "domain" or "url" (default: "domain")
Find organic competitors for a domain.
Parameters:
domain
(required): Domain to analyzedatabase
(optional): Database code (default: "us")limit
(optional): Number of competitors (default: 10)
Get paid search (Google Ads) keywords for a domain.
Parameters:
domain
(required): Domain to analyzedatabase
(optional): Database code (default: "us")limit
(optional): Number of results (default: 10)
Get related keywords and suggestions for a seed keyword.
Parameters:
phrase
(required): Seed keyword phrasedatabase
(optional): Database code (default: "us")limit
(optional): Number of results (default: 10)
Common database codes for different regions:
us
- United Statesuk
- United Kingdomca
- Canadaau
- Australiade
- Germanyfr
- Francees
- Spainit
- Italybr
- Brazilin
- India
To run the server in development mode:
npm run dev
Once configured, you can use natural language to access Semrush data:
- "Analyze the domain example.com using Semrush"
- "What's the search volume for 'digital marketing' keyword?"
- "Show me the top organic keywords for techcrunch.com"
- "Find competitors for shopify.com"
- "Get backlink data for https://metehan.ai/blog/semrush-mcp/"
- "What related keywords can you find for 'content marketing'?"
- "Show me the Google Ads keywords that amazon.com is bidding on"
- API Key Issues: Ensure your SEMRUSH_API_KEY environment variable is set correctly
- Rate Limits: Semrush API has rate limits. Check your plan's limits
- Database Codes: Make sure you're using valid database codes for your target regions
MIT