Skip to main content
Glama
metehan777

Semrush MCP Server

by metehan777

Semrush MCP Server

An MCP (Model Context Protocol) server that provides access to Semrush API functionality for AI assistants.

Features

  • 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

Related MCP server: Serpstat MCP Server

Prerequisites

Installation

  1. Clone this repository or create a new directory:

mkdir semrush-mcp
cd semrush-mcp
  1. Create the following directory structure:

semrush-mcp/
├── src/
│   └── index.ts
├── package.json
├── tsconfig.json
├── .env.example
├── .gitignore
└── README.md
  1. Save the provided files in their respective locations

Then manually:

npm install
npm run build

Configuration

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

Usage with Claude Desktop

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"
      }
    }
  }
}

Available Tools

1. domain_overview

Get comprehensive domain analytics.

Parameters:

  • domain (required): Domain to analyze (e.g., "example.com")

  • database (optional): Database code (default: "us")

2. keyword_overview

Get keyword metrics and data.

Parameters:

  • phrase (required): Keyword phrase to analyze

  • database (optional): Database code (default: "us")

Get organic search keywords for a domain.

Parameters:

  • domain (required): Domain to analyze

  • database (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 analyze

  • target_type (optional): "domain" or "url" (default: "domain")

5. competitor_research

Find organic competitors for a domain.

Parameters:

  • domain (required): Domain to analyze

  • database (optional): Database code (default: "us")

  • limit (optional): Number of competitors (default: 10)

6. domain_adwords

Get paid search (Google Ads) keywords for a domain.

Parameters:

  • domain (required): Domain to analyze

  • database (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 phrase

  • database (optional): Database code (default: "us")

  • limit (optional): Number of results (default: 10)

Database Codes

Common database codes for different regions:

  • us - United States

  • uk - United Kingdom

  • ca - Canada

  • au - Australia

  • de - Germany

  • fr - France

  • es - Spain

  • it - Italy

  • br - Brazil

  • in - India

Development

To run the server in development mode:

npm run dev

Example Usage in Claude

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"

Troubleshooting

  1. API Key Issues: Ensure your SEMRUSH_API_KEY environment variable is set correctly

  2. Rate Limits: Semrush API has rate limits. Check your plan's limits

  3. Database Codes: Make sure you're using valid database codes for your target regions

License

MIT

Available Tools

7 tools
competitor_researchC

Find organic competitors for a domain

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
databaseNo
limitNo

TDQS

C2.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action ('Find') without explaining what the tool returns (e.g., list of domains, metrics), whether it's read-only or mutative, rate limits, or authentication needs. This is inadequate for a tool with 3 parameters and no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core purpose, making it easy to parse quickly. Every word earns its place by conveying the essential action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (3 parameters, 0% schema coverage, no annotations, no output schema), the description is incomplete. It doesn't explain what the tool returns, how parameters interact, or behavioral traits. For a tool that likely outputs structured competitor data, this leaves critical gaps for an AI agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning none of the 3 parameters ('domain', 'database', 'limit') are documented in the schema. The description doesn't add any meaning beyond the tool name—it doesn't explain what 'database' refers to (e.g., a specific dataset) or how 'limit' affects results. This fails to compensate for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Find organic competitors for a domain' clearly states the verb ('Find') and resource ('organic competitors'), but it's somewhat vague about what constitutes 'organic competitors' (e.g., SEO competitors, similar websites). It doesn't distinguish from sibling tools like 'domain_organic_search' or 'domain_overview', which might overlap in purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'domain_organic_search' or 'domain_overview'. The description implies it's for competitor analysis, but it doesn't specify prerequisites, exclusions, or comparative use cases with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domain_adwordsC

Get paid search (Google Ads) keywords for a domain

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
databaseNo
limitNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'gets' data, implying a read-only operation, but doesn't cover critical aspects like authentication needs, rate limits, error handling, or response format. For a tool with 3 parameters and no annotations, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It's front-loaded with the core purpose and efficiently conveys the essential information without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters with 0% schema coverage, no annotations, and no output schema, the description is incomplete. It doesn't address parameter meanings, behavioral traits, or return values, making it inadequate for an AI agent to fully understand and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning none of the 3 parameters have descriptions in the schema. The tool description doesn't mention any parameters or add meaning beyond the schema. It fails to explain what 'domain,' 'database,' or 'limit' mean in context, leaving them undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get paid search (Google Ads) keywords for a domain.' It specifies the action ('get'), resource ('keywords'), and context ('paid search/Google Ads for a domain'). However, it doesn't explicitly differentiate from sibling tools like 'keyword_overview' or 'related_keywords,' which might also handle keywords.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'keyword_overview' or 'domain_organic_search,' nor does it specify use cases, prerequisites, or exclusions. The agent must infer usage from the purpose alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

domain_overviewC

Get domain analytics overview including organic traffic, keywords, and authority score

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
databaseNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states this is a 'Get' operation (implying read-only), but doesn't disclose any behavioral traits like authentication requirements, rate limits, data freshness, or what happens with invalid domains. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point. It's appropriately sized for what it covers, though it could benefit from being more comprehensive given the tool's complexity and lack of other documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters with 0% schema coverage, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain parameters, return values, or behavioral constraints. For a domain analytics tool that likely returns complex data, this leaves too many unknowns for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage for 2 parameters, the description provides no information about parameters. It doesn't mention the 'domain' or 'database' parameters at all, nor does it explain what values are expected (e.g., format for domain, valid database codes). The description fails to compensate for the complete lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('domain analytics overview') with specific metrics mentioned (organic traffic, keywords, authority score). It distinguishes from some siblings like 'backlinks_overview' or 'keyword_overview' by focusing on comprehensive domain analytics rather than specific aspects, though it doesn't explicitly differentiate from all alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus its siblings. With tools like 'domain_organic_search' and 'keyword_overview' available, there's no indication of when this comprehensive overview is preferred over more specific tools or what scenarios warrant its use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

keyword_overviewC

Get keyword metrics including search volume, difficulty, and CPC

ParametersJSON Schema
NameRequiredDescriptionDefault
phraseYes
databaseNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a 'Get' operation, implying read-only behavior, but doesn't mention any side effects, rate limits, authentication requirements, or error conditions. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and immediately lists the key metrics, making it easy to understand at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters with 0% schema coverage, no annotations, and no output schema, the description is insufficient. It doesn't explain parameter usage, return values, or behavioral traits. For a keyword analysis tool that likely returns structured data, more context is needed to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, meaning neither parameter has descriptions in the schema. The tool description mentions 'keyword metrics' but doesn't explain what the 'phrase' or 'database' parameters mean, their expected formats, or how they affect the analysis. With 2 parameters and no schema documentation, the description fails to compensate for this gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('keyword metrics') with specific metrics listed (search volume, difficulty, CPC). It distinguishes this tool from siblings like 'backlinks_overview' or 'domain_overview' by focusing on keyword analysis rather than backlinks or domains. However, it doesn't explicitly contrast with 'related_keywords' which might also involve keyword data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'related_keywords' or 'competitor_research'. It mentions what metrics are retrieved but offers no context about appropriate use cases, prerequisites, or limitations compared to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv1.0.0
    • First observedbacklinks_overview
    • First observedcompetitor_research
    • First observeddomain_adwords
    • First observeddomain_organic_search
    • First observeddomain_overview
    • First observedkeyword_overview
    • First observedrelated_keywords

TDQS

B3.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap. For example, backlinks_overview focuses on backlink analysis, competitor_research identifies competitors, domain_adwords and domain_organic_search target paid vs. organic keywords respectively, domain_overview provides general analytics, keyword_overview gives keyword metrics, and related_keywords offers keyword suggestions. An agent can easily differentiate them.

Naming Consistency5/5

All tools follow a consistent snake_case pattern with descriptive names that clearly indicate their function. The naming convention is uniform across all tools, such as domain_adwords, domain_organic_search, and keyword_overview, making them predictable and easy to understand.

Tool Count5/5

With 7 tools, the server is well-scoped for SEO and domain analysis. Each tool serves a specific and necessary function within this domain, such as backlink analysis, competitor research, keyword metrics, and domain overviews, ensuring a balanced and focused toolset.

Completeness4/5

The toolset covers core SEO workflows comprehensively, including backlinks, competitors, keywords, and domain analytics. A minor gap exists in the lack of tools for updating or managing data (e.g., adding custom keywords or tracking changes), but agents can work around this with the provided read-only operations.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    Not graded
    maintenance
    Enables AI assistants to interact with DataForSEO APIs and obtain SEO data including SERP results, keyword research, on-page metrics, backlink analysis, and domain analytics through a standardized interface.
    76
    22,898
    -
  • A
    license
    B
    quality
    D
    maintenance
    Integrates the Serpstat SEO API with the Model Context Protocol to provide AI assistants with comprehensive data for domain analysis, keyword research, and competitor tracking. It enables users to perform complex SEO tasks like backlink analysis and site audits through natural language interfaces.
    65
    37
    4
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Connects AI assistants to SE Ranking's SEO and project management APIs to enable natural language queries for keyword research, backlink analysis, and technical audits. It supports comprehensive tasks including competitive analysis, domain traffic tracking, and AI search visibility monitoring.
    100
    Apache 2.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    Connects AI assistants to SEO APIs for backlinks analysis, keyword research, and traffic analysis.
    16
    28
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/metehan777/semrush-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server