Crawler Summary

ser-data-api-mcp-server answer-first brief

MCP server based on TypeScript SDK SE Ranking MCP Server This Model Context Protocol (MCP) server connects AI assistants to $1 SEO data and project management APIs. It enables natural language queries for: - Keyword research and competitive analysis - Backlink analysis and monitoring - Domain traffic and ranking insights - Website audits and technical SEO - AI search visibility tracking - Project and rank tracking management Prerequisites Before you b Published capability contract available. No trust telemetry is available yet. 6 GitHub stars reported by the source. Last updated 2/24/2026.

Freshness

Last checked 2/22/2026

Best For

Contract is available with explicit auth and schema references.

Not Ideal For

ser-data-api-mcp-server is not ideal for teams that need stronger public trust telemetry, lower setup complexity, or more explicit contract coverage before production rollout.

Evidence Sources Checked

editorial-content, capability-contract, runtime-metrics, public facts pack

Claim this agent
Agent DossierGitHubSafety: 100/100

ser-data-api-mcp-server

MCP server based on TypeScript SDK SE Ranking MCP Server This Model Context Protocol (MCP) server connects AI assistants to $1 SEO data and project management APIs. It enables natural language queries for: - Keyword research and competitive analysis - Backlink analysis and monitoring - Domain traffic and ranking insights - Website audits and technical SEO - AI search visibility tracking - Project and rank tracking management Prerequisites Before you b

MCPverified

Public facts

7

Change events

1

Artifacts

0

Freshness

Feb 22, 2026

Verifiededitorial-content1 verified compatibility signal6 GitHub stars

Published capability contract available. No trust telemetry is available yet. 6 GitHub stars reported by the source. Last updated 2/24/2026.

6 GitHub starsSchema refs publishedTrust evidence available

Trust score

Unknown

Compatibility

MCP

Freshness

Feb 22, 2026

Vendor

Seranking

Artifacts

0

Benchmarks

0

Last release

1.1.0

Executive Summary

Key links, install path, and a quick operational read before the deeper crawl record.

Verifiededitorial-content

Summary

Published capability contract available. No trust telemetry is available yet. 6 GitHub stars reported by the source. Last updated 2/24/2026.

Setup snapshot

git clone https://github.com/seranking/seo-data-api-mcp-server.git
  1. 1

    Setup complexity is MEDIUM. Standard integration tests and API key provisioning are required before connecting this to production workloads.

  2. 2

    Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Evidence Ledger

Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.

Verifiededitorial-content
Vendor (1)

Vendor

Seranking

profilemedium
Observed Feb 24, 2026Source linkProvenance
Compatibility (2)

Protocol compatibility

MCP

contracthigh
Observed Feb 24, 2026Source linkProvenance

Auth modes

mcp, api_key

contracthigh
Observed Feb 24, 2026Source linkProvenance
Artifact (1)

Machine-readable schemas

OpenAPI or schema references published

contracthigh
Observed Feb 24, 2026Source linkProvenance
Adoption (1)

Adoption signal

6 GitHub stars

profilemedium
Observed Feb 24, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance
Integration (1)

Crawlable docs

6 indexed pages on the official domain

search_documentmedium
Observed Apr 15, 2026Source linkProvenance

Release & Crawl Timeline

Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.

Self-declaredagent-index

Artifacts Archive

Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.

Self-declaredGITHUB MCP

Extracted files

0

Examples

6

Snippets

0

Languages

typescript

Executable Examples

shell

git clone https://github.com/seranking/seo-data-api-mcp-server.git

shell

cd seo-data-api-mcp-server

bash

docker build -t se-ranking/seo-data-api-mcp-server .
# Check that the image is built and named `se-ranking/seo-data-api-mcp-server`:
docker image ls

shell

git pull origin main
docker build -t se-ranking/seo-data-api-mcp-server .

shell

npm install

shell

npm run build

Docs & README

Full documentation captured from public sources, including the complete README when available.

Self-declaredGITHUB MCP

Docs source

GITHUB MCP

Editorial quality

ready

MCP server based on TypeScript SDK SE Ranking MCP Server This Model Context Protocol (MCP) server connects AI assistants to $1 SEO data and project management APIs. It enables natural language queries for: - Keyword research and competitive analysis - Backlink analysis and monitoring - Domain traffic and ranking insights - Website audits and technical SEO - AI search visibility tracking - Project and rank tracking management Prerequisites Before you b

Full README

SE Ranking MCP Server

This Model Context Protocol (MCP) server connects AI assistants to SE Ranking's SEO data and project management APIs. It enables natural language queries for:

  • Keyword research and competitive analysis
  • Backlink analysis and monitoring
  • Domain traffic and ranking insights
  • Website audits and technical SEO
  • AI search visibility tracking
  • Project and rank tracking management

Prerequisites

Before you begin, please ensure you have the following software and accounts ready:

  • SE Ranking Account: You will need an active SE Ranking account to generate an API token. If you don’t have one, you can sign up here.
  • Docker: A platform for developing, shipping, and running applications in containers. If you don’t have it, you can download it from the official Docker website.
  • Git: A free and open-source distributed version control system. You can download it from the official Git website.
  • AI Assistant: You will need an MCP-compatible client, such as Claude Desktop or the Gemini CLI.

API Tokens

This MCP server supports two types of API access:

| Token | Environment Variable | Format | Purpose | |-------|---------------------|--------|---------| | Data API | DATA_API_TOKEN | UUID (e.g., 80cfee7d-xxxx-xxxx-xxxx-fc8500816bb3) | Access to keyword research, domain analysis, backlinks data, SERP analysis, and website audits. Tools prefixed with DATA_. | | Project API | PROJECT_API_TOKEN | 40-char hex (e.g., 253a73adxxxxxxxxxxxx340aa0a939) | Access to project management, rank tracking, backlink monitoring, and account management. Tools prefixed with PROJECT_. |

Get your tokens from: https://online.seranking.com/admin.api.dashboard.html

You can use one or both tokens depending on which tools you need. If you only use Data API tools, you can omit PROJECT_API_TOKEN, and vice versa.

Rate Limits

| API | Default Rate Limit | |-----|-------------------| | Data API | 10 requests per second | | Project API | 5 requests per second |

Rate limits are customizable. Contact api@seranking.com to request adjustments.

Installation

Choose the installation method that best fits your needs:

  • Option 1: Docker (Recommended) - Best for standard usage, stability, and ease of updates. Use this if you just want to run the tool without managing dependencies.
  • Option 2: Local Node.js Server (For Developers) - Best for development, debugging, or environments where Docker isn't available (like Replit). Use this if you need to modify the code or run a custom setup.

Option 1: Docker (Recommended)

  1. Open your terminal (or Command Prompt/PowerShell on Windows).
  2. Clone the project repository from GitHub:
git clone https://github.com/seranking/seo-data-api-mcp-server.git
  1. Navigate into the new directory:
cd seo-data-api-mcp-server
  1. Build the Docker Image:
docker build -t se-ranking/seo-data-api-mcp-server .
# Check that the image is built and named `se-ranking/seo-data-api-mcp-server`:
docker image ls

How to Update SEO-MCP (Docker)

To ensure you have the latest features, pull the latest changes and rebuild:

git pull origin main
docker build -t se-ranking/seo-data-api-mcp-server .

Option 2: Local Node.js Server (For Developers)

In order to run the local Node server, you need to have Node.js 20+ version installed on your machine.

  1. Install dependencies:
npm install
  1. Build the project:
npm run build
  1. Start the server:
npm run start-http

Then your HTTP server should be running at: http://0.0.0.0:5000/mcp.

In case you'd like to modify the HOST and PORT, you can do so by creating a .env file in the root directory of the project with the settings you want to override, for example:

HOST=127.0.0.1
PORT=5555

Additionally, when running in external environments like Replit, you can set the DATA_API_TOKEN and PROJECT_API_TOKEN environment variables in the configuration panel.

Note: If you change the API token values when the server is running, you need to restart the server.

Verifying the HTTP Server

To send a sample test request and verify your setup:

./test-http-server-curl-request.sh '<your-api-token-here>'

For batch MCP Requests testing:

./test-batch-http-server-curl-request.sh '<your-api-token-here>'

Connect to Claude Desktop

Claude Desktop reads its configuration from claude_desktop_config.json.

  • Click on the Claude menu and select Settings....
  • In the Settings window, navigate to the Developer tab in the left sidebar.
  • Click the Edit Config button to open the configuration file. This action creates a new configuration file if one doesn’t exist or opens your existing configuration.

The file is located at:

  • macOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
  • Windows: %AppData%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Example of Claude Desktop configuration for MCP server

<b>JSON Configuration Template</b>:

{
  "mcpServers": {
    "seo-data-api-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "DATA_API_TOKEN",
        "-e",
        "PROJECT_API_TOKEN",
        "se-ranking/seo-data-api-mcp-server"
      ],
      "env": {
        "DATA_API_TOKEN": "<your-data-api-token-here>",
        "PROJECT_API_TOKEN": "<your-project-api-token-here>"
      }
    }
  }
}
  • Replace the DATA_API_TOKEN and PROJECT_API_TOKEN placeholder values with your tokens (see API Tokens section).

  • After saving claude_desktop_config.json, restart Claude Desktop. You should see the server under MCP Servers/Tools.

  • To verify the setup, ask Claude: Do you have access to MCP? It should respond by listing seo-data-api-mcp.

Claude Desktop: Verify the MCP access

  • Your setup is complete! You can now run complex SEO queries using natural language.

Claude Desktop: List MCP Servers

Connect to Gemini CLI

  • Open the Gemini CLI settings file, which is typically located at: ~/.gemini/settings.json
  • Add the following JSON configuration, making sure to replace the API token placeholder values.
{
  "mcpServers": {
    "seo-data-api-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "DATA_API_TOKEN",
        "-e",
        "PROJECT_API_TOKEN",
        "se-ranking/seo-data-api-mcp-server"
      ],
      "env": {
        "DATA_API_TOKEN": "<your-data-api-token-here>",
        "PROJECT_API_TOKEN": "<your-project-api-token-here>"
      }
    }
  }
}

Replace the DATA_API_TOKEN and PROJECT_API_TOKEN placeholder values with your tokens (see API Tokens section).

  • Save the configuration file.

  • To verify the setup, launch the Gemini CLI by running gemini in your terminal. Once the interface is active, press Ctrl+T to view the available MCP servers. Ensure seo-data-api-mcp is listed.

Gemini CLI: Configured MCP Servers

  • Your setup is complete! You can now run complex SEO queries using natural language.

Gemini CLI: SEO Queries Example

Available Tools

Data API Tools

| Module | Tool Name | Description | | :--- | :--- | :--- | | SERP | DATA_getSerpHtmlDump | Retrieves the raw HTML dump of a completed SERP task as a ZIP file. | | SERP | DATA_getSerpLocations | Retrieves a list of available locations for SERP analysis. | | SERP | DATA_getSerpResults | Runs a SERP query and returns results. Creates task, polls until complete, and returns organic/ads/featured snippets (standard) or all SERP types including AI Overview, Maps, Reviews (advanced). | | SERP | DATA_getSerpTaskAdvancedResults | Retrieves the status or advanced results of a specific SERP task. | | SERP | DATA_getSerpTaskResults | Retrieves the status or standard results of a specific SERP task. Returns organic, ads, and featured_snippet types only. | | SERP | DATA_getSerpTasks | Retrieves a list of all SERP tasks added to the queue in the last 24 hours. | | ai search | DATA_getAiDiscoverBrand | Identifies and returns the brand name associated with a given target domain, subdomain, or URL. | | ai search | DATA_getAiOverview | Retrieves a high-level overview of a domain's performance in AI search engines. | | ai search | DATA_getAiPromptsByBrand | Retrieves a list of prompts where the specified brand is mentioned in AI search results. | | ai search | DATA_getAiPromptsByTarget | Retrieves a list of prompts (queries) that mention the specified target in AI search results. | | backlinks | DATA_exportBacklinksData | Retrieves large-scale backlinks asynchronously, returning a task ID to check status later. | | backlinks | DATA_getAllBacklinks | Retrieves a comprehensive list of backlinks for the specified target, with extensive filtering and sorting options. | | backlinks | DATA_getBacklinksAnchors | Retrieves a list of anchor texts for backlinks pointing to the specified target. | | backlinks | DATA_getBacklinksAuthority | Fetch authority metrics for a target (domain, host or URL). | | backlinks | DATA_getBacklinksCount | Returns the total number of backlinks for the target. Supports batch requests. | | backlinks | DATA_getBacklinksExportStatus | Checks the status of an asynchronous backlinks export task. Returns download URL when complete. | | backlinks | DATA_getBacklinksIndexedPages | Fetch site pages that have backlinks, with sorting and limit controls. | | backlinks | DATA_getBacklinksMetrics | Returns key statistics for a target (backlinks count, referring domains, etc.). Supports batch requests. | | backlinks | DATA_getBacklinksRaw | Returns all backlinks pointing to a target using cursor-based pagination for large datasets. | | backlinks | DATA_getBacklinksRefDomains | Retrieves a list of referring domains pointing to the specified target. | | backlinks | DATA_getBacklinksSummary | Retrieves a summary of backlink metrics for one or multiple targets. | | backlinks | DATA_getCumulativeBacklinksHistory | Returns live backlinks count for every day within the specified date range. | | backlinks | DATA_getDistributionOfDomainAuthority | Returns distribution of Domain InLink Rank of all domains referencing a target. | | backlinks | DATA_getDomainAuthority | Returns the domain InLink Rank (Domain Authority) of the target page's root domain. | | backlinks | DATA_getNewLostBacklinksCount | Returns count of (newly) found or lost backlinks for every day in the date range. | | backlinks | DATA_getNewLostRefDomainsCount | Returns count of referring domains found or lost in the date range, by day. | | backlinks | DATA_getPageAuthority | Returns the InLink Rank (Page Authority) for a target URL. | | backlinks | DATA_getPageAuthorityHistory | Returns historical values of InLink Rank for a specific target page. | | backlinks | DATA_getReferringIps | Returns IPv4 addresses that belong to backlinks pointing to a target. | | backlinks | DATA_getReferringIpsCount | Returns the number of unique IPs linking to a target. | | backlinks | DATA_getReferringSubnetsCount | Returns the number of unique subnets/C-blocks linking to a target. | | backlinks | DATA_getTotalRefDomainsCount | Returns the number of unique domains linking to a target. Supports batch requests. | | backlinks | DATA_listNewLostBacklinks | Returns a list of backlinks found or lost within the specified date range. | | backlinks | DATA_listNewLostReferringDomains | Returns referring domains found or lost in the specified date range. | | domain analysis | DATA_getDomainAdsByDomain | Retrieves paid ads for a specific domain. | | domain analysis | DATA_getDomainAdsByKeyword | Retrieves paid ads for a specific keyword. | | domain analysis | DATA_getDomainCompetitors | Retrieves a list of organic or paid competitors for a domain. | | domain analysis | DATA_getDomainKeywords | Retrieves keywords for which a domain ranks in organic or paid search. | | domain analysis | DATA_getDomainKeywordsComparison | Compares keyword rankings of two websites. Find common keywords or keyword gaps. | | domain analysis | DATA_getDomainOverviewDatabases | Fetch domain overview by database. | | domain analysis | DATA_getDomainOverviewHistory | Retrieves historical data for domain traffic and keyword rankings. | | domain analysis | DATA_getDomainOverviewWorldwide | Retrieves an aggregated worldwide overview of domain metrics. | | domain analysis | DATA_getDomainPages | Retrieves a list of individual pages ranking within a specified domain. | | domain analysis | DATA_getDomainSubdomains | Retrieves a list of subdomains for a domain with search performance metrics. | | domain analysis | DATA_getUrlOverviewWorldwide | Retrieves worldwide overview of organic and paid traffic metrics for a specific URL. | | keyword research | DATA_exportKeywords | Retrieves metrics for a bulk list of keywords. | | keyword research | DATA_getKeywordQuestions | Retrieves question-based keywords containing the seed keyword. | | keyword research | DATA_getLongTailKeywords | Retrieves long-tail variations for the seed keyword. | | keyword research | DATA_getRelatedKeywords | Retrieves keywords semantically related to the seed keyword. | | keyword research | DATA_getSimilarKeywords | Retrieves keywords similar to the seed keyword. | | website audit | DATA_createAdvancedAudit | Launches an advanced website audit that renders JavaScript. Suitable for SPAs. | | website audit | DATA_createStandardAudit | Launches a standard website audit that crawls HTML. Suitable for static sites. | | website audit | DATA_deleteAudit | Permanently deletes a website audit report and all associated data. | | website audit | DATA_getAuditHistory | Retrieves a historical snapshot of a specific audit run. | | website audit | DATA_getAuditPagesByIssue | Retrieves URLs affected by a specific issue within an audit. | | website audit | DATA_getAuditReport | Retrieves the full detailed report for a completed website audit. | | website audit | DATA_getAuditStatus | Checks the real-time status of a specific website audit. | | website audit | DATA_getCrawledPages | Returns all URLs found during an audit. | | website audit | DATA_getFoundLinks | Returns every hyperlink discovered during the audit. | | website audit | DATA_getIssuesByUrl | Retrieves all issues found on a specific page within an audit. | | website audit | DATA_listAudits | Retrieves all website audits associated with your account. | | website audit | DATA_recheckAudit | Launches a new crawl of a previously completed audit. | | website audit | DATA_updateAuditTitle | Changes the title of an existing website audit report. |

Project API Tools

| Module | Tool Name | Description | | :--- | :--- | :--- | | account | PROJECT_getAccountBalance | Get the current account balance including currency and currency code. | | account | PROJECT_getSubscription | Get information about the current user subscription. | | account | PROJECT_getUserProfile | Get information about the currently logged in user. | | analytics | PROJECT_getGoogleSearchConsole | Get popular queries from Google Search Console for a website. | | analytics | PROJECT_getSeoPotential | Assess potential traffic volume, traffic cost, and potential customers for a website. | | backlink checker | PROJECT_addDisavowedBacklinks | Add a list of URLs to the disavowed backlinks list. | | backlink checker | PROJECT_addProjectBacklink | Add a single backlink to the backlink monitor for a website. | | backlink checker | PROJECT_createBacklinkGroup | Create a new group for organizing backlinks. | | backlink checker | PROJECT_deleteBacklinkGroup | Delete a backlink group. | | backlink checker | PROJECT_deleteDisavowedBacklink | Remove a backlink from the disavowed backlinks list. | | backlink checker | PROJECT_deleteProjectBacklinks | Delete a list of backlinks from the backlink monitor. | | backlink checker | PROJECT_getBacklinkGscImportStatus | Get the status of a backlink import from Google Search Console. | | backlink checker | PROJECT_getBacklinkStats | Get backlink statistics for a website. | | backlink checker | PROJECT_importProjectBacklinks | Import a list of backlinks to the backlink monitor. | | backlink checker | PROJECT_listBacklinkGroups | Get a list and count of backlink groups for a website. | | backlink checker | PROJECT_listDisavowedBacklinks | Get a list and count of disavowed backlinks for a website. | | backlink checker | PROJECT_listProjectBacklinks | Get a list of backlinks from the backlink monitor. | | backlink checker | PROJECT_moveBacklinksToGroup | Move backlinks from one group to another. | | backlink checker | PROJECT_recheckProjectBacklinks | Run an index or status check for a list of backlinks. | | backlink checker | PROJECT_renameBacklinkGroup | Change the name of a backlink group. | | backlink checker | PROJECT_runBacklinkGscImport | Start a backlink import from Google Search Console. | | backlink checker | PROJECT_updateBacklinkImportSettings | Update settings for automatic backlink import from GSC. | | competitors | PROJECT_addCompetitor | Add a competitor website to a project for position tracking. | | competitors | PROJECT_deleteCompetitor | Remove a competitor website from a project. | | competitors | PROJECT_getAllCompetitorsMetrics | Get data on sites ranked in TOP 10 for tracked queries (14-day history). | | competitors | PROJECT_getCompetitorPositions | Get statistics on competitor keyword positions. | | competitors | PROJECT_getCompetitorTop10 | Get TOP 10 results for tracked keywords in a project. | | competitors | PROJECT_getCompetitorTop100 | Get top 100 results for tracked keywords in a project. | | competitors | PROJECT_listCompetitors | Get a list of all competitors added to a project with statistics. | | keyword groups | PROJECT_createKeywordGroup | Add a group for project keywords. | | keyword groups | PROJECT_deleteKeywordGroup | Delete a project keyword group. | | keyword groups | PROJECT_listKeywordGroups | Get a list of keyword groups for a project. | | keyword groups | PROJECT_moveKeywordsToGroup | Transfer project keywords from one group to another. | | keyword groups | PROJECT_updateKeywordGroup | Update the name of a project keyword group. | | marketing plan | PROJECT_addPlanTask | Add a new task to the marketing plan for a website. | | marketing plan | PROJECT_deletePlanTask | Delete a task from the marketing plan. | | marketing plan | PROJECT_listPlanItems | Get all marketing plan sections, items, and notes for a website. | | marketing plan | PROJECT_setPlanTaskStatus | Set the completion status of a marketing plan task. | | marketing plan | PROJECT_updatePlanTask | Update an existing marketing plan task. | | project groups | PROJECT_createProjectGroup | Add a new project group to a user account. | | project groups | PROJECT_deleteProjectGroup | Delete a project group. | | project groups | PROJECT_listProjectGroups | Get a list of all project groups from a user account. | | project groups | PROJECT_moveProjectsToGroup | Transfer projects from one group to another. | | project groups | PROJECT_updateProjectGroup | Rename a project group. | | project management | PROJECT_addKeywords | Add new keywords to a project. | | project management | PROJECT_addSearchEngine | Add a new search engine to a project. | | project management | PROJECT_createProject | Add a new project to the user account. | | project management | PROJECT_deleteKeywords | Delete keywords from a project. | | project management | PROJECT_deleteProject | Delete a project from the user account. | | project management | PROJECT_deleteSearchEngine | Delete a search engine from a project. | | project management | PROJECT_getAdsStats | Get total number of top and bottom advertisements by day. | | project management | PROJECT_getHistoricalDates | Returns standard comparison dates available for reporting. | | project management | PROJECT_getKeywordStats | Get keyword ranking statistics for a specified time period. | | project management | PROJECT_getSearchEngines | Get a list of search engines employed by a project. | | project management | PROJECT_getSummary | Get a project's summary statistics. | | project management | PROJECT_listKeywords | Get a list of keywords with target pages for a project. | | project management | PROJECT_listProjects | Get a list of all user projects. | | project management | PROJECT_runPositionCheck | Run a ranking position check for keywords or entire project. | | project management | PROJECT_setKeywordPosition | Manually set position for a project's keyword. | | project management | PROJECT_updateProject | Change/update project settings. | | project management | PROJECT_updateSearchEngine | Update an existing search engine in a project. | | sub-accounts | PROJECT_createSubAccount | Create a new sub-account. | | sub-accounts | PROJECT_deleteSubAccount | Delete a user sub-account. | | sub-accounts | PROJECT_getSubAccountDetails | Get extended information about a sub-account. | | sub-accounts | PROJECT_listOwnedProjects | Get website IDs that belong to a sub-account. | | sub-accounts | PROJECT_listSharedProjects | Get website IDs shared with a sub-account. | | sub-accounts | PROJECT_listSubAccounts | Get a list of all sub-accounts of the current user. | | sub-accounts | PROJECT_shareProject | Share one or more websites with a sub-account. | | sub-accounts | PROJECT_updateSubAccount | Edit sub-account settings, limits, and permissions. | | system | PROJECT_getAvailableRegions | Get the list of all available regions supported by Google. | | system | PROJECT_getAvailableSearchEngines | Get the list of all available search engines. | | system | PROJECT_getGoogleLanguages | Get a complete list of possible languages for Google search engine. | | system | PROJECT_getSearchVolume | Get search volume data for a region and keyword list (max 10 keywords). | | system | PROJECT_getVolumeRegions | Get regions where SE Ranking can run keyword search volume checks. | | url tags | PROJECT_addTag | Add a tag to the site and attach it to a link and/or domain. | | url tags | PROJECT_deleteTag | Delete a tag. | | url tags | PROJECT_listTags | Get a list of landing page tags added to domains and/or links. | | url tags | PROJECT_updateTag | Add tags to a domain and/or link, replacing previously added tags. |

Available Prompts

| Prompt Name | Arguments | Description | | :--- | :--- | :--- | | serp-analysis | keyword, location1, location2, language, device | Create two SERP tasks for the query in two locations and compare top 10 organic domains, overlap, and unique competitors. | | backlink-gap | my_domain, competitors, min_domain_trust | Fetch backlinks for competitors with a minimum Domain Trust, compare against your domain, and find opportunities. | | domain-traffic-competitors | domain | Analyze a domain's global/country organic traffic, top competitors by shared keywords, and provide strategic recommendations. | | keyword-clusters | market, seed_keywords | Pull related/similar keywords for a market, clean/deduplicate, and cluster them by intent/theme with volume and H1/H2 ideas. | | ai-share-of-voice | domain, competitors, country, llm_engines | Estimate share of voice in AI search (e.g. ChatGPT, Perplexity) vs competitors, listing winning topics and gap-closing actions. |

Usage Example: Finding Keyword Opportunities

With the configuration complete, you can now use natural language prompts to interact with your SE Ranking data. Here is an example prompt to identify low-hanging keyword opportunities for a domain.

Copy and paste the following into your configured AI assistant:

Use the seo-mcp to identify the Keywords my domain is overlooking and find low-hanging fruit opportunities.
1. Analyze my domain's keyword performance:
   - Find keywords my domain has lost (not ranking) using the tool for getDomainKeywords with pos_change=lost.
   - Find keywords where my domain's position has gone down using the tool for getDomainKeywords with pos_change=down.
2. Conduct a competitive analysis:
   - Identify my top 2 competitors by finding all competitors with the tool for getDomainCompetitors and ordering them by common_keywords DESC.
   - Find 30 keywords that these competitors are ranking for but my domain is not. Use the getDomainKeywordsComparison tool with diff=1, order_field=volume, and order_type=DESC.
3. Identify new keyword opportunities:
   - For 10 of the competitor keywords found in the previous step, use the tools for getRelatedKeywords and getSimilarKeywords to find the top 5 related and similar keywords for each, ordered by volume DESC.
4. Synthesize and Report:
   - Create a final report of the findings. In the report, highlight potential low-hanging fruit from the new keyword opportunities by analyzing their CPC and keyword difficulty.
Domain to review: seranking.com
Market: us

What This Prompt Does

This prompt instructs the model to perform a comprehensive competitive analysis by:

  • Finding Lost & Declining Keywords: It first identifies keywords for seranking.com that have either been lost from the rankings or have dropped in position.
  • Identifying Top Competitors: It finds all organic competitors and sorts them to identify the top two based on the number of shared keywords.
  • Uncovering Competitor-Ranked Keywords: It compares seranking.com against its top competitors to find 30 high-volume keywords that they rank for, but seranking.com does not.
  • Generating a Final Report: Finally, it synthesizes all of this information into a concise report, highlighting the most promising opportunities for growth.

Troubleshooting

Docker image problems

If you’re having trouble getting the MCP server to connect, here are a few steps to diagnose the issue.

Verifying if the Docker container is running when you run your AI Assistant (Claude or Gemini). If you start a chat with an AI, and your MCP Server is set up properly via JSON config, it should automatically start the Docker container.

To check if it’s running, open your terminal and run:

docker ps

If it’s working correctly, you will see an output similar to this:

CONTAINER ID   IMAGE                                    COMMAND                  CREATED          STATUS          PORTS     NAMES
de4e410ef0fd   se-ranking/seo-data-api-mcp-server       "docker-entrypoint.s…"   9 seconds ago    Up 8 seconds              musing_bhabha

This confirms that your AI assistant has successfully started the container, and it’s listening for connections.

If docker ps shows no running containers related to the MCP server, it usually points to a configuration issue:

  • Incorrect/invalid JSON: Double-check the claude_desktop_config.json or settings.json for any syntax errors like missing commas or brackets. You can validate the JSON here: https://jsonlint.com/.

  • Incorrect image name: Double-check the claude_desktop_config.json or settings.json for the correct image name se-ranking/seo-data-api-mcp-server

Docker image running, but MCP server is not visible in Claude Desktop / Gemini CLI

If the docker image is running, but the MCP server is not visible in Claude Desktop, you can investigate the container by:

docker inspect <container-id>

For the following example, the container ID is de4e410ef0fd:

CONTAINER ID   IMAGE                                    COMMAND                  CREATED          STATUS          PORTS     NAMES
de4e410ef0fd   se-ranking/seo-data-api-mcp-server       "docker-entrypoint.s…"   9 seconds ago    Up 8 seconds              musing_bhabha

Note: you can shorten the container ID in case no other containers share that prefix, ex. docker inspect de4. When you're running multiple AI chats and/or tools connected to the MCP Servers, there can be multiple containers running, but all with the same IMAGE name.

This will show you the big JSON output, where particularly important is the "Config" section, ex.:

{
  "Config": {
    "Hostname": "0977c3dc06fb",
    "Domainname": "",
    "User": "",
    "AttachStdin": true,
    "AttachStdout": true,
    "AttachStderr": true,
    "Tty": false,
    "OpenStdin": true,
    "StdinOnce": true,
    "Env": [
      "DATA_API_TOKEN=80cfee7d-xxxx-xxxx-xxxx-fc8500816bb3",
      "PROJECT_API_TOKEN=253a73adxxxxxxxxxxxxxx340aa0a939",
      "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
      "NODE_VERSION=20.19.5",
      "YARN_VERSION=1.22.22",
      "NODE_ENV=production"
    ]
  }
}

Which shows you if you have the correct environment variables set.

Contributing

Prerequisites

  • Node.js 20+
  • npm

Running Tests

# Run all tests (compiles TypeScript first)
npm test

# Run only E2E tests
npm run test:e2e

# Run tests in watch mode
npm run test:watch

Environment Variables for Testing

Create a .env file in the project root with the following variables:

| Variable | Required | Description | |----------|----------|-------------| | DATA_API_TOKEN | Yes | API token for Data API tools | | PROJECT_API_TOKEN | Yes | API token for Project API tools | | E2E_ENABLED | No | Set to true to enable E2E tests | | GEMINI_E2E_ENABLED | No | Set to true to enable Gemini assistant tests |

E2E Tests

E2E tests make real API calls to SE Ranking services. They are disabled by default to avoid unnecessary API usage during development.

  • When E2E_ENABLED=false or unset, E2E tests are skipped
  • Set E2E_ENABLED=true to run the full test suite with live API calls
  • Ensure you have valid API tokens before enabling E2E tests

Other Development Commands

# Lint code
npm run lint
npm run lint:fix

# Format code
npm run format
npm run format:check

# Type check
npm run typecheck

Support

SE Ranking API documentation: https://seranking.com/api/integrations/mcp/.

In case you have any questions or need help, please contact us at api@seranking.com

Contract & API

Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.

Verifiedcapability-contract

Contract coverage

Status

ready

Auth

mcp, api_key

Streaming

No

Data region

global

Protocol support

MCP: verified

Requires: mcp, lang:typescript

Forbidden: none

Guardrails

Operational confidence: medium

Contract is available with explicit auth and schema references.
Trust confidence is not low and verification freshness is acceptable.
Protocol support is explicitly confirmed in contract metadata.
Invocation examples
curl -s "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/snapshot"
curl -s "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/contract"
curl -s "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/trust"

Reliability & Benchmarks

Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.

Missingruntime-metrics

Trust signals

Handshake

UNKNOWN

Confidence

unknown

Attempts 30d

unknown

Fallback rate

unknown

Runtime metrics

Observed P50

unknown

Observed P95

unknown

Rate limit

unknown

Estimated cost

unknown

No benchmark suites or observed failure patterns are available.

Media & Demo

Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.

Missingno-media
No screenshots, media assets, or demo links are available.

Related Agents

Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.

Self-declaredprotocol-neighbors
GITLAB_AI_CATALOGgitlab-mcp

Rank

83

A Model Context Protocol (MCP) server for GitLab

Traction

No public download signal

Freshness

Updated 2d ago

MCP
GITLAB_PUBLIC_PROJECTSgitlab-mcp

Rank

80

A Model Context Protocol (MCP) server for GitLab

Traction

No public download signal

Freshness

Updated 2d ago

MCP
GITLAB_AI_CATALOGrmcp-openapi

Rank

74

Expose OpenAPI definition endpoints as MCP tools using the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)

Traction

No public download signal

Freshness

Updated 2d ago

MCP
GITLAB_AI_CATALOGrmcp-actix-web

Rank

72

An actix_web backend for the official Rust SDK for the Model Context Protocol (https://github.com/modelcontextprotocol/rust-sdk)

Traction

No public download signal

Freshness

Updated 2d ago

MCP
Machine Appendix

Contract JSON

{
  "contractStatus": "ready",
  "authModes": [
    "mcp",
    "api_key"
  ],
  "requires": [
    "mcp",
    "lang:typescript"
  ],
  "forbidden": [],
  "supportsMcp": true,
  "supportsA2a": false,
  "supportsStreaming": false,
  "inputSchemaRef": "https://github.com/seranking/seo-data-api-mcp-server#input",
  "outputSchemaRef": "https://github.com/seranking/seo-data-api-mcp-server#output",
  "dataRegion": "global",
  "contractUpdatedAt": "2026-02-24T19:46:15.502Z",
  "sourceUpdatedAt": "2026-02-24T19:46:15.502Z",
  "freshnessSeconds": 4438922
}

Invocation Guide

{
  "preferredApi": {
    "snapshotUrl": "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/snapshot",
    "contractUrl": "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/contract",
    "trustUrl": "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/trust"
  },
  "curlExamples": [
    "curl -s \"https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/snapshot\"",
    "curl -s \"https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/contract\"",
    "curl -s \"https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "MCP"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "GITHUB_MCP",
      "generatedAt": "2026-04-17T04:48:17.738Z"
    }
  },
  "retryPolicy": {
    "maxAttempts": 3,
    "backoffMs": [
      500,
      1500,
      3500
    ],
    "retryableConditions": [
      "HTTP_429",
      "HTTP_503",
      "NETWORK_TIMEOUT"
    ]
  }
}

Trust JSON

{
  "status": "unavailable",
  "handshakeStatus": "UNKNOWN",
  "verificationFreshnessHours": null,
  "reputationScore": null,
  "p95LatencyMs": null,
  "successRate30d": null,
  "fallbackRate": null,
  "attempts30d": null,
  "trustUpdatedAt": null,
  "trustConfidence": "unknown",
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Capability Matrix

{
  "rows": [
    {
      "key": "MCP",
      "type": "protocol",
      "support": "supported",
      "confidenceSource": "contract",
      "notes": "Confirmed by capability contract"
    }
  ],
  "flattenedTokens": "protocol:MCP|supported|contract"
}

Facts JSON

[
  {
    "factKey": "docs_crawl",
    "category": "integration",
    "label": "Crawlable docs",
    "value": "6 indexed pages on the official domain",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  },
  {
    "factKey": "protocols",
    "category": "compatibility",
    "label": "Protocol compatibility",
    "value": "MCP",
    "href": "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/contract",
    "sourceUrl": "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/contract",
    "sourceType": "contract",
    "confidence": "high",
    "observedAt": "2026-02-24T19:46:15.502Z",
    "isPublic": true
  },
  {
    "factKey": "auth_modes",
    "category": "compatibility",
    "label": "Auth modes",
    "value": "mcp, api_key",
    "href": "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/contract",
    "sourceUrl": "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/contract",
    "sourceType": "contract",
    "confidence": "high",
    "observedAt": "2026-02-24T19:46:15.502Z",
    "isPublic": true
  },
  {
    "factKey": "schema_refs",
    "category": "artifact",
    "label": "Machine-readable schemas",
    "value": "OpenAPI or schema references published",
    "href": "https://github.com/seranking/seo-data-api-mcp-server#input",
    "sourceUrl": "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/contract",
    "sourceType": "contract",
    "confidence": "high",
    "observedAt": "2026-02-24T19:46:15.502Z",
    "isPublic": true
  },
  {
    "factKey": "vendor",
    "category": "vendor",
    "label": "Vendor",
    "value": "Seranking",
    "href": "https://github.com/seranking/seo-data-api-mcp-server",
    "sourceUrl": "https://github.com/seranking/seo-data-api-mcp-server",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-02-24T19:43:14.176Z",
    "isPublic": true
  },
  {
    "factKey": "traction",
    "category": "adoption",
    "label": "Adoption signal",
    "value": "6 GitHub stars",
    "href": "https://github.com/seranking/seo-data-api-mcp-server",
    "sourceUrl": "https://github.com/seranking/seo-data-api-mcp-server",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-02-24T19:43:14.176Z",
    "isPublic": true
  },
  {
    "factKey": "handshake_status",
    "category": "security",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "href": "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/trust",
    "sourceUrl": "https://xpersona.co/api/v1/agents/mcp-seranking-seo-data-api-mcp-server/trust",
    "sourceType": "trust",
    "confidence": "medium",
    "observedAt": null,
    "isPublic": true
  }
]

Change Events JSON

[
  {
    "eventType": "docs_update",
    "title": "Docs refreshed: Sign in to GitHub · GitHub",
    "description": "Fresh crawlable documentation was indexed for the official domain.",
    "href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
    "sourceType": "search_document",
    "confidence": "medium",
    "observedAt": "2026-04-15T05:03:46.393Z",
    "isPublic": true
  }
]

Sponsored

Ads related to ser-data-api-mcp-server and adjacent AI workflows.