@disruptorganic/mcp-google-search-console 1.0.5 → 2.0.0

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 (68) hide show
  1. package/.env.example +70 -112
  2. package/README.md +0 -0
  3. package/dist/auth/account-lock.d.ts +26 -0
  4. package/dist/auth/account-lock.d.ts.map +1 -0
  5. package/dist/auth/account-lock.js +72 -0
  6. package/dist/auth/account-lock.js.map +1 -0
  7. package/dist/auth/oauth2.d.ts.map +1 -1
  8. package/dist/auth/oauth2.js +17 -33
  9. package/dist/auth/oauth2.js.map +1 -1
  10. package/dist/auth/token-validator.d.ts +18 -0
  11. package/dist/auth/token-validator.d.ts.map +1 -0
  12. package/dist/auth/token-validator.js +175 -0
  13. package/dist/auth/token-validator.js.map +1 -0
  14. package/dist/config/index.d.ts +15 -22
  15. package/dist/config/index.d.ts.map +1 -1
  16. package/dist/config/index.js +89 -79
  17. package/dist/config/index.js.map +1 -1
  18. package/dist/index.js +118 -70
  19. package/dist/index.js.map +1 -1
  20. package/dist/server/http.d.ts +36 -0
  21. package/dist/server/http.d.ts.map +1 -0
  22. package/dist/server/http.js +394 -0
  23. package/dist/server/http.js.map +1 -0
  24. package/dist/tools/compare-date-ranges.d.ts +1 -1
  25. package/dist/tools/compare-date-ranges.d.ts.map +1 -1
  26. package/dist/tools/compare-date-ranges.js +13 -12
  27. package/dist/tools/compare-date-ranges.js.map +1 -1
  28. package/dist/tools/get-property-info.d.ts +1 -1
  29. package/dist/tools/get-property-info.d.ts.map +1 -1
  30. package/dist/tools/get-property-info.js +13 -12
  31. package/dist/tools/get-property-info.js.map +1 -1
  32. package/dist/tools/get-top-pages.d.ts +1 -1
  33. package/dist/tools/get-top-pages.d.ts.map +1 -1
  34. package/dist/tools/get-top-pages.js +13 -12
  35. package/dist/tools/get-top-pages.js.map +1 -1
  36. package/dist/tools/get-top-queries.d.ts +1 -1
  37. package/dist/tools/get-top-queries.d.ts.map +1 -1
  38. package/dist/tools/get-top-queries.js +13 -12
  39. package/dist/tools/get-top-queries.js.map +1 -1
  40. package/dist/tools/health-check.d.ts +1 -1
  41. package/dist/tools/health-check.d.ts.map +1 -1
  42. package/dist/tools/health-check.js +24 -32
  43. package/dist/tools/health-check.js.map +1 -1
  44. package/dist/tools/index.d.ts +3 -19
  45. package/dist/tools/index.d.ts.map +1 -1
  46. package/dist/tools/index.js +0 -3
  47. package/dist/tools/index.js.map +1 -1
  48. package/dist/tools/list-properties.d.ts +1 -1
  49. package/dist/tools/list-properties.d.ts.map +1 -1
  50. package/dist/tools/list-properties.js +13 -12
  51. package/dist/tools/list-properties.js.map +1 -1
  52. package/dist/tools/query-advanced.d.ts +1 -1
  53. package/dist/tools/query-advanced.d.ts.map +1 -1
  54. package/dist/tools/query-advanced.js +13 -12
  55. package/dist/tools/query-advanced.js.map +1 -1
  56. package/dist/tools/query-by-keyword.d.ts +1 -1
  57. package/dist/tools/query-by-keyword.d.ts.map +1 -1
  58. package/dist/tools/query-by-keyword.js +13 -12
  59. package/dist/tools/query-by-keyword.js.map +1 -1
  60. package/dist/tools/query-by-url.d.ts +1 -1
  61. package/dist/tools/query-by-url.d.ts.map +1 -1
  62. package/dist/tools/query-by-url.js +13 -12
  63. package/dist/tools/query-by-url.js.map +1 -1
  64. package/package.json +20 -9
  65. package/dist/tools/auth.d.ts +0 -51
  66. package/dist/tools/auth.d.ts.map +0 -1
  67. package/dist/tools/auth.js +0 -83
  68. package/dist/tools/auth.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,16 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
3
  import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
5
- import { GSCAuth } from './auth/oauth2.js';
4
+ import { OAuth2Client } from 'google-auth-library';
6
5
  import { GSCClient } from './gsc/client.js';
7
6
  import { allTools, toolHandlers, getToolStats } from './tools/index.js';
8
7
  import { logger } from './utils/logger.js';
9
- import { getEnvironment } from './config/index.js';
10
- const SERVER_VERSION = '1.0.0';
8
+ import { config, logConfiguration, getEnvironment } from './config/index.js';
9
+ import { createHttpServer } from './server/http.js';
10
+ const SERVER_VERSION = '2.0.0';
11
11
  const SERVER_NAME = 'google-search-console-mcp';
12
- let gscClient = null;
13
- let clientInitializationPromise = null;
12
+ let httpServer = null;
14
13
  const server = new Server({
15
14
  name: SERVER_NAME,
16
15
  version: SERVER_VERSION,
@@ -19,44 +18,17 @@ const server = new Server({
19
18
  tools: {},
20
19
  },
21
20
  });
22
- async function initializeClient() {
23
- if (gscClient) {
24
- logger.debug('Returning existing GSC client');
25
- return gscClient;
26
- }
27
- if (clientInitializationPromise) {
28
- logger.debug('Waiting for ongoing client initialization');
29
- return clientInitializationPromise;
30
- }
31
- logger.info('Initializing Google Search Console client...');
32
- clientInitializationPromise = (async () => {
33
- try {
34
- const authManager = new GSCAuth();
35
- const oauth2Client = await authManager.getAuthenticatedClient();
36
- logger.info('Using cached OAuth2 tokens (auto-refresh enabled)');
37
- gscClient = new GSCClient(oauth2Client);
38
- const isValid = await gscClient.validateConnection();
39
- if (!isValid) {
40
- throw new Error('Failed to validate GSC API connection');
41
- }
42
- logger.info('GSC client initialized and validated successfully');
43
- return gscClient;
44
- }
45
- catch (error) {
46
- clientInitializationPromise = null;
47
- logger.error('Failed to initialize GSC client', {
48
- error: error instanceof Error ? error.message : String(error),
49
- });
50
- if (error instanceof Error && error.message.includes('Configuration Error')) {
51
- throw new Error(`Configuration Error: The server configuration is invalid.\n\n${error.message}\n\nPlease check your environment variables or .env file.`);
52
- }
53
- if (error instanceof Error && error.message.includes('not authenticated')) {
54
- throw new Error('Authentication required. Please run authentication setup first. See docs/AUTHENTICATION_SETUP.md');
55
- }
56
- throw error;
57
- }
58
- })();
59
- return clientInitializationPromise;
21
+ function createGSCClientFromToken(accessToken) {
22
+ logger.debug('Creating ephemeral GSC client from access token', {
23
+ tokenPrefix: accessToken.substring(0, 8),
24
+ });
25
+ const oauth2Client = new OAuth2Client();
26
+ oauth2Client.setCredentials({
27
+ access_token: accessToken,
28
+ });
29
+ const client = new GSCClient(oauth2Client);
30
+ logger.debug('Ephemeral GSC client created successfully');
31
+ return client;
60
32
  }
61
33
  server.setRequestHandler(ListToolsRequestSchema, async () => {
62
34
  logger.debug('Listing available tools', { count: allTools.length });
@@ -86,22 +58,16 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
86
58
  isError: true,
87
59
  };
88
60
  }
89
- const isAuthTool = ['authenticate', 'check_authentication', 'logout'].includes(name);
90
- let result;
91
- if (isAuthTool) {
92
- logger.debug('Executing auth tool handler', { tool: name });
93
- result = await handler(params || {});
94
- }
95
- else {
96
- const client = await initializeClient();
97
- logger.debug('Executing tool handler', { tool: name });
98
- result = await handler(params || {}, client);
99
- }
100
- logger.info('Tool executed successfully', {
101
- tool: name,
102
- hasError: result.isError || false,
103
- });
104
- return result;
61
+ logger.warn('Tool called without HTTP authentication context', { tool: name });
62
+ return {
63
+ content: [
64
+ {
65
+ type: 'text',
66
+ text: 'Authentication required. Please use the HTTP endpoint with proper OAuth 2.1 authentication.',
67
+ },
68
+ ],
69
+ isError: true,
70
+ };
105
71
  }
106
72
  catch (error) {
107
73
  const errorMessage = error instanceof Error ? error.message : String(error);
@@ -125,11 +91,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
125
91
  async function shutdown(signal) {
126
92
  logger.info(`Received ${signal}, shutting down gracefully...`);
127
93
  try {
128
- if (gscClient) {
129
- const rateLimitStatus = gscClient.getRateLimitStatus();
130
- logger.info('Final rate limiter statistics', rateLimitStatus);
131
- const toolStats = getToolStats();
132
- logger.info('Tool statistics', toolStats);
94
+ const toolStats = getToolStats();
95
+ logger.info('Tool statistics', toolStats);
96
+ if (httpServer) {
97
+ await httpServer.stop();
133
98
  }
134
99
  await server.close();
135
100
  logger.info('Server shut down successfully');
@@ -151,10 +116,12 @@ async function main() {
151
116
  platform: process.platform,
152
117
  environment: getEnvironment(),
153
118
  });
119
+ logConfiguration();
154
120
  const toolStats = getToolStats();
155
121
  logger.info('Server configuration', {
156
122
  totalTools: toolStats.total,
157
123
  tools: toolStats.names,
124
+ authMode: 'OAuth 2.1 (Google token passthrough with account locking)',
158
125
  });
159
126
  logger.debug('Tool details', {
160
127
  tools: toolStats.tools.map((t) => ({
@@ -179,12 +146,93 @@ async function main() {
179
146
  });
180
147
  shutdown('unhandledRejection');
181
148
  });
182
- const transport = new StdioServerTransport();
183
- await server.connect(transport);
184
- logger.info('MCP Server started successfully and listening on stdio');
149
+ httpServer = createHttpServer(server, { port: config.port });
150
+ httpServer.setToolCallHandler(async (name, args, userEmail, accessToken) => {
151
+ logger.info('Tool called via HTTP', {
152
+ tool: name,
153
+ hasParams: !!args,
154
+ paramKeys: args ? Object.keys(args) : [],
155
+ user: userEmail,
156
+ hasAccessToken: !!accessToken,
157
+ });
158
+ try {
159
+ const handler = toolHandlers[name];
160
+ if (!handler) {
161
+ const availableTools = Object.keys(toolHandlers).join(', ');
162
+ logger.error('Tool not found', { tool: name, availableTools });
163
+ return {
164
+ content: [
165
+ {
166
+ type: 'text',
167
+ text: `Unknown tool: ${name}\n\nAvailable tools: ${availableTools}`,
168
+ },
169
+ ],
170
+ isError: true,
171
+ };
172
+ }
173
+ let client = null;
174
+ if (name !== 'health_check') {
175
+ if (!accessToken) {
176
+ logger.error('Access token missing for data tool', { tool: name });
177
+ return {
178
+ content: [
179
+ {
180
+ type: 'text',
181
+ text: 'Authentication required. Access token not provided.',
182
+ },
183
+ ],
184
+ isError: true,
185
+ };
186
+ }
187
+ client = createGSCClientFromToken(accessToken);
188
+ logger.debug('Ephemeral GSC client created for tool execution', {
189
+ tool: name,
190
+ user: userEmail,
191
+ });
192
+ }
193
+ logger.debug('Executing tool handler', { tool: name, user: userEmail });
194
+ const result = await handler(args || {}, client);
195
+ logger.info('Tool executed successfully', {
196
+ tool: name,
197
+ hasError: result.isError || false,
198
+ user: userEmail,
199
+ });
200
+ return result;
201
+ }
202
+ catch (error) {
203
+ const errorMessage = error instanceof Error ? error.message : String(error);
204
+ const errorStack = error instanceof Error ? error.stack : undefined;
205
+ logger.error('Tool execution failed', {
206
+ tool: name,
207
+ error: errorMessage,
208
+ stack: errorStack,
209
+ user: userEmail,
210
+ });
211
+ return {
212
+ content: [
213
+ {
214
+ type: 'text',
215
+ text: `Error executing ${name}: ${errorMessage}`,
216
+ },
217
+ ],
218
+ isError: true,
219
+ };
220
+ }
221
+ });
222
+ await httpServer.start();
223
+ logger.info('MCP Server started successfully', {
224
+ transport: 'HTTP',
225
+ url: `http://localhost:${config.port}`,
226
+ endpoints: [
227
+ '/.well-known/oauth-protected-resource',
228
+ '/health',
229
+ '/auth/status',
230
+ '/mcp',
231
+ ],
232
+ authMode: 'OAuth 2.1 (Google token passthrough)',
233
+ });
185
234
  logger.info(`Available tools: ${toolStats.names.join(', ')}`);
186
- logger.info('Client will be initialized on first tool call (lazy initialization)');
187
- logger.info('Configuration will be validated when tools are called');
235
+ logger.info('Authentication: Google OAuth 2.1 via Claude Code (single-user account locking)');
188
236
  }
189
237
  catch (error) {
190
238
  logger.error('Failed to start server', {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import express from 'express';
2
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
+ declare global {
4
+ namespace Express {
5
+ interface Request {
6
+ user?: {
7
+ email: string;
8
+ userId: string;
9
+ accessToken: string;
10
+ scope?: string;
11
+ };
12
+ }
13
+ }
14
+ }
15
+ export interface HttpServerConfig {
16
+ port: number;
17
+ host?: string;
18
+ }
19
+ export type ToolCallHandler = (name: string, args: any, userEmail?: string, accessToken?: string) => Promise<any>;
20
+ export declare class HttpServer {
21
+ private app;
22
+ private server;
23
+ private config;
24
+ private toolCallHandler;
25
+ constructor(_mcpServer: Server, config: HttpServerConfig);
26
+ setToolCallHandler(handler: ToolCallHandler): void;
27
+ private setupRoutes;
28
+ private handleToolsList;
29
+ private handleToolsCall;
30
+ private handleInitialize;
31
+ start(): Promise<void>;
32
+ stop(): Promise<void>;
33
+ getApp(): express.Application;
34
+ }
35
+ export declare function createHttpServer(mcpServer: Server, config: HttpServerConfig): HttpServer;
36
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"AAqDA,OAAO,OAA4C,MAAM,SAAS,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,OAAO,CAAC;QAChB,UAAU,OAAO;YACf,IAAI,CAAC,EAAE;gBACL,KAAK,EAAE,MAAM,CAAC;gBACd,MAAM,EAAE,MAAM,CAAC;gBACf,WAAW,EAAE,MAAM,CAAC;gBACpB,KAAK,CAAC,EAAE,MAAM,CAAC;aAChB,CAAC;SACH;KACF;CACF;AAwCD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAqQD,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAKlH,qBAAa,UAAU;IACrB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,eAAe,CAAgC;gBAE3C,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB;IAYxD,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAOlD,OAAO,CAAC,WAAW;YA+JL,eAAe;YAmBf,eAAe;YA8Bf,gBAAgB;IAkBxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwCtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B3B,MAAM,IAAI,OAAO,CAAC,WAAW;CAG9B;AAKD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAExF"}