@serpstat/serpstat-mcp-server 1.0.4 → 1.0.6

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.
Files changed (42) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +33 -18
  3. package/dist/handlers/backlinks_tools.d.ts +72 -0
  4. package/dist/handlers/backlinks_tools.d.ts.map +1 -1
  5. package/dist/handlers/backlinks_tools.js +917 -1
  6. package/dist/handlers/backlinks_tools.js.map +1 -1
  7. package/dist/handlers/get_active_backlinks.d.ts +11 -0
  8. package/dist/handlers/get_active_backlinks.d.ts.map +1 -0
  9. package/dist/handlers/get_active_backlinks.js +88 -0
  10. package/dist/handlers/get_active_backlinks.js.map +1 -0
  11. package/dist/server.d.ts.map +1 -1
  12. package/dist/server.js +10 -1
  13. package/dist/server.js.map +1 -1
  14. package/dist/services/backlinks_tools.d.ts +11 -2
  15. package/dist/services/backlinks_tools.d.ts.map +1 -1
  16. package/dist/services/backlinks_tools.js +201 -0
  17. package/dist/services/backlinks_tools.js.map +1 -1
  18. package/dist/transports/base.d.ts +18 -0
  19. package/dist/transports/base.d.ts.map +1 -0
  20. package/dist/transports/base.js +11 -0
  21. package/dist/transports/base.js.map +1 -0
  22. package/dist/transports/http.d.ts +21 -0
  23. package/dist/transports/http.d.ts.map +1 -0
  24. package/dist/transports/http.js +283 -0
  25. package/dist/transports/http.js.map +1 -0
  26. package/dist/transports/stdio.d.ts +8 -0
  27. package/dist/transports/stdio.d.ts.map +1 -0
  28. package/dist/transports/stdio.js +25 -0
  29. package/dist/transports/stdio.js.map +1 -0
  30. package/dist/types/serpstat.d.ts +158 -59
  31. package/dist/types/serpstat.d.ts.map +1 -1
  32. package/dist/types/serpstat.js +0 -21
  33. package/dist/types/serpstat.js.map +1 -1
  34. package/dist/utils/constants.d.ts +26 -1
  35. package/dist/utils/constants.d.ts.map +1 -1
  36. package/dist/utils/constants.js +105 -11
  37. package/dist/utils/constants.js.map +1 -1
  38. package/dist/utils/validation.d.ts +843 -326
  39. package/dist/utils/validation.d.ts.map +1 -1
  40. package/dist/utils/validation.js +274 -182
  41. package/dist/utils/validation.js.map +1 -1
  42. package/package.json +1 -1
@@ -0,0 +1,283 @@
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.HttpTransport = void 0;
7
+ const express_1 = __importDefault(require("express"));
8
+ const cors_1 = __importDefault(require("cors"));
9
+ const base_js_1 = require("./base.js");
10
+ const logger_js_1 = require("../utils/logger.js");
11
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
12
+ class HttpTransport extends base_js_1.BaseTransport {
13
+ app;
14
+ httpServer;
15
+ config;
16
+ sseConnections = new Map();
17
+ eventCounter = 0;
18
+ handlers;
19
+ constructor(server, config, handlers) {
20
+ super(server);
21
+ this.config = {
22
+ ...{
23
+ port: 3000,
24
+ host: 'localhost',
25
+ enableSSE: true,
26
+ corsOrigins: ['http://localhost:*']
27
+ },
28
+ ...config
29
+ };
30
+ this.handlers = handlers || new Map();
31
+ this.app = (0, express_1.default)();
32
+ this.setupMiddleware();
33
+ this.setupRoutes();
34
+ }
35
+ setupMiddleware() {
36
+ this.app.use(express_1.default.json({ limit: '10mb' }));
37
+ const corsOptions = {
38
+ origin: this.config.corsOrigins || ['http://localhost:*'],
39
+ methods: ['GET', 'POST', 'OPTIONS'],
40
+ allowedHeaders: ['Content-Type', 'Accept', 'Origin', 'Last-Event-ID'],
41
+ credentials: true
42
+ };
43
+ this.app.use((0, cors_1.default)(corsOptions));
44
+ this.app.use((req, res, next) => {
45
+ logger_js_1.logger.debug(`HTTP ${req.method} ${req.path}`, {
46
+ origin: req.get('Origin'),
47
+ userAgent: req.get('User-Agent')
48
+ });
49
+ next();
50
+ });
51
+ }
52
+ setupRoutes() {
53
+ logger_js_1.logger.info('Setting up HTTP routes...');
54
+ this.app.get('/health', (req, res) => {
55
+ logger_js_1.logger.info('Health endpoint accessed');
56
+ res.json({
57
+ status: 'ok',
58
+ transport: 'http',
59
+ version: '1.0.5',
60
+ timestamp: new Date().toISOString()
61
+ });
62
+ });
63
+ this.app.post('/mcp', (req, res) => {
64
+ logger_js_1.logger.info('MCP POST route hit!');
65
+ this.handleMCPRequest(req, res);
66
+ });
67
+ if (this.config.enableSSE) {
68
+ this.app.get('/mcp', this.handleSSEConnection.bind(this));
69
+ }
70
+ }
71
+ async handleMCPRequest(req, res) {
72
+ try {
73
+ logger_js_1.logger.info('=== HTTP MCP Request received ===');
74
+ logger_js_1.logger.info('Request body:', req.body);
75
+ const acceptHeader = req.get('Accept') || '';
76
+ const supportsSSE = acceptHeader.includes('text/event-stream');
77
+ if (!req.body) {
78
+ res.status(400).json({
79
+ jsonrpc: '2.0',
80
+ error: { code: types_js_1.ErrorCode.InvalidRequest, message: 'Invalid Request: Missing body' },
81
+ id: 0
82
+ });
83
+ return;
84
+ }
85
+ const message = req.body;
86
+ if (Array.isArray(message)) {
87
+ const responses = await Promise.all(message.map(msg => this.processMessage(msg)));
88
+ res.json(responses.filter(r => r !== null));
89
+ }
90
+ else {
91
+ const response = await this.processMessage(message);
92
+ if (response) {
93
+ res.json(response);
94
+ }
95
+ else {
96
+ res.status(204).send();
97
+ }
98
+ }
99
+ }
100
+ catch (error) {
101
+ logger_js_1.logger.error('Error handling MCP request:', error);
102
+ res.status(500).json({
103
+ jsonrpc: '2.0',
104
+ error: {
105
+ code: types_js_1.ErrorCode.InternalError,
106
+ message: 'Internal error',
107
+ data: error instanceof Error ? error.message : 'Unknown error'
108
+ },
109
+ id: 0
110
+ });
111
+ }
112
+ }
113
+ async processMessage(message) {
114
+ try {
115
+ logger_js_1.logger.info('Processing message:', message);
116
+ if ('method' in message && 'id' in message) {
117
+ const request = message;
118
+ logger_js_1.logger.info('Processing request:', request.method);
119
+ if (request.method === 'tools/list') {
120
+ logger_js_1.logger.info('Handling tools/list, handlers count:', this.handlers.size);
121
+ const tools = Array.from(this.handlers.values()).map(handler => ({
122
+ name: handler.getName(),
123
+ description: handler.getDescription(),
124
+ inputSchema: handler.getInputSchema(),
125
+ }));
126
+ return {
127
+ jsonrpc: '2.0',
128
+ result: { tools },
129
+ id: request.id
130
+ };
131
+ }
132
+ else if (request.method === 'tools/call') {
133
+ const { name, arguments: args } = request.params || {};
134
+ if (!name) {
135
+ return {
136
+ jsonrpc: '2.0',
137
+ error: {
138
+ code: types_js_1.ErrorCode.InvalidParams,
139
+ message: 'Tool name is required'
140
+ },
141
+ id: request.id
142
+ };
143
+ }
144
+ const handler = this.handlers.get(name);
145
+ if (!handler) {
146
+ return {
147
+ jsonrpc: '2.0',
148
+ error: {
149
+ code: types_js_1.ErrorCode.MethodNotFound,
150
+ message: `Unknown tool: ${name}`
151
+ },
152
+ id: request.id
153
+ };
154
+ }
155
+ const result = await handler.handle({ name, arguments: args ?? {} });
156
+ return {
157
+ jsonrpc: '2.0',
158
+ result,
159
+ id: request.id
160
+ };
161
+ }
162
+ else {
163
+ return {
164
+ jsonrpc: '2.0',
165
+ error: {
166
+ code: types_js_1.ErrorCode.MethodNotFound,
167
+ message: `Method not found: ${request.method}`
168
+ },
169
+ id: request.id
170
+ };
171
+ }
172
+ }
173
+ }
174
+ catch (error) {
175
+ logger_js_1.logger.error('Error processing message:', error);
176
+ const messageId = ('id' in message) ? message.id : 0;
177
+ return {
178
+ jsonrpc: '2.0',
179
+ error: {
180
+ code: types_js_1.ErrorCode.InternalError,
181
+ message: 'Internal error',
182
+ data: error instanceof Error ? error.message : 'Unknown error'
183
+ },
184
+ id: messageId
185
+ };
186
+ }
187
+ return null;
188
+ }
189
+ handleSSEConnection(req, res) {
190
+ const connectionId = `conn_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
191
+ const lastEventId = parseInt(req.get('Last-Event-ID') || '0', 10);
192
+ res.writeHead(200, {
193
+ 'Content-Type': 'text/event-stream',
194
+ 'Cache-Control': 'no-cache',
195
+ 'Connection': 'keep-alive',
196
+ 'Access-Control-Allow-Origin': req.get('Origin') || '*',
197
+ 'Access-Control-Allow-Credentials': 'true'
198
+ });
199
+ const connection = {
200
+ id: connectionId,
201
+ response: res,
202
+ lastEventId
203
+ };
204
+ this.sseConnections.set(connectionId, connection);
205
+ logger_js_1.logger.info(`SSE connection established: ${connectionId}`);
206
+ res.write(`data: ${JSON.stringify({
207
+ type: 'connection',
208
+ connectionId,
209
+ timestamp: new Date().toISOString()
210
+ })}\n\n`);
211
+ req.on('close', () => {
212
+ this.sseConnections.delete(connectionId);
213
+ logger_js_1.logger.info(`SSE connection closed: ${connectionId}`);
214
+ });
215
+ req.on('error', (error) => {
216
+ logger_js_1.logger.error(`SSE connection error: ${connectionId}`, error);
217
+ this.sseConnections.delete(connectionId);
218
+ });
219
+ }
220
+ broadcastToSSE(message) {
221
+ const eventId = ++this.eventCounter;
222
+ const data = JSON.stringify(message);
223
+ for (const [connectionId, connection] of this.sseConnections) {
224
+ try {
225
+ connection.response.write(`id: ${eventId}\ndata: ${data}\n\n`);
226
+ connection.lastEventId = eventId;
227
+ }
228
+ catch (error) {
229
+ logger_js_1.logger.error(`Error sending SSE to ${connectionId}:`, error);
230
+ this.sseConnections.delete(connectionId);
231
+ }
232
+ }
233
+ }
234
+ async start() {
235
+ logger_js_1.logger.info('Starting HTTP transport...', this.config);
236
+ return new Promise((resolve, reject) => {
237
+ try {
238
+ this.httpServer = this.app.listen(this.config.port, this.config.host, () => {
239
+ logger_js_1.logger.info(`Serpstat MCP Server started on HTTP transport at http://${this.config.host}:${this.config.port}`);
240
+ logger_js_1.logger.info(`Health check available at: http://${this.config.host}:${this.config.port}/health`);
241
+ logger_js_1.logger.info(`MCP endpoint available at: http://${this.config.host}:${this.config.port}/mcp`);
242
+ if (this.config.enableSSE) {
243
+ logger_js_1.logger.info(`SSE endpoint available at: http://${this.config.host}:${this.config.port}/mcp (GET)`);
244
+ }
245
+ resolve();
246
+ });
247
+ this.httpServer?.on('error', (error) => {
248
+ logger_js_1.logger.error('HTTP server error:', error);
249
+ reject(error);
250
+ });
251
+ }
252
+ catch (error) {
253
+ logger_js_1.logger.error('Error starting HTTP server:', error);
254
+ reject(error);
255
+ }
256
+ });
257
+ }
258
+ async stop() {
259
+ return new Promise((resolve) => {
260
+ for (const connection of this.sseConnections.values()) {
261
+ connection.response.end();
262
+ }
263
+ this.sseConnections.clear();
264
+ if (this.httpServer) {
265
+ this.httpServer.close(() => {
266
+ logger_js_1.logger.info('HTTP transport stopped');
267
+ resolve();
268
+ });
269
+ }
270
+ else {
271
+ resolve();
272
+ }
273
+ });
274
+ }
275
+ getTransportType() {
276
+ return 'http';
277
+ }
278
+ getConnectionCount() {
279
+ return this.sseConnections.size;
280
+ }
281
+ }
282
+ exports.HttpTransport = HttpTransport;
283
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transports/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { BaseTransport } from './base.js';
2
+ export declare class StdioTransport extends BaseTransport {
3
+ private transport?;
4
+ start(): Promise<void>;
5
+ stop(): Promise<void>;
6
+ getTransportType(): string;
7
+ }
8
+ //# sourceMappingURL=stdio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG1C,qBAAa,cAAe,SAAQ,aAAa;IAC7C,OAAO,CAAC,SAAS,CAAC,CAAuB;IAEnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,gBAAgB,IAAI,MAAM;CAG7B"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StdioTransport = void 0;
4
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
5
+ const base_js_1 = require("./base.js");
6
+ const logger_js_1 = require("../utils/logger.js");
7
+ class StdioTransport extends base_js_1.BaseTransport {
8
+ transport;
9
+ async start() {
10
+ this.transport = new stdio_js_1.StdioServerTransport();
11
+ await this.server.connect(this.transport);
12
+ logger_js_1.logger.info('Serpstat MCP Server started on stdio transport');
13
+ }
14
+ async stop() {
15
+ if (this.transport) {
16
+ await this.transport.close();
17
+ logger_js_1.logger.info('Stdio transport stopped');
18
+ }
19
+ }
20
+ getTransportType() {
21
+ return 'stdio';
22
+ }
23
+ }
24
+ exports.StdioTransport = StdioTransport;
25
+ //# sourceMappingURL=stdio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":";;;AAAA,wEAAiF;AACjF,uCAA0C;AAC1C,kDAA4C;AAE5C,MAAa,cAAe,SAAQ,uBAAa;IACrC,SAAS,CAAwB;IAEzC,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;QAC5C,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,kBAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC7B,kBAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC3C,CAAC;IACL,CAAC;IAED,gBAAgB;QACZ,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAnBD,wCAmBC"}