UNPKG

serpstat-rank-tracker

Version:

Serpstat Rank Tracker API MCP Server

211 lines (162 loc) 5.59 kB
# Serpstat Rank Tracker MCP Server A Model Context Protocol (MCP) server for the Serpstat Rank Tracker API, providing comprehensive keyword ranking tracking, competitor analysis, and SERP history data. ## Features This MCP server provides 6 tools for rank tracking and SEO analysis: ### Project Management - **getProjects**: Retrieve all your rank tracker projects with metadata - **getProjectStatus**: Check parsing status for project/region combinations - **getProjectRegions**: Get configured regions for your projects ### SERP Analysis - **getKeywordsSerpResultsHistory**: Get Google top-100 results for your keywords over time - **getUrlsSerpResultsHistory**: Track ranking history for specific URLs and pages - **getTopCompetitorsDomainsHistory**: Analyze competitor domains in top-20 positions ## Installation ```bash npm install ``` ## Usage ### MCP Configuration Add to your MCP client configuration: ```json { "mcpServers": { "serpstat-rank-tracker": { "command": "node", "args": ["/path/to/serpstat-rank-tracker/build/index.js"], "env": { "SERPSTAT_TOKEN": "your-api-token" } } } } ``` ### Environment Variables - `SERPSTAT_TOKEN`: Your Serpstat API token (required) ### Building ```bash npm run build ``` ### Running ```bash npm start ``` ## API Methods ### getProjects Get a list of your rank tracker projects. **Parameters:** - `page` (optional): Page number (default: 1) - `pageSize` (optional): Results per page - 20, 50, 100, 500 (default: 100) **Returns:** Project list with ID, name, domain, creation date, status, and tracking settings. ### getProjectStatus Check if position data is ready for a project/region. **Parameters:** - `projectId` (required): Project ID - `regionId` (required): Region ID **Returns:** Parsing status - wait if `true` (parsing), proceed if `false` (ready). ### getProjectRegions Get all configured regions for a project. **Parameters:** - `projectId` (required): Project ID **Returns:** Array of regions with device types, search engines, and status. ### getKeywordsSerpResultsHistory Get historical SERP data for your keywords. **Parameters:** - `projectId` (required): Project ID - `projectRegionId` (required): Region ID - `page` (required): Page number - `pageSize` (optional): Results per page (default: 100) - `dateFrom` (optional): Start date (YYYY-MM-DD) - `dateTo` (optional): End date (YYYY-MM-DD) - `sort` (optional): Sort by 'keyword' or 'date' (default: keyword) - `order` (optional): 'asc' or 'desc' (default: desc) - `keywords` (optional): Filter by specific keywords (max 1000) - `withTags` (optional): Include keyword tags (default: false) **Returns:** Keyword ranking history with positions, URLs, and tags. ### getUrlsSerpResultsHistory Get ranking history for specific URLs. **Parameters:** - Same as getKeywordsSerpResultsHistory, plus: - `domain` (optional): Filter by specific domain or URL **Returns:** URL ranking history with position data for specified keywords. ### getTopCompetitorsDomainsHistory Analyze competitor performance in top-20 positions. **Parameters:** - `projectId` (required): Project ID - `projectRegionId` (required): Region ID - `page` (required): Page number - `pageSize` (required): Results per page (20-500) - `dateFrom` (required): Start date (YYYY-MM-DD) - `dateTo` (required): End date (YYYY-MM-DD) - `sort` (optional): Sort by traffic, keywords, position, etc. (default: sum_traffic) - `sortRange` (optional): Detailed sort range - `order` (optional): 'asc' or 'desc' (default: desc) - `domains` (required): Array of competitor domains to analyze **Returns:** Competitor ranking history with traffic distribution and position data. ## API Credits All methods in this API **do not consume API credits**, making them ideal for frequent monitoring and analysis. ## Region IDs Region IDs can be found in the [Serpstat regions reference](https://docs.google.com/spreadsheets/d/1LUDtm-L1qWMVpmWuN-nvDyYFfQtfiXUh5LIHE8sjs0k/edit?gid=75443986#gid=75443986). ## Parameter Notes - **`regionId`**: Used for basic project operations like checking status and getting regions - **`projectRegionId`**: Used for data retrieval operations like getting SERP history and competitor analysis - Both parameters refer to the same region ID values, but are used in different API contexts ## Examples ### Get Project List ```json { "name": "getProjects", "arguments": { "page": 1, "pageSize": 50 } } ``` ### Check Project Status ```json { "name": "getProjectStatus", "arguments": { "projectId": 123456, "regionId": 389715 } } ``` ### Get Keyword Rankings ```json { "name": "getKeywordsSerpResultsHistory", "arguments": { "projectId": 123456, "projectRegionId": 389715, "page": 1, "dateFrom": "2025-01-01", "dateTo": "2025-01-31", "keywords": ["seo tools", "keyword research"] } } ``` ### Analyze Competitors ```json { "name": "getTopCompetitorsDomainsHistory", "arguments": { "projectId": 123456, "projectRegionId": 389715, "page": 1, "pageSize": 20, "dateFrom": "2025-01-01", "dateTo": "2025-01-31", "domains": ["competitor1.com", "competitor2.com"] } } ``` ## Technical Details - Built with TypeScript and Zod for type safety - Uses Model Context Protocol (MCP) for AI assistant integration - Follows JSON-RPC 2.0 protocol for Serpstat API communication - Comprehensive input validation with detailed error messages - Supports pagination, filtering, and sorting across all methods ## Author Benjamin Oldenburg ## License MIT