@serpstat/serpstat-mcp-server 1.0.7 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/README.md +77 -27
- package/dist/handlers/credits_tools.d.ts +19 -0
- package/dist/handlers/credits_tools.d.ts.map +1 -0
- package/dist/handlers/credits_tools.js +79 -0
- package/dist/handlers/credits_tools.js.map +1 -0
- package/dist/handlers/project_tools.d.ts +27 -0
- package/dist/handlers/project_tools.d.ts.map +1 -0
- package/dist/handlers/project_tools.js +167 -0
- package/dist/handlers/project_tools.js.map +1 -0
- package/dist/handlers/rank_tracking_tools.d.ts +43 -0
- package/dist/handlers/rank_tracking_tools.d.ts.map +1 -0
- package/dist/handlers/rank_tracking_tools.js +335 -0
- package/dist/handlers/rank_tracking_tools.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +14 -1
- package/dist/server.js.map +1 -1
- package/dist/services/credits_service.d.ts +7 -0
- package/dist/services/credits_service.d.ts.map +1 -0
- package/dist/services/credits_service.js +45 -0
- package/dist/services/credits_service.js.map +1 -0
- package/dist/services/project_service.d.ts +9 -0
- package/dist/services/project_service.d.ts.map +1 -0
- package/dist/services/project_service.js +59 -0
- package/dist/services/project_service.js.map +1 -0
- package/dist/services/rank_tracking_service.d.ts +11 -0
- package/dist/services/rank_tracking_service.d.ts.map +1 -0
- package/dist/services/rank_tracking_service.js +112 -0
- package/dist/services/rank_tracking_service.js.map +1 -0
- package/dist/types/serpstat.d.ts +142 -0
- package/dist/types/serpstat.d.ts.map +1 -1
- package/dist/utils/constants.d.ts +12 -0
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +13 -1
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/validation.d.ts +150 -0
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +86 -1
- package/dist/utils/validation.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
|
+
|
|
3
|
+
## [1.0.8] - 2025-09-30
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **Rank Tracking Tools**: Added five new methods for rank tracker project management and SERP analysis
|
|
8
|
+
- `get_rt_projects_list` - Get list of rank tracker projects with ID, name, domain, creation date, and tracking status (does not consume API credits)
|
|
9
|
+
- `get_rt_project_status` - Check if rank tracker project is currently parsing positions; returns true if processing, false if ready for data retrieval (does not consume API credits)
|
|
10
|
+
- `get_rt_project_regions_list` - Get list of regions configured for a rank tracker project, including region ID, status (active/inactive), SERP type (organic/paid), device type (desktop/mobile), search engine, and location details (does not consume API credits)
|
|
11
|
+
- `get_rt_project_keyword_serp_history` - Get Google's top-100 search results history for rank tracker project keywords in a specific region, returning historical position data, URLs, search frequency, and optional keyword tags (does not consume API credits)
|
|
12
|
+
- `get_rt_project_url_serp_history` - Get ranking history of URLs for rank tracker project keywords in a specific region, returning historical position data for URLs ranking in search results, including search frequency and optional keyword tags (does not consume API credits)
|
|
13
|
+
- **Project Management Tools**: Added three new methods for managing Serpstat projects
|
|
14
|
+
- `create_project` - Create a new project in Serpstat for tracking SEO metrics and site audits
|
|
15
|
+
- `delete_project` - Delete an existing project from Serpstat by project ID
|
|
16
|
+
- `list_projects` - Retrieve a list of projects associated with the account with pagination support
|
|
17
|
+
- **Credits & Usage Monitoring Tools**: Added two new methods for monitoring API and audit credits
|
|
18
|
+
- `get_credits_for_audit_stats` - Check available audit credits including one-page audit, JavaScript scanning, and crawl limits (does not consume API credits)
|
|
19
|
+
- `get_credits_stats` - Check API credits usage, account information, and browser plugin limits for monitoring API usage (does not consume API credits)
|
|
20
|
+
- Added comprehensive validation schemas and TypeScript types for project management, credits, and rank tracking operations
|
|
21
|
+
- Added test coverage for all project management, credits, and rank tracking methods
|
|
22
|
+
- Updated documentation with project management, credits, and rank tracking usage examples
|
|
23
|
+
|
|
2
24
|
## [1.0.7] - 2025-09-30
|
|
3
25
|
|
|
4
26
|
### Fixed
|
package/README.md
CHANGED
|
@@ -140,35 +140,85 @@ After installation and configuration in Claude Desktop, you can ask Claude:
|
|
|
140
140
|
- "Get backlinks intersection for **domain.com** vs **competitor1.com** and **competitor2.com** showing shared referring domains"
|
|
141
141
|
- "Get threat backlinks for **domain.com** showing malicious links from sites flagged for security threats"
|
|
142
142
|
|
|
143
|
+
### Project Management
|
|
144
|
+
- "Create a new project for **example.com** named **My SEO Project**"
|
|
145
|
+
- "List all my projects with pagination"
|
|
146
|
+
- "Delete project with ID **1234567**"
|
|
147
|
+
|
|
148
|
+
### Credits & Usage Monitoring
|
|
149
|
+
- "Show me my audit credits statistics"
|
|
150
|
+
- "Check my API credits usage and remaining quota"
|
|
151
|
+
|
|
152
|
+
### Rank Tracking
|
|
153
|
+
- "List all my rank tracker projects"
|
|
154
|
+
- "Check parsing status for project **12345** in region **2840**"
|
|
155
|
+
|
|
143
156
|
## MCP Tools
|
|
144
157
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
|
148
|
-
|
|
149
|
-
|
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
|
159
|
-
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
|
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
|
|
|
166
|
-
|
|
|
167
|
-
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
|
158
|
+
### Domain Analysis Tools
|
|
159
|
+
|
|
160
|
+
| Tool Name | Description | Key Parameters |
|
|
161
|
+
|--------------------------|--------------------------------------------------------------------------|--------------------------|
|
|
162
|
+
| get_domains_info | Get SEO information for multiple domains | domains, se, filters |
|
|
163
|
+
| get_domain_competitors | Get list of competitor domains | domain, se, size, filters|
|
|
164
|
+
| get_domain_keywords | Get keywords that domain ranks for | domain, se, page, size |
|
|
165
|
+
| get_domain_urls | Get URLs within a domain and their keyword counts | domain, se, page, size |
|
|
166
|
+
| get_domain_regions_count | Get keyword count by region for a domain | domain, sort, order |
|
|
167
|
+
| get_domain_uniq_keywords | Get unique keywords for two domains not ranked by a third domain | se, domains, minusDomain |
|
|
168
|
+
|
|
169
|
+
### Keyword Research Tools
|
|
170
|
+
|
|
171
|
+
| Tool Name | Description | Key Parameters |
|
|
172
|
+
|-------------------------|--------------------------------------------------------------------------------------------------|----------------------------|
|
|
173
|
+
| get_keywords | Get related organic keywords for a given keyword | keyword, se, filters |
|
|
174
|
+
| get_related_keywords | Get semantically related keywords with frequency, CPC, competition, and difficulty data | keyword, se, filters, sort |
|
|
175
|
+
| get_keyword_suggestions | Get search suggestions for a keyword using full-text search with geographic names info | keyword, se, filters |
|
|
176
|
+
| get_keywords_info | Get keyword overview with volume, CPC, competition, difficulty, and SERP features | keywords, se, withIntents |
|
|
177
|
+
| get_keyword_full_top | Get Google's top-100 search results for analyzed keywords | keyword, se, size |
|
|
178
|
+
| get_keyword_top_urls | Get website pages that rank for the largest amount of analyzed keyword variations | keyword, se, page, page_size|
|
|
179
|
+
| get_keyword_competitors | Get domains that rank for the given keyword in Google top-20 results with competitor analysis | keyword, se, filters, sort |
|
|
180
|
+
| get_keyword_top | Get Google's top-100 search results for the analyzed keyword with position, URL, and SERP features| keyword, se, filters, size |
|
|
181
|
+
|
|
182
|
+
### Backlinks Analysis Tools
|
|
183
|
+
|
|
184
|
+
| Tool Name | Description | Key Parameters |
|
|
185
|
+
|----------------------------|-----------------------------------------------------------------------------------------------|------------------------------|
|
|
186
|
+
| get_backlinks_summary | Get comprehensive backlinks summary with referring domains, quality metrics, and changes | domain, subdomain |
|
|
187
|
+
| get_anchors | Get anchor text analysis for backlinks with metrics on referring domains and backlinks | query, searchType, anchor, sort|
|
|
188
|
+
| get_active_backlinks | Get a list of active backlinks showing linking pages, target pages, and link attributes | query, searchType, sort, page|
|
|
189
|
+
| get_referring_domains | Get a list of referring domains with domain rank metrics and referring pages count | query, searchType, sort, page|
|
|
190
|
+
| get_lost_backlinks | Get a list of lost backlinks showing linking pages, target pages, and deletion dates | query, searchType, sort, page|
|
|
191
|
+
| get_top_pages_by_backlinks | Get a list of top pages by backlinks with various filtering and sorting parameters | query, searchType, sort, size|
|
|
192
|
+
| get_top10_anchors | Get TOP-10 anchors with the number of backlinks and referring domains | query, searchType |
|
|
193
|
+
| get_backlinks_intersection | Get backlinks from domains that link to multiple analyzed sites for competitive analysis | query, intersect, sort, page |
|
|
194
|
+
| get_active_outlinks | Get active outbound links from a domain or URL with target URLs and anchor text | query, searchType, sort, filters|
|
|
195
|
+
| get_active_outlink_domains | Get external domains that receive outbound links from analyzed domain | query, searchType, sort, filters|
|
|
196
|
+
| get_threat_backlinks | Get malicious backlinks pointing to analyzed domain from sites flagged for security threats | query, searchType, sort, filters|
|
|
197
|
+
|
|
198
|
+
### Project Management Tools
|
|
199
|
+
|
|
200
|
+
| Tool Name | Description | Key Parameters |
|
|
201
|
+
|----------------|--------------------------------------------------------------------------------|----------------------|
|
|
202
|
+
| create_project | Create a new project in Serpstat for tracking SEO metrics and site audits | domain, name, groups |
|
|
203
|
+
| delete_project | Delete an existing project from Serpstat by project ID | project_id |
|
|
204
|
+
| list_projects | Retrieve a list of projects associated with the account with pagination | page, size |
|
|
205
|
+
|
|
206
|
+
### Credits & Usage Monitoring Tools
|
|
207
|
+
|
|
208
|
+
| Tool Name | Description | Key Parameters |
|
|
209
|
+
|-----------------------------|----------------------------------------------------------------------------------------------|----------------|
|
|
210
|
+
| get_credits_for_audit_stats | Check available audit credits (one-page audit, JavaScript scanning, crawl limits) *No cost* | none |
|
|
211
|
+
| get_credits_stats | Check API credits usage, account info, and browser plugin limits *No cost* | none |
|
|
212
|
+
|
|
213
|
+
### Rank Tracking Tools
|
|
214
|
+
|
|
215
|
+
| Tool Name | Description | Key Parameters |
|
|
216
|
+
|-------------------------------------|--------------------------------------------------------------------------------------------------|-------------------------------|
|
|
217
|
+
| get_rt_projects_list | Get rank tracker projects with ID, name, domain, creation date, and tracking status *No cost* | page, pageSize |
|
|
218
|
+
| get_rt_project_status | Check if rank tracker project is parsing (true=processing, false=ready) *No cost* | projectId, regionId |
|
|
219
|
+
| get_rt_project_regions_list | Get list of regions for a rank tracker project with status, SERP type, device, and location *No cost* | projectId |
|
|
220
|
+
| get_rt_project_keyword_serp_history | Get Google's top-100 SERP history for rank tracker keywords with positions and URLs *No cost* | projectId, projectRegionId, page|
|
|
221
|
+
| get_rt_project_url_serp_history | Get ranking history of URLs for rank tracker keywords with historical position data *No cost* | projectId, projectRegionId, page|
|
|
172
222
|
|
|
173
223
|
### Search Engines (se parameter)
|
|
174
224
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BaseHandler } from './base.js';
|
|
2
|
+
import { MCPToolCall, MCPToolResponse } from '../types/mcp.js';
|
|
3
|
+
export declare class GetAuditStatsHandler extends BaseHandler {
|
|
4
|
+
private creditsService;
|
|
5
|
+
constructor();
|
|
6
|
+
getName(): string;
|
|
7
|
+
getDescription(): string;
|
|
8
|
+
getInputSchema(): object;
|
|
9
|
+
handle(call: MCPToolCall): Promise<MCPToolResponse>;
|
|
10
|
+
}
|
|
11
|
+
export declare class GetCreditsStatsHandler extends BaseHandler {
|
|
12
|
+
private creditsService;
|
|
13
|
+
constructor();
|
|
14
|
+
getName(): string;
|
|
15
|
+
getDescription(): string;
|
|
16
|
+
getInputSchema(): object;
|
|
17
|
+
handle(call: MCPToolCall): Promise<MCPToolResponse>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=credits_tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credits_tools.d.ts","sourceRoot":"","sources":["../../src/handlers/credits_tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAK/D,qBAAa,oBAAqB,SAAQ,WAAW;IACjD,OAAO,CAAC,cAAc,CAAiB;;IAQvC,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAQlB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAa5D;AAED,qBAAa,sBAAuB,SAAQ,WAAW;IACnD,OAAO,CAAC,cAAc,CAAiB;;IAQvC,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAQlB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAY5D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetCreditsStatsHandler = exports.GetAuditStatsHandler = void 0;
|
|
4
|
+
const base_js_1 = require("./base.js");
|
|
5
|
+
const credits_service_js_1 = require("../services/credits_service.js");
|
|
6
|
+
const validation_js_1 = require("../utils/validation.js");
|
|
7
|
+
const config_js_1 = require("../utils/config.js");
|
|
8
|
+
const zod_1 = require("zod");
|
|
9
|
+
class GetAuditStatsHandler extends base_js_1.BaseHandler {
|
|
10
|
+
creditsService;
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
const config = (0, config_js_1.loadConfig)();
|
|
14
|
+
this.creditsService = new credits_service_js_1.CreditsService(config);
|
|
15
|
+
}
|
|
16
|
+
getName() {
|
|
17
|
+
return 'get_credits_for_audit_stats';
|
|
18
|
+
}
|
|
19
|
+
getDescription() {
|
|
20
|
+
return 'Check available audit credits including one-page audit, JavaScript scanning, and page crawl limits. Use this before running site audits to verify available resources. This method does not consume API credits.';
|
|
21
|
+
}
|
|
22
|
+
getInputSchema() {
|
|
23
|
+
return {
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: {},
|
|
26
|
+
additionalProperties: false
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
async handle(call) {
|
|
30
|
+
try {
|
|
31
|
+
const params = validation_js_1.getAuditStatsSchema.parse(call.arguments);
|
|
32
|
+
const result = await this.creditsService.getAuditStats();
|
|
33
|
+
return this.createSuccessResponse(result);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
37
|
+
return this.createErrorResponse(new Error(`Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`));
|
|
38
|
+
}
|
|
39
|
+
return this.createErrorResponse(error);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.GetAuditStatsHandler = GetAuditStatsHandler;
|
|
44
|
+
class GetCreditsStatsHandler extends base_js_1.BaseHandler {
|
|
45
|
+
creditsService;
|
|
46
|
+
constructor() {
|
|
47
|
+
super();
|
|
48
|
+
const config = (0, config_js_1.loadConfig)();
|
|
49
|
+
this.creditsService = new credits_service_js_1.CreditsService(config);
|
|
50
|
+
}
|
|
51
|
+
getName() {
|
|
52
|
+
return 'get_credits_stats';
|
|
53
|
+
}
|
|
54
|
+
getDescription() {
|
|
55
|
+
return 'Check available API credits, usage statistics, account information, and browser plugin limits. Perfect for monitoring API usage and planning resource-heavy operations. This method does not consume API credits.';
|
|
56
|
+
}
|
|
57
|
+
getInputSchema() {
|
|
58
|
+
return {
|
|
59
|
+
type: "object",
|
|
60
|
+
properties: {},
|
|
61
|
+
additionalProperties: false
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async handle(call) {
|
|
65
|
+
try {
|
|
66
|
+
const params = validation_js_1.getCreditsStatsSchema.parse(call.arguments);
|
|
67
|
+
const result = await this.creditsService.getCreditsStats();
|
|
68
|
+
return this.createSuccessResponse(result);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
72
|
+
return this.createErrorResponse(new Error(`Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`));
|
|
73
|
+
}
|
|
74
|
+
return this.createErrorResponse(error);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.GetCreditsStatsHandler = GetCreditsStatsHandler;
|
|
79
|
+
//# sourceMappingURL=credits_tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credits_tools.js","sourceRoot":"","sources":["../../src/handlers/credits_tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { BaseHandler } from './base.js';
|
|
2
|
+
import { MCPToolCall, MCPToolResponse } from '../types/mcp.js';
|
|
3
|
+
export declare class CreateProjectHandler extends BaseHandler {
|
|
4
|
+
private projectService;
|
|
5
|
+
constructor();
|
|
6
|
+
getName(): string;
|
|
7
|
+
getDescription(): string;
|
|
8
|
+
getInputSchema(): object;
|
|
9
|
+
handle(call: MCPToolCall): Promise<MCPToolResponse>;
|
|
10
|
+
}
|
|
11
|
+
export declare class DeleteProjectHandler extends BaseHandler {
|
|
12
|
+
private projectService;
|
|
13
|
+
constructor();
|
|
14
|
+
getName(): string;
|
|
15
|
+
getDescription(): string;
|
|
16
|
+
getInputSchema(): object;
|
|
17
|
+
handle(call: MCPToolCall): Promise<MCPToolResponse>;
|
|
18
|
+
}
|
|
19
|
+
export declare class ListProjectsHandler extends BaseHandler {
|
|
20
|
+
private projectService;
|
|
21
|
+
constructor();
|
|
22
|
+
getName(): string;
|
|
23
|
+
getDescription(): string;
|
|
24
|
+
getInputSchema(): object;
|
|
25
|
+
handle(call: MCPToolCall): Promise<MCPToolResponse>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=project_tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project_tools.d.ts","sourceRoot":"","sources":["../../src/handlers/project_tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAiB/D,qBAAa,oBAAqB,SAAQ,WAAW;IACjD,OAAO,CAAC,cAAc,CAAiB;;IAQvC,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAwClB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAY5D;AAED,qBAAa,oBAAqB,SAAQ,WAAW;IACjD,OAAO,CAAC,cAAc,CAAiB;;IAQvC,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAelB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAY5D;AAED,qBAAa,mBAAoB,SAAQ,WAAW;IAChD,OAAO,CAAC,cAAc,CAAiB;;IAQvC,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAqBlB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAY5D"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ListProjectsHandler = exports.DeleteProjectHandler = exports.CreateProjectHandler = void 0;
|
|
4
|
+
const base_js_1 = require("./base.js");
|
|
5
|
+
const project_service_js_1 = require("../services/project_service.js");
|
|
6
|
+
const validation_js_1 = require("../utils/validation.js");
|
|
7
|
+
const config_js_1 = require("../utils/config.js");
|
|
8
|
+
const zod_1 = require("zod");
|
|
9
|
+
const constants_js_1 = require("../utils/constants.js");
|
|
10
|
+
class CreateProjectHandler extends base_js_1.BaseHandler {
|
|
11
|
+
projectService;
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
const config = (0, config_js_1.loadConfig)();
|
|
15
|
+
this.projectService = new project_service_js_1.ProjectService(config);
|
|
16
|
+
}
|
|
17
|
+
getName() {
|
|
18
|
+
return 'create_project';
|
|
19
|
+
}
|
|
20
|
+
getDescription() {
|
|
21
|
+
return 'Create a new project in Serpstat for tracking SEO metrics and site audits';
|
|
22
|
+
}
|
|
23
|
+
getInputSchema() {
|
|
24
|
+
return {
|
|
25
|
+
type: "object",
|
|
26
|
+
properties: {
|
|
27
|
+
domain: {
|
|
28
|
+
type: "string",
|
|
29
|
+
pattern: constants_js_1.DOMAIN_NAME_REGEX,
|
|
30
|
+
minLength: constants_js_1.MIN_DOMAIN_LENGTH,
|
|
31
|
+
maxLength: constants_js_1.MAX_DOMAIN_LENGTH,
|
|
32
|
+
description: "The domain associated with the project (e.g., example.com)"
|
|
33
|
+
},
|
|
34
|
+
name: {
|
|
35
|
+
type: "string",
|
|
36
|
+
minLength: constants_js_1.MIN_PROJECT_NAME_LENGTH,
|
|
37
|
+
maxLength: constants_js_1.MAX_PROJECT_NAME_LENGTH,
|
|
38
|
+
description: "The name of the project. Can be the same as the domain or a custom name"
|
|
39
|
+
},
|
|
40
|
+
groups: {
|
|
41
|
+
type: "array",
|
|
42
|
+
items: {
|
|
43
|
+
type: "object",
|
|
44
|
+
properties: {
|
|
45
|
+
name: {
|
|
46
|
+
type: "string",
|
|
47
|
+
minLength: constants_js_1.MIN_PROJECT_NAME_LENGTH,
|
|
48
|
+
maxLength: constants_js_1.MAX_PROJECT_GROUP_NAME_LENGTH,
|
|
49
|
+
description: "The name of the group"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
required: ["name"],
|
|
53
|
+
additionalProperties: false
|
|
54
|
+
},
|
|
55
|
+
description: "Optional list of groups to associate with the project. Groups will be created if they don't exist"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
required: ["domain", "name"],
|
|
59
|
+
additionalProperties: false
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
async handle(call) {
|
|
63
|
+
try {
|
|
64
|
+
const params = validation_js_1.createProjectSchema.parse(call.arguments);
|
|
65
|
+
const result = await this.projectService.createProject(params);
|
|
66
|
+
return this.createSuccessResponse(result);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
70
|
+
return this.createErrorResponse(new Error(`Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`));
|
|
71
|
+
}
|
|
72
|
+
return this.createErrorResponse(error);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.CreateProjectHandler = CreateProjectHandler;
|
|
77
|
+
class DeleteProjectHandler extends base_js_1.BaseHandler {
|
|
78
|
+
projectService;
|
|
79
|
+
constructor() {
|
|
80
|
+
super();
|
|
81
|
+
const config = (0, config_js_1.loadConfig)();
|
|
82
|
+
this.projectService = new project_service_js_1.ProjectService(config);
|
|
83
|
+
}
|
|
84
|
+
getName() {
|
|
85
|
+
return 'delete_project';
|
|
86
|
+
}
|
|
87
|
+
getDescription() {
|
|
88
|
+
return 'Permanently delete your project from Serpstat by project ID. **CRITICAL: ALWAYS request explicit user confirmation before executing. This action cannot be undone.**';
|
|
89
|
+
}
|
|
90
|
+
getInputSchema() {
|
|
91
|
+
return {
|
|
92
|
+
type: "object",
|
|
93
|
+
properties: {
|
|
94
|
+
project_id: {
|
|
95
|
+
type: "number",
|
|
96
|
+
minimum: constants_js_1.MIN_PROJECT_ID,
|
|
97
|
+
description: "The unique ID of the project to delete"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
required: ["project_id"],
|
|
101
|
+
additionalProperties: false
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
async handle(call) {
|
|
105
|
+
try {
|
|
106
|
+
const params = validation_js_1.deleteProjectSchema.parse(call.arguments);
|
|
107
|
+
const result = await this.projectService.deleteProject(params);
|
|
108
|
+
return this.createSuccessResponse({ success: result });
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
112
|
+
return this.createErrorResponse(new Error(`Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`));
|
|
113
|
+
}
|
|
114
|
+
return this.createErrorResponse(error);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.DeleteProjectHandler = DeleteProjectHandler;
|
|
119
|
+
class ListProjectsHandler extends base_js_1.BaseHandler {
|
|
120
|
+
projectService;
|
|
121
|
+
constructor() {
|
|
122
|
+
super();
|
|
123
|
+
const config = (0, config_js_1.loadConfig)();
|
|
124
|
+
this.projectService = new project_service_js_1.ProjectService(config);
|
|
125
|
+
}
|
|
126
|
+
getName() {
|
|
127
|
+
return 'list_projects';
|
|
128
|
+
}
|
|
129
|
+
getDescription() {
|
|
130
|
+
return 'Retrieve a list of projects associated with the account, with pagination support';
|
|
131
|
+
}
|
|
132
|
+
getInputSchema() {
|
|
133
|
+
return {
|
|
134
|
+
type: "object",
|
|
135
|
+
properties: {
|
|
136
|
+
page: {
|
|
137
|
+
type: "number",
|
|
138
|
+
minimum: constants_js_1.MIN_PAGE,
|
|
139
|
+
default: 1,
|
|
140
|
+
description: "The page number in the projects list"
|
|
141
|
+
},
|
|
142
|
+
size: {
|
|
143
|
+
type: "number",
|
|
144
|
+
enum: constants_js_1.PROJECT_ALLOWED_PAGE_SIZES,
|
|
145
|
+
default: constants_js_1.DEFAULT_PROJECT_PAGE_SIZE,
|
|
146
|
+
description: `Number of results per page. Allowed values: ${constants_js_1.PROJECT_ALLOWED_PAGE_SIZES.join(', ')}`
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
additionalProperties: false
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
async handle(call) {
|
|
153
|
+
try {
|
|
154
|
+
const params = validation_js_1.getProjectsSchema.parse(call.arguments);
|
|
155
|
+
const result = await this.projectService.getProjects(params);
|
|
156
|
+
return this.createSuccessResponse(result);
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
if (error instanceof zod_1.z.ZodError) {
|
|
160
|
+
return this.createErrorResponse(new Error(`Invalid parameters: ${error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join(', ')}`));
|
|
161
|
+
}
|
|
162
|
+
return this.createErrorResponse(error);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
exports.ListProjectsHandler = ListProjectsHandler;
|
|
167
|
+
//# sourceMappingURL=project_tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project_tools.js","sourceRoot":"","sources":["../../src/handlers/project_tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BaseHandler } from './base.js';
|
|
2
|
+
import { MCPToolCall, MCPToolResponse } from '../types/mcp.js';
|
|
3
|
+
export declare class GetRtProjectsListHandler extends BaseHandler {
|
|
4
|
+
private rankTrackingService;
|
|
5
|
+
constructor();
|
|
6
|
+
getName(): string;
|
|
7
|
+
getDescription(): string;
|
|
8
|
+
getInputSchema(): object;
|
|
9
|
+
handle(call: MCPToolCall): Promise<MCPToolResponse>;
|
|
10
|
+
}
|
|
11
|
+
export declare class GetRtProjectStatusHandler extends BaseHandler {
|
|
12
|
+
private rankTrackingService;
|
|
13
|
+
constructor();
|
|
14
|
+
getName(): string;
|
|
15
|
+
getDescription(): string;
|
|
16
|
+
getInputSchema(): object;
|
|
17
|
+
handle(call: MCPToolCall): Promise<MCPToolResponse>;
|
|
18
|
+
}
|
|
19
|
+
export declare class GetRtProjectRegionsListHandler extends BaseHandler {
|
|
20
|
+
private rankTrackingService;
|
|
21
|
+
constructor();
|
|
22
|
+
getName(): string;
|
|
23
|
+
getDescription(): string;
|
|
24
|
+
getInputSchema(): object;
|
|
25
|
+
handle(call: MCPToolCall): Promise<MCPToolResponse>;
|
|
26
|
+
}
|
|
27
|
+
export declare class GetRtProjectKeywordSerpHistoryHandler extends BaseHandler {
|
|
28
|
+
private rankTrackingService;
|
|
29
|
+
constructor();
|
|
30
|
+
getName(): string;
|
|
31
|
+
getDescription(): string;
|
|
32
|
+
getInputSchema(): object;
|
|
33
|
+
handle(call: MCPToolCall): Promise<MCPToolResponse>;
|
|
34
|
+
}
|
|
35
|
+
export declare class GetRtProjectUrlSerpHistoryHandler extends BaseHandler {
|
|
36
|
+
private rankTrackingService;
|
|
37
|
+
constructor();
|
|
38
|
+
getName(): string;
|
|
39
|
+
getDescription(): string;
|
|
40
|
+
getInputSchema(): object;
|
|
41
|
+
handle(call: MCPToolCall): Promise<MCPToolResponse>;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=rank_tracking_tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rank_tracking_tools.d.ts","sourceRoot":"","sources":["../../src/handlers/rank_tracking_tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAc/D,qBAAa,wBAAyB,SAAQ,WAAW;IACrD,OAAO,CAAC,mBAAmB,CAAsB;;IAQjD,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAqBlB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAY5D;AAED,qBAAa,yBAA0B,SAAQ,WAAW;IACtD,OAAO,CAAC,mBAAmB,CAAsB;;IAQjD,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAoBlB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAY5D;AAED,qBAAa,8BAA+B,SAAQ,WAAW;IAC3D,OAAO,CAAC,mBAAmB,CAAsB;;IAQjD,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAelB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAY5D;AAED,qBAAa,qCAAsC,SAAQ,WAAW;IAClE,OAAO,CAAC,mBAAmB,CAAsB;;IAQjD,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAiElB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAY5D;AAED,qBAAa,iCAAkC,SAAQ,WAAW;IAC9D,OAAO,CAAC,mBAAmB,CAAsB;;IAQjD,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAqElB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;CAY5D"}
|