MCP Hub
Back to servers

SE Ranking MCP Server

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.

Updated
Feb 22, 2026

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:

TokenEnvironment VariableFormatPurpose
Data APIDATA_API_TOKENUUID (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 APIPROJECT_API_TOKEN40-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

APIDefault Rate Limit
Data API10 requests per second
Project API5 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

JSON Configuration Template:

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

ModuleTool NameDescription
SERPDATA_getSerpHtmlDumpRetrieves the raw HTML dump of a completed SERP task as a ZIP file.
SERPDATA_getSerpLocationsRetrieves a list of available locations for SERP analysis.
SERPDATA_getSerpResultsRuns 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).
SERPDATA_getSerpTaskAdvancedResultsRetrieves the status or advanced results of a specific SERP task.
SERPDATA_getSerpTaskResultsRetrieves the status or standard results of a specific SERP task. Returns organic, ads, and featured_snippet types only.
SERPDATA_getSerpTasksRetrieves a list of all SERP tasks added to the queue in the last 24 hours.
ai searchDATA_getAiDiscoverBrandIdentifies and returns the brand name associated with a given target domain, subdomain, or URL.
ai searchDATA_getAiOverviewRetrieves a high-level overview of a domain's performance in AI search engines.
ai searchDATA_getAiPromptsByBrandRetrieves a list of prompts where the specified brand is mentioned in AI search results.
ai searchDATA_getAiPromptsByTargetRetrieves a list of prompts (queries) that mention the specified target in AI search results.
backlinksDATA_exportBacklinksDataRetrieves large-scale backlinks asynchronously, returning a task ID to check status later.
backlinksDATA_getAllBacklinksRetrieves a comprehensive list of backlinks for the specified target, with extensive filtering and sorting options.
backlinksDATA_getBacklinksAnchorsRetrieves a list of anchor texts for backlinks pointing to the specified target.
backlinksDATA_getBacklinksAuthorityFetch authority metrics for a target (domain, host or URL).
backlinksDATA_getBacklinksCountReturns the total number of backlinks for the target. Supports batch requests.
backlinksDATA_getBacklinksExportStatusChecks the status of an asynchronous backlinks export task. Returns download URL when complete.
backlinksDATA_getBacklinksIndexedPagesFetch site pages that have backlinks, with sorting and limit controls.
backlinksDATA_getBacklinksMetricsReturns key statistics for a target (backlinks count, referring domains, etc.). Supports batch requests.
backlinksDATA_getBacklinksRawReturns all backlinks pointing to a target using cursor-based pagination for large datasets.
backlinksDATA_getBacklinksRefDomainsRetrieves a list of referring domains pointing to the specified target.
backlinksDATA_getBacklinksSummaryRetrieves a summary of backlink metrics for one or multiple targets.
backlinksDATA_getCumulativeBacklinksHistoryReturns live backlinks count for every day within the specified date range.
backlinksDATA_getDistributionOfDomainAuthorityReturns distribution of Domain InLink Rank of all domains referencing a target.
backlinksDATA_getDomainAuthorityReturns the domain InLink Rank (Domain Authority) of the target page's root domain.
backlinksDATA_getNewLostBacklinksCountReturns count of (newly) found or lost backlinks for every day in the date range.
backlinksDATA_getNewLostRefDomainsCountReturns count of referring domains found or lost in the date range, by day.
backlinksDATA_getPageAuthorityReturns the InLink Rank (Page Authority) for a target URL.
backlinksDATA_getPageAuthorityHistoryReturns historical values of InLink Rank for a specific target page.
backlinksDATA_getReferringIpsReturns IPv4 addresses that belong to backlinks pointing to a target.
backlinksDATA_getReferringIpsCountReturns the number of unique IPs linking to a target.
backlinksDATA_getReferringSubnetsCountReturns the number of unique subnets/C-blocks linking to a target.
backlinksDATA_getTotalRefDomainsCountReturns the number of unique domains linking to a target. Supports batch requests.
backlinksDATA_listNewLostBacklinksReturns a list of backlinks found or lost within the specified date range.
backlinksDATA_listNewLostReferringDomainsReturns referring domains found or lost in the specified date range.
domain analysisDATA_getDomainAdsByDomainRetrieves paid ads for a specific domain.
domain analysisDATA_getDomainAdsByKeywordRetrieves paid ads for a specific keyword.
domain analysisDATA_getDomainCompetitorsRetrieves a list of organic or paid competitors for a domain.
domain analysisDATA_getDomainKeywordsRetrieves keywords for which a domain ranks in organic or paid search.
domain analysisDATA_getDomainKeywordsComparisonCompares keyword rankings of two websites. Find common keywords or keyword gaps.
domain analysisDATA_getDomainOverviewDatabasesFetch domain overview by database.
domain analysisDATA_getDomainOverviewHistoryRetrieves historical data for domain traffic and keyword rankings.
domain analysisDATA_getDomainOverviewWorldwideRetrieves an aggregated worldwide overview of domain metrics.
domain analysisDATA_getDomainPagesRetrieves a list of individual pages ranking within a specified domain.
domain analysisDATA_getDomainSubdomainsRetrieves a list of subdomains for a domain with search performance metrics.
domain analysisDATA_getUrlOverviewWorldwideRetrieves worldwide overview of organic and paid traffic metrics for a specific URL.
keyword researchDATA_exportKeywordsRetrieves metrics for a bulk list of keywords.
keyword researchDATA_getKeywordQuestionsRetrieves question-based keywords containing the seed keyword.
keyword researchDATA_getLongTailKeywordsRetrieves long-tail variations for the seed keyword.
keyword researchDATA_getRelatedKeywordsRetrieves keywords semantically related to the seed keyword.
keyword researchDATA_getSimilarKeywordsRetrieves keywords similar to the seed keyword.
website auditDATA_createAdvancedAuditLaunches an advanced website audit that renders JavaScript. Suitable for SPAs.
website auditDATA_createStandardAuditLaunches a standard website audit that crawls HTML. Suitable for static sites.
website auditDATA_deleteAuditPermanently deletes a website audit report and all associated data.
website auditDATA_getAuditHistoryRetrieves a historical snapshot of a specific audit run.
website auditDATA_getAuditPagesByIssueRetrieves URLs affected by a specific issue within an audit.
website auditDATA_getAuditReportRetrieves the full detailed report for a completed website audit.
website auditDATA_getAuditStatusChecks the real-time status of a specific website audit.
website auditDATA_getCrawledPagesReturns all URLs found during an audit.
website auditDATA_getFoundLinksReturns every hyperlink discovered during the audit.
website auditDATA_getIssuesByUrlRetrieves all issues found on a specific page within an audit.
website auditDATA_listAuditsRetrieves all website audits associated with your account.
website auditDATA_recheckAuditLaunches a new crawl of a previously completed audit.
website auditDATA_updateAuditTitleChanges the title of an existing website audit report.

Project API Tools

ModuleTool NameDescription
accountPROJECT_getAccountBalanceGet the current account balance including currency and currency code.
accountPROJECT_getSubscriptionGet information about the current user subscription.
accountPROJECT_getUserProfileGet information about the currently logged in user.
analyticsPROJECT_getGoogleSearchConsoleGet popular queries from Google Search Console for a website.
analyticsPROJECT_getSeoPotentialAssess potential traffic volume, traffic cost, and potential customers for a website.
backlink checkerPROJECT_addDisavowedBacklinksAdd a list of URLs to the disavowed backlinks list.
backlink checkerPROJECT_addProjectBacklinkAdd a single backlink to the backlink monitor for a website.
backlink checkerPROJECT_createBacklinkGroupCreate a new group for organizing backlinks.
backlink checkerPROJECT_deleteBacklinkGroupDelete a backlink group.
backlink checkerPROJECT_deleteDisavowedBacklinkRemove a backlink from the disavowed backlinks list.
backlink checkerPROJECT_deleteProjectBacklinksDelete a list of backlinks from the backlink monitor.
backlink checkerPROJECT_getBacklinkGscImportStatusGet the status of a backlink import from Google Search Console.
backlink checkerPROJECT_getBacklinkStatsGet backlink statistics for a website.
backlink checkerPROJECT_importProjectBacklinksImport a list of backlinks to the backlink monitor.
backlink checkerPROJECT_listBacklinkGroupsGet a list and count of backlink groups for a website.
backlink checkerPROJECT_listDisavowedBacklinksGet a list and count of disavowed backlinks for a website.
backlink checkerPROJECT_listProjectBacklinksGet a list of backlinks from the backlink monitor.
backlink checkerPROJECT_moveBacklinksToGroupMove backlinks from one group to another.
backlink checkerPROJECT_recheckProjectBacklinksRun an index or status check for a list of backlinks.
backlink checkerPROJECT_renameBacklinkGroupChange the name of a backlink group.
backlink checkerPROJECT_runBacklinkGscImportStart a backlink import from Google Search Console.
backlink checkerPROJECT_updateBacklinkImportSettingsUpdate settings for automatic backlink import from GSC.
competitorsPROJECT_addCompetitorAdd a competitor website to a project for position tracking.
competitorsPROJECT_deleteCompetitorRemove a competitor website from a project.
competitorsPROJECT_getAllCompetitorsMetricsGet data on sites ranked in TOP 10 for tracked queries (14-day history).
competitorsPROJECT_getCompetitorPositionsGet statistics on competitor keyword positions.
competitorsPROJECT_getCompetitorTop10Get TOP 10 results for tracked keywords in a project.
competitorsPROJECT_getCompetitorTop100Get top 100 results for tracked keywords in a project.
competitorsPROJECT_listCompetitorsGet a list of all competitors added to a project with statistics.
keyword groupsPROJECT_createKeywordGroupAdd a group for project keywords.
keyword groupsPROJECT_deleteKeywordGroupDelete a project keyword group.
keyword groupsPROJECT_listKeywordGroupsGet a list of keyword groups for a project.
keyword groupsPROJECT_moveKeywordsToGroupTransfer project keywords from one group to another.
keyword groupsPROJECT_updateKeywordGroupUpdate the name of a project keyword group.
marketing planPROJECT_addPlanTaskAdd a new task to the marketing plan for a website.
marketing planPROJECT_deletePlanTaskDelete a task from the marketing plan.
marketing planPROJECT_listPlanItemsGet all marketing plan sections, items, and notes for a website.
marketing planPROJECT_setPlanTaskStatusSet the completion status of a marketing plan task.
marketing planPROJECT_updatePlanTaskUpdate an existing marketing plan task.
project groupsPROJECT_createProjectGroupAdd a new project group to a user account.
project groupsPROJECT_deleteProjectGroupDelete a project group.
project groupsPROJECT_listProjectGroupsGet a list of all project groups from a user account.
project groupsPROJECT_moveProjectsToGroupTransfer projects from one group to another.
project groupsPROJECT_updateProjectGroupRename a project group.
project managementPROJECT_addKeywordsAdd new keywords to a project.
project managementPROJECT_addSearchEngineAdd a new search engine to a project.
project managementPROJECT_createProjectAdd a new project to the user account.
project managementPROJECT_deleteKeywordsDelete keywords from a project.
project managementPROJECT_deleteProjectDelete a project from the user account.
project managementPROJECT_deleteSearchEngineDelete a search engine from a project.
project managementPROJECT_getAdsStatsGet total number of top and bottom advertisements by day.
project managementPROJECT_getHistoricalDatesReturns standard comparison dates available for reporting.
project managementPROJECT_getKeywordStatsGet keyword ranking statistics for a specified time period.
project managementPROJECT_getSearchEnginesGet a list of search engines employed by a project.
project managementPROJECT_getSummaryGet a project's summary statistics.
project managementPROJECT_listKeywordsGet a list of keywords with target pages for a project.
project managementPROJECT_listProjectsGet a list of all user projects.
project managementPROJECT_runPositionCheckRun a ranking position check for keywords or entire project.
project managementPROJECT_setKeywordPositionManually set position for a project's keyword.
project managementPROJECT_updateProjectChange/update project settings.
project managementPROJECT_updateSearchEngineUpdate an existing search engine in a project.
sub-accountsPROJECT_createSubAccountCreate a new sub-account.
sub-accountsPROJECT_deleteSubAccountDelete a user sub-account.
sub-accountsPROJECT_getSubAccountDetailsGet extended information about a sub-account.
sub-accountsPROJECT_listOwnedProjectsGet website IDs that belong to a sub-account.
sub-accountsPROJECT_listSharedProjectsGet website IDs shared with a sub-account.
sub-accountsPROJECT_listSubAccountsGet a list of all sub-accounts of the current user.
sub-accountsPROJECT_shareProjectShare one or more websites with a sub-account.
sub-accountsPROJECT_updateSubAccountEdit sub-account settings, limits, and permissions.
systemPROJECT_getAvailableRegionsGet the list of all available regions supported by Google.
systemPROJECT_getAvailableSearchEnginesGet the list of all available search engines.
systemPROJECT_getGoogleLanguagesGet a complete list of possible languages for Google search engine.
systemPROJECT_getSearchVolumeGet search volume data for a region and keyword list (max 10 keywords).
systemPROJECT_getVolumeRegionsGet regions where SE Ranking can run keyword search volume checks.
url tagsPROJECT_addTagAdd a tag to the site and attach it to a link and/or domain.
url tagsPROJECT_deleteTagDelete a tag.
url tagsPROJECT_listTagsGet a list of landing page tags added to domains and/or links.
url tagsPROJECT_updateTagAdd tags to a domain and/or link, replacing previously added tags.

Available Prompts

Prompt NameArgumentsDescription
serp-analysiskeyword, location1, location2, language, deviceCreate two SERP tasks for the query in two locations and compare top 10 organic domains, overlap, and unique competitors.
backlink-gapmy_domain, competitors, min_domain_trustFetch backlinks for competitors with a minimum Domain Trust, compare against your domain, and find opportunities.
domain-traffic-competitorsdomainAnalyze a domain's global/country organic traffic, top competitors by shared keywords, and provide strategic recommendations.
keyword-clustersmarket, seed_keywordsPull related/similar keywords for a market, clean/deduplicate, and cluster them by intent/theme with volume and H1/H2 ideas.
ai-share-of-voicedomain, competitors, country, llm_enginesEstimate 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:

VariableRequiredDescription
DATA_API_TOKENYesAPI token for Data API tools
PROJECT_API_TOKENYesAPI token for Project API tools
E2E_ENABLEDNoSet to true to enable E2E tests
GEMINI_E2E_ENABLEDNoSet 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

Reviews

No reviews yet

Sign in to write a review