@serpstat/serpstat-mcp-server 1.1.3 → 1.1.4
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 +6 -0
- package/dist/handlers/backlinks_tools.d.ts +12 -1
- package/dist/handlers/backlinks_tools.d.ts.map +1 -1
- package/dist/handlers/backlinks_tools.js +33 -0
- package/dist/handlers/backlinks_tools.js.map +1 -1
- package/dist/handlers/base.d.ts +8 -0
- package/dist/handlers/base.d.ts.map +1 -1
- package/dist/handlers/base.js.map +1 -1
- package/dist/handlers/credits_tools.d.ts +3 -1
- package/dist/handlers/credits_tools.d.ts.map +1 -1
- package/dist/handlers/credits_tools.js +6 -0
- package/dist/handlers/credits_tools.js.map +1 -1
- package/dist/handlers/domain_tools.d.ts +9 -1
- package/dist/handlers/domain_tools.d.ts.map +1 -1
- package/dist/handlers/domain_tools.js +24 -0
- package/dist/handlers/domain_tools.js.map +1 -1
- package/dist/handlers/keyword_tools.d.ts +9 -1
- package/dist/handlers/keyword_tools.d.ts.map +1 -1
- package/dist/handlers/keyword_tools.js +24 -0
- package/dist/handlers/keyword_tools.js.map +1 -1
- package/dist/handlers/one_page_audit_tools.d.ts +12 -1
- package/dist/handlers/one_page_audit_tools.d.ts.map +1 -1
- package/dist/handlers/one_page_audit_tools.js +33 -0
- package/dist/handlers/one_page_audit_tools.js.map +1 -1
- package/dist/handlers/project_tools.d.ts +4 -1
- package/dist/handlers/project_tools.d.ts.map +1 -1
- package/dist/handlers/project_tools.js +9 -0
- package/dist/handlers/project_tools.js.map +1 -1
- package/dist/handlers/rank_tracking_tools.d.ts +6 -1
- package/dist/handlers/rank_tracking_tools.d.ts.map +1 -1
- package/dist/handlers/rank_tracking_tools.js +15 -0
- package/dist/handlers/rank_tracking_tools.js.map +1 -1
- package/dist/handlers/site_audit_tools.d.ts +14 -1
- package/dist/handlers/site_audit_tools.d.ts.map +1 -1
- package/dist/handlers/site_audit_tools.js +39 -0
- package/dist/handlers/site_audit_tools.js.map +1 -1
- package/dist/handlers/url_tools.d.ts +5 -1
- package/dist/handlers/url_tools.d.ts.map +1 -1
- package/dist/handlers/url_tools.js +12 -0
- package/dist/handlers/url_tools.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/dist/services/base.js +1 -1
- package/package.json +3 -3
- package/dist/handlers/domain.d.ts +0 -11
- package/dist/handlers/domain.d.ts.map +0 -1
- package/dist/handlers/domain.js +0 -75
- package/dist/handlers/domain.js.map +0 -1
- package/dist/handlers/domain_base.d.ts +0 -10
- package/dist/handlers/domain_base.d.ts.map +0 -1
- package/dist/handlers/domain_base.js +0 -33
- package/dist/handlers/domain_base.js.map +0 -1
- package/dist/handlers/get_active_backlinks.d.ts +0 -11
- package/dist/handlers/get_active_backlinks.d.ts.map +0 -1
- package/dist/handlers/get_active_backlinks.js +0 -88
- package/dist/handlers/get_active_backlinks.js.map +0 -1
- package/dist/http-server.d.ts +0 -8
- package/dist/http-server.d.ts.map +0 -1
- package/dist/http-server.js +0 -202
- package/dist/http-server.js.map +0 -1
- package/dist/middleware/auth.d.ts +0 -3
- package/dist/middleware/auth.d.ts.map +0 -1
- package/dist/middleware/auth.js +0 -112
- package/dist/middleware/auth.js.map +0 -1
- package/dist/services/domain.d.ts +0 -7
- package/dist/services/domain.d.ts.map +0 -1
- package/dist/services/domain.js +0 -26
- package/dist/services/domain.js.map +0 -1
- package/dist/transports/base.d.ts +0 -18
- package/dist/transports/base.d.ts.map +0 -1
- package/dist/transports/base.js +0 -11
- package/dist/transports/base.js.map +0 -1
- package/dist/transports/http.d.ts +0 -21
- package/dist/transports/http.d.ts.map +0 -1
- package/dist/transports/http.js +0 -283
- package/dist/transports/http.js.map +0 -1
- package/dist/transports/sse.d.ts +0 -20
- package/dist/transports/sse.d.ts.map +0 -1
- package/dist/transports/sse.js +0 -52
- package/dist/transports/sse.js.map +0 -1
- package/dist/transports/stdio.d.ts +0 -8
- package/dist/transports/stdio.d.ts.map +0 -1
- package/dist/transports/stdio.js +0 -25
- package/dist/transports/stdio.js.map +0 -1
- package/dist/utils/clientInfo.d.ts +0 -9
- package/dist/utils/clientInfo.d.ts.map +0 -1
- package/dist/utils/clientInfo.js +0 -22
- package/dist/utils/clientInfo.js.map +0 -1
package/dist/http-server.js
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.startHttpServer = startHttpServer;
|
|
7
|
-
const express_1 = __importDefault(require("express"));
|
|
8
|
-
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
9
|
-
const sse_js_1 = require("./transports/sse.js");
|
|
10
|
-
const auth_js_1 = require("./middleware/auth.js");
|
|
11
|
-
const config_js_1 = require("./utils/config.js");
|
|
12
|
-
const logger_js_1 = require("./utils/logger.js");
|
|
13
|
-
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
14
|
-
const domain_tools_js_1 = require("./handlers/domain_tools.js");
|
|
15
|
-
const backlinks_tools_js_1 = require("./handlers/backlinks_tools.js");
|
|
16
|
-
const keyword_tools_js_1 = require("./handlers/keyword_tools.js");
|
|
17
|
-
const url_tools_js_1 = require("./handlers/url_tools.js");
|
|
18
|
-
const project_tools_js_1 = require("./handlers/project_tools.js");
|
|
19
|
-
const credits_tools_js_1 = require("./handlers/credits_tools.js");
|
|
20
|
-
const rank_tracking_tools_js_1 = require("./handlers/rank_tracking_tools.js");
|
|
21
|
-
const site_audit_tools_js_1 = require("./handlers/site_audit_tools.js");
|
|
22
|
-
const one_page_audit_tools_js_1 = require("./handlers/one_page_audit_tools.js");
|
|
23
|
-
class HTTPMCPServer {
|
|
24
|
-
server;
|
|
25
|
-
transport;
|
|
26
|
-
handlers;
|
|
27
|
-
apiToken;
|
|
28
|
-
constructor(apiToken) {
|
|
29
|
-
this.apiToken = apiToken;
|
|
30
|
-
this.server = new index_js_1.Server({
|
|
31
|
-
name: 'serpstat-mcp-server',
|
|
32
|
-
version: '1.1.1',
|
|
33
|
-
}, {
|
|
34
|
-
capabilities: {
|
|
35
|
-
tools: {},
|
|
36
|
-
},
|
|
37
|
-
});
|
|
38
|
-
this.transport = new sse_js_1.SSEServerTransport();
|
|
39
|
-
this.handlers = new Map();
|
|
40
|
-
this.setupHandlers();
|
|
41
|
-
this.setupRoutes();
|
|
42
|
-
}
|
|
43
|
-
setupHandlers() {
|
|
44
|
-
const handlers = [
|
|
45
|
-
new domain_tools_js_1.DomainsInfoHandler(this.apiToken),
|
|
46
|
-
new domain_tools_js_1.CompetitorsHandler(this.apiToken),
|
|
47
|
-
new domain_tools_js_1.DomainKeywordsHandler(this.apiToken),
|
|
48
|
-
new domain_tools_js_1.DomainUrlsHandler(this.apiToken),
|
|
49
|
-
new backlinks_tools_js_1.BacklinksSummaryHandler(this.apiToken),
|
|
50
|
-
new backlinks_tools_js_1.GetAnchorsHandler(this.apiToken),
|
|
51
|
-
new backlinks_tools_js_1.GetActiveBacklinksHandler(this.apiToken),
|
|
52
|
-
new backlinks_tools_js_1.GetReferringDomainsHandler(this.apiToken),
|
|
53
|
-
new backlinks_tools_js_1.GetLostBacklinksHandler(this.apiToken),
|
|
54
|
-
new backlinks_tools_js_1.GetTopAnchorsHandler(this.apiToken),
|
|
55
|
-
new backlinks_tools_js_1.GetTopPagesByBacklinksHandler(this.apiToken),
|
|
56
|
-
new backlinks_tools_js_1.GetBacklinksIntersectionHandler(this.apiToken),
|
|
57
|
-
new backlinks_tools_js_1.GetActiveOutlinksHandler(this.apiToken),
|
|
58
|
-
new backlinks_tools_js_1.GetActiveOutlinkDomainsHandler(this.apiToken),
|
|
59
|
-
new backlinks_tools_js_1.GetThreatBacklinksHandler(this.apiToken),
|
|
60
|
-
new domain_tools_js_1.DomainRegionsCountHandler(this.apiToken),
|
|
61
|
-
new domain_tools_js_1.GetDomainUniqKeywordsHandler(this.apiToken),
|
|
62
|
-
new keyword_tools_js_1.GetKeywordsHandler(this.apiToken),
|
|
63
|
-
new keyword_tools_js_1.GetRelatedKeywordsHandler(this.apiToken),
|
|
64
|
-
new keyword_tools_js_1.GetKeywordsInfoHandler(this.apiToken),
|
|
65
|
-
new keyword_tools_js_1.GetKeywordSuggestionsHandler(this.apiToken),
|
|
66
|
-
new keyword_tools_js_1.GetKeywordFullTopHandler(this.apiToken),
|
|
67
|
-
new keyword_tools_js_1.GetKeywordTopUrlsHandler(this.apiToken),
|
|
68
|
-
new keyword_tools_js_1.GetKeywordCompetitorsHandler(this.apiToken),
|
|
69
|
-
new keyword_tools_js_1.GetKeywordTopHandler(this.apiToken),
|
|
70
|
-
new url_tools_js_1.GetUrlSummaryTrafficHandler(this.apiToken),
|
|
71
|
-
new url_tools_js_1.GetUrlCompetitorsHandler(this.apiToken),
|
|
72
|
-
new url_tools_js_1.GetUrlKeywordsHandler(this.apiToken),
|
|
73
|
-
new url_tools_js_1.GetUrlMissingKeywordsHandler(this.apiToken),
|
|
74
|
-
new project_tools_js_1.CreateProjectHandler(this.apiToken),
|
|
75
|
-
new project_tools_js_1.DeleteProjectHandler(this.apiToken),
|
|
76
|
-
new project_tools_js_1.ListProjectsHandler(this.apiToken),
|
|
77
|
-
new credits_tools_js_1.GetAuditStatsHandler(this.apiToken),
|
|
78
|
-
new credits_tools_js_1.GetCreditsStatsHandler(this.apiToken),
|
|
79
|
-
new rank_tracking_tools_js_1.GetRtProjectsListHandler(this.apiToken),
|
|
80
|
-
new rank_tracking_tools_js_1.GetRtProjectStatusHandler(this.apiToken),
|
|
81
|
-
new rank_tracking_tools_js_1.GetRtProjectRegionsListHandler(this.apiToken),
|
|
82
|
-
new rank_tracking_tools_js_1.GetRtProjectKeywordSerpHistoryHandler(this.apiToken),
|
|
83
|
-
new rank_tracking_tools_js_1.GetRtProjectUrlSerpHistoryHandler(this.apiToken),
|
|
84
|
-
new site_audit_tools_js_1.GetSiteAuditSettingsHandler(this.apiToken),
|
|
85
|
-
new site_audit_tools_js_1.SetSiteAuditSettingsHandler(this.apiToken),
|
|
86
|
-
new site_audit_tools_js_1.StartSiteAuditHandler(this.apiToken),
|
|
87
|
-
new site_audit_tools_js_1.StopSiteAuditHandler(this.apiToken),
|
|
88
|
-
new site_audit_tools_js_1.GetCategoriesStatisticHandler(this.apiToken),
|
|
89
|
-
new site_audit_tools_js_1.GetHistoryByCountErrorHandler(this.apiToken),
|
|
90
|
-
new site_audit_tools_js_1.GetSiteAuditsListHandler(this.apiToken),
|
|
91
|
-
new site_audit_tools_js_1.GetScanUserUrlListHandler(this.apiToken),
|
|
92
|
-
new site_audit_tools_js_1.GetDefaultSettingsHandler(this.apiToken),
|
|
93
|
-
new site_audit_tools_js_1.GetBasicInfoHandler(this.apiToken),
|
|
94
|
-
new site_audit_tools_js_1.GetReportWithoutDetailsHandler(this.apiToken),
|
|
95
|
-
new site_audit_tools_js_1.GetErrorElementsHandler(this.apiToken),
|
|
96
|
-
new site_audit_tools_js_1.GetSubElementsByCrcHandler(this.apiToken),
|
|
97
|
-
new one_page_audit_tools_js_1.StartOnePageAuditScanHandler(this.apiToken),
|
|
98
|
-
new one_page_audit_tools_js_1.GetOnePageAuditsListHandler(this.apiToken),
|
|
99
|
-
new one_page_audit_tools_js_1.GetOnePageReportsListHandler(this.apiToken),
|
|
100
|
-
new one_page_audit_tools_js_1.GetOnePageAuditResultsHandler(this.apiToken),
|
|
101
|
-
new one_page_audit_tools_js_1.RescanOnePageAuditHandler(this.apiToken),
|
|
102
|
-
new one_page_audit_tools_js_1.StopOnePageAuditHandler(this.apiToken),
|
|
103
|
-
new one_page_audit_tools_js_1.RemoveOnePageAuditHandler(this.apiToken),
|
|
104
|
-
new one_page_audit_tools_js_1.GetOnePageAuditByCategoriesHandler(this.apiToken),
|
|
105
|
-
new one_page_audit_tools_js_1.GetOnePageAuditErrorRowsHandler(this.apiToken),
|
|
106
|
-
new one_page_audit_tools_js_1.GetOnePageAuditPageNamesHandler(this.apiToken),
|
|
107
|
-
new one_page_audit_tools_js_1.GetOnePageAuditUserLogHandler(this.apiToken),
|
|
108
|
-
];
|
|
109
|
-
for (const handler of handlers) {
|
|
110
|
-
this.handlers.set(handler.getName(), handler);
|
|
111
|
-
}
|
|
112
|
-
logger_js_1.logger.info(`Registered ${handlers.length} tool handlers`);
|
|
113
|
-
}
|
|
114
|
-
setupRoutes() {
|
|
115
|
-
this.server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
|
|
116
|
-
const tools = Array.from(this.handlers.values()).map(handler => ({
|
|
117
|
-
name: handler.getName(),
|
|
118
|
-
description: handler.getDescription(),
|
|
119
|
-
inputSchema: handler.getInputSchema(),
|
|
120
|
-
}));
|
|
121
|
-
logger_js_1.logger.debug(`Listing ${tools.length} available tools`);
|
|
122
|
-
return { tools };
|
|
123
|
-
});
|
|
124
|
-
this.server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
|
|
125
|
-
const { name, arguments: args } = request.params;
|
|
126
|
-
logger_js_1.logger.info(`Tool call received: ${name}`, { arguments: args });
|
|
127
|
-
const handler = this.handlers.get(name);
|
|
128
|
-
if (!handler) {
|
|
129
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
130
|
-
}
|
|
131
|
-
const result = await handler.handle({ name, arguments: args ?? {} });
|
|
132
|
-
logger_js_1.logger.info(`Tool call completed: ${name}`, {
|
|
133
|
-
success: !result.isError,
|
|
134
|
-
responseLength: result.content?.[0]?.text?.length
|
|
135
|
-
});
|
|
136
|
-
return { ...result };
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
async connect() {
|
|
140
|
-
await this.server.connect(this.transport);
|
|
141
|
-
logger_js_1.logger.info('MCP Server connected to SSE transport');
|
|
142
|
-
}
|
|
143
|
-
getTransport() {
|
|
144
|
-
return this.transport;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
async function startHttpServer() {
|
|
148
|
-
const config = (0, config_js_1.loadConfig)();
|
|
149
|
-
const httpPort = config.httpPort || 8081;
|
|
150
|
-
const app = (0, express_1.default)();
|
|
151
|
-
app.use(express_1.default.json());
|
|
152
|
-
app.get('/health', (req, res) => {
|
|
153
|
-
res.json({ status: 'ok', service: 'serpstat-mcp-server', version: '1.1.1' });
|
|
154
|
-
});
|
|
155
|
-
app.get('/sse', auth_js_1.authenticateOAuth, async (req, res) => {
|
|
156
|
-
try {
|
|
157
|
-
const apiToken = req.serpstatApiToken;
|
|
158
|
-
const userId = req.userId;
|
|
159
|
-
logger_js_1.logger.info('SSE connection established', { userId });
|
|
160
|
-
const mcpServer = new HTTPMCPServer(apiToken);
|
|
161
|
-
await mcpServer.connect();
|
|
162
|
-
const transport = mcpServer.getTransport();
|
|
163
|
-
transport.handleSSE(req, res);
|
|
164
|
-
logger_js_1.logger.info('SSE transport initialized', { userId });
|
|
165
|
-
}
|
|
166
|
-
catch (error) {
|
|
167
|
-
logger_js_1.logger.error('SSE connection error', error);
|
|
168
|
-
res.status(500).json({ error: 'server_error', message: 'Failed to establish SSE connection' });
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
app.post('/message', auth_js_1.authenticateOAuth, async (req, res) => {
|
|
172
|
-
try {
|
|
173
|
-
const apiToken = req.serpstatApiToken;
|
|
174
|
-
const message = req.body;
|
|
175
|
-
logger_js_1.logger.info('JSON-RPC message received', { method: message.method });
|
|
176
|
-
const mcpServer = new HTTPMCPServer(apiToken);
|
|
177
|
-
await mcpServer.connect();
|
|
178
|
-
const transport = mcpServer.getTransport();
|
|
179
|
-
const responsePromise = new Promise((resolve) => {
|
|
180
|
-
const originalSend = transport.send.bind(transport);
|
|
181
|
-
transport.send = async (response) => {
|
|
182
|
-
resolve(response);
|
|
183
|
-
return Promise.resolve();
|
|
184
|
-
};
|
|
185
|
-
});
|
|
186
|
-
transport.handleMessage(message);
|
|
187
|
-
const response = await responsePromise;
|
|
188
|
-
res.json(response);
|
|
189
|
-
}
|
|
190
|
-
catch (error) {
|
|
191
|
-
logger_js_1.logger.error('Message handling error', error);
|
|
192
|
-
res.status(500).json({ error: 'server_error', message: 'Failed to process message' });
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
app.listen(httpPort, () => {
|
|
196
|
-
logger_js_1.logger.info(`Serpstat MCP HTTP Server listening on port ${httpPort}`);
|
|
197
|
-
logger_js_1.logger.info(`Health check: http://localhost:${httpPort}/health`);
|
|
198
|
-
logger_js_1.logger.info(`SSE endpoint: http://localhost:${httpPort}/sse`);
|
|
199
|
-
logger_js_1.logger.info(`Message endpoint: http://localhost:${httpPort}/message`);
|
|
200
|
-
});
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=http-server.js.map
|
package/dist/http-server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA+D1D,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EtG"}
|
package/dist/middleware/auth.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.authenticateOAuth = authenticateOAuth;
|
|
7
|
-
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
8
|
-
const axios_1 = __importDefault(require("axios"));
|
|
9
|
-
const logger_js_1 = require("../utils/logger.js");
|
|
10
|
-
const SERPSTAT_API_BASE = process.env.SERPSTAT_API_BASE || 'https://serpstat.com';
|
|
11
|
-
const TEST_MODE = process.env.OAUTH_TEST_MODE === 'true';
|
|
12
|
-
const apiTokenCache = new Map();
|
|
13
|
-
async function getSerpstatApiToken(sessionToken) {
|
|
14
|
-
try {
|
|
15
|
-
const response = await axios_1.default.post(`${SERPSTAT_API_BASE}/node?userProfile.getApiToken`, {
|
|
16
|
-
id: Date.now().toString(),
|
|
17
|
-
jsonrpc: '2.0',
|
|
18
|
-
method: 'userProfile.getApiToken',
|
|
19
|
-
params: {}
|
|
20
|
-
}, {
|
|
21
|
-
headers: {
|
|
22
|
-
'accept': 'application/json, text/plain, */*',
|
|
23
|
-
'content-type': 'application/json;charset=UTF-8',
|
|
24
|
-
'token': `Bearer ${sessionToken}`
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
if (!response.data?.result?.token) {
|
|
28
|
-
throw new Error('Invalid response from Serpstat API');
|
|
29
|
-
}
|
|
30
|
-
return response.data.result.token;
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
if (axios_1.default.isAxiosError(error)) {
|
|
34
|
-
logger_js_1.logger.error('Serpstat API token request failed', {
|
|
35
|
-
status: error.response?.status,
|
|
36
|
-
data: error.response?.data
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
logger_js_1.logger.error('Serpstat API token request error', error);
|
|
41
|
-
}
|
|
42
|
-
throw error;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
async function authenticateOAuth(req, res, next) {
|
|
46
|
-
const authHeader = req.headers.authorization;
|
|
47
|
-
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
48
|
-
res.status(401).json({
|
|
49
|
-
error: 'unauthorized',
|
|
50
|
-
message: 'Missing or invalid Authorization header'
|
|
51
|
-
});
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const sessionToken = authHeader.substring(7);
|
|
55
|
-
try {
|
|
56
|
-
if (TEST_MODE) {
|
|
57
|
-
const testApiToken = process.env.SERPSTAT_API_TOKEN || 'test-token';
|
|
58
|
-
req.serpstatApiToken = testApiToken;
|
|
59
|
-
req.userId = 'test-user';
|
|
60
|
-
next();
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
const decoded = jsonwebtoken_1.default.decode(sessionToken);
|
|
64
|
-
if (!decoded) {
|
|
65
|
-
logger_js_1.logger.warn('Failed to decode JWT token');
|
|
66
|
-
res.status(401).json({
|
|
67
|
-
error: 'invalid_token',
|
|
68
|
-
message: 'Invalid JWT token format'
|
|
69
|
-
});
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
const userId = decoded.userId?.toString() || decoded.email || 'unknown';
|
|
73
|
-
const cached = apiTokenCache.get(userId);
|
|
74
|
-
if (cached && Date.now() < cached.expiresAt) {
|
|
75
|
-
req.serpstatApiToken = cached.apiToken;
|
|
76
|
-
req.userId = userId;
|
|
77
|
-
next();
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
const apiToken = await getSerpstatApiToken(sessionToken);
|
|
81
|
-
const expiresAt = decoded.exp
|
|
82
|
-
? decoded.exp * 1000 - 10 * 60 * 1000
|
|
83
|
-
: Date.now() + 3600 * 1000;
|
|
84
|
-
apiTokenCache.set(userId, {
|
|
85
|
-
apiToken,
|
|
86
|
-
expiresAt
|
|
87
|
-
});
|
|
88
|
-
req.serpstatApiToken = apiToken;
|
|
89
|
-
req.userId = userId;
|
|
90
|
-
logger_js_1.logger.info('Serpstat API token retrieved successfully', { userId });
|
|
91
|
-
next();
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
if (axios_1.default.isAxiosError(error)) {
|
|
95
|
-
const status = error.response?.status;
|
|
96
|
-
if (status === 401 || status === 403) {
|
|
97
|
-
logger_js_1.logger.warn('Serpstat session token invalid or expired');
|
|
98
|
-
res.status(401).json({
|
|
99
|
-
error: 'invalid_token',
|
|
100
|
-
message: 'Session token is invalid or expired'
|
|
101
|
-
});
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
logger_js_1.logger.error('Authentication error', error);
|
|
106
|
-
res.status(500).json({
|
|
107
|
-
error: 'server_error',
|
|
108
|
-
message: 'Authentication failed'
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { BaseService } from './base';
|
|
2
|
-
import { DomainsInfoResponse } from '../types/serpstat';
|
|
3
|
-
import { DomainsInfoParams } from '../utils/validation';
|
|
4
|
-
export declare class DomainService extends BaseService {
|
|
5
|
-
getDomainsInfo(params: DomainsInfoParams): Promise<DomainsInfoResponse>;
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=domain.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/services/domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAmB,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,qBAAa,aAAc,SAAQ,WAAW;IACpC,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAsBhF"}
|
package/dist/services/domain.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DomainService = void 0;
|
|
4
|
-
const base_1 = require("./base");
|
|
5
|
-
const logger_1 = require("../utils/logger");
|
|
6
|
-
class DomainService extends base_1.BaseService {
|
|
7
|
-
async getDomainsInfo(params) {
|
|
8
|
-
logger_1.logger.info('Getting domains info', { domains: params.domains, se: params.se });
|
|
9
|
-
const request = {
|
|
10
|
-
id: `domains_info_${Date.now()}`,
|
|
11
|
-
method: 'SerpstatDomainProcedure.getDomainsInfo',
|
|
12
|
-
params,
|
|
13
|
-
};
|
|
14
|
-
const response = await this.makeRequest(request);
|
|
15
|
-
if (!response.result) {
|
|
16
|
-
throw new Error('No result data received from Serpstat API');
|
|
17
|
-
}
|
|
18
|
-
logger_1.logger.info('Successfully retrieved domains info', {
|
|
19
|
-
domainsCount: response.result.data.length,
|
|
20
|
-
leftLines: response.result.summary_info.left_lines
|
|
21
|
-
});
|
|
22
|
-
return response.result;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.DomainService = DomainService;
|
|
26
|
-
//# sourceMappingURL=domain.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/services/domain.ts"],"names":[],"mappings":";;;AAAA,iCAAqC;AAGrC,4CAAyC;AAEzC,MAAa,aAAc,SAAQ,kBAAW;IAC1C,KAAK,CAAC,cAAc,CAAC,MAAyB;QAC1C,eAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhF,MAAM,OAAO,GAAoB;YAC7B,EAAE,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE;YAChC,MAAM,EAAE,wCAAwC;YAChD,MAAM;SACT,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAsB,OAAO,CAAC,CAAC;QAEtE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACjE,CAAC;QAED,eAAM,CAAC,IAAI,CAAC,qCAAqC,EAAE;YAC/C,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM;YACzC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU;SACrD,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,MAAM,CAAC;IAC3B,CAAC;CACJ;AAvBD,sCAuBC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
-
export declare abstract class BaseTransport {
|
|
3
|
-
protected server: Server;
|
|
4
|
-
constructor(server: Server);
|
|
5
|
-
abstract start(): Promise<void>;
|
|
6
|
-
abstract stop(): Promise<void>;
|
|
7
|
-
abstract getTransportType(): string;
|
|
8
|
-
}
|
|
9
|
-
export interface TransportConfig {
|
|
10
|
-
type: 'stdio' | 'http' | 'both';
|
|
11
|
-
http?: {
|
|
12
|
-
port: number;
|
|
13
|
-
host: string;
|
|
14
|
-
enableSSE: boolean;
|
|
15
|
-
corsOrigins?: string[];
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,8BAAsB,aAAa;IAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEb,MAAM,EAAE,MAAM;IAI1B,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,IAAI,MAAM;CACtC;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IAChC,IAAI,CAAC,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;CACL"}
|
package/dist/transports/base.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseTransport = void 0;
|
|
4
|
-
class BaseTransport {
|
|
5
|
-
server;
|
|
6
|
-
constructor(server) {
|
|
7
|
-
this.server = server;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.BaseTransport = BaseTransport;
|
|
11
|
-
//# sourceMappingURL=base.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/transports/base.ts"],"names":[],"mappings":";;;AAEA,MAAsB,aAAa;IACrB,MAAM,CAAS;IAEzB,YAAY,MAAc;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;CAKJ;AAVD,sCAUC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { BaseTransport, TransportConfig } from './base.js';
|
|
2
|
-
export declare class HttpTransport extends BaseTransport {
|
|
3
|
-
private app;
|
|
4
|
-
private httpServer?;
|
|
5
|
-
private config;
|
|
6
|
-
private sseConnections;
|
|
7
|
-
private eventCounter;
|
|
8
|
-
private handlers;
|
|
9
|
-
constructor(server: any, config: NonNullable<TransportConfig['http']>, handlers?: Map<string, any>);
|
|
10
|
-
private setupMiddleware;
|
|
11
|
-
private setupRoutes;
|
|
12
|
-
private handleMCPRequest;
|
|
13
|
-
private processMessage;
|
|
14
|
-
private handleSSEConnection;
|
|
15
|
-
private broadcastToSSE;
|
|
16
|
-
start(): Promise<void>;
|
|
17
|
-
stop(): Promise<void>;
|
|
18
|
-
getTransportType(): string;
|
|
19
|
-
getConnectionCount(): number;
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=http.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAkB3D,qBAAa,aAAc,SAAQ,aAAa;IAC5C,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,cAAc,CAAyC;IAC/D,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAmB;gBAEvB,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;IAiBlG,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,WAAW;YAuBL,gBAAgB;YA6ChB,cAAc;IAiF5B,OAAO,CAAC,mBAAmB;IAsC3B,OAAO,CAAC,cAAc;IAehB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB3B,gBAAgB,IAAI,MAAM;IAI1B,kBAAkB,IAAI,MAAM;CAG/B"}
|