@disruptorganic/mcp-google-search-console 1.0.0 → 1.0.1

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/.env.example CHANGED
@@ -2,38 +2,18 @@
2
2
  # Google Search Console MCP Server Configuration
3
3
  # ============================================
4
4
  #
5
- # This file is a template for setting up your environment variables.
6
- # Copy this file to .env and fill in your actual values.
5
+ # This file is a template for optional environment variables.
6
+ # Copy this file to .env and customize as needed.
7
7
  #
8
- # IMPORTANT: Never commit your .env file to version control!
9
- # The .gitignore file is already configured to exclude it.
8
+ # IMPORTANT: OAuth2 credentials are now embedded in the package.
9
+ # You do NOT need to create your own Google Cloud project or credentials.
10
10
 
11
11
  # =============================================================================
12
- # REQUIRED: Google OAuth2 Credentials
12
+ # AUTHENTICATION
13
13
  # =============================================================================
14
14
  #
15
- # These credentials are required for authenticating with the Google Search Console API.
16
- #
17
- # How to obtain OAuth2 credentials:
18
- #
19
- # 1. Go to Google Cloud Console: https://console.cloud.google.com/
20
- # 2. Create a new project or select an existing one
21
- # 3. Enable the Google Search Console API:
22
- # - Navigate to "APIs & Services" > "Library"
23
- # - Search for "Google Search Console API"
24
- # - Click "Enable"
25
- # 4. Create OAuth 2.0 credentials:
26
- # - Navigate to "APIs & Services" > "Credentials"
27
- # - Click "Create Credentials" > "OAuth client ID"
28
- # - Choose "Desktop app" as the application type
29
- # - Give it a name (e.g., "MCP GSC Server")
30
- # - Click "Create"
31
- # 5. Copy the Client ID and Client Secret from the dialog
32
- #
33
- # Format: The Client ID typically ends with .apps.googleusercontent.com
34
-
35
- GSC_CLIENT_ID=123456789012-abcdefghijklmnopqrstuvwxyz123456.apps.googleusercontent.com
36
- GSC_CLIENT_SECRET=GOCSPX-abcdefghijklmnopqrstuvwxyz
15
+ # OAuth2 credentials are pre-configured and embedded in this package.
16
+ # No setup required - just install and authenticate on first use!
37
17
 
38
18
  # =============================================================================
39
19
  # OPTIONAL: Token Storage Configuration
@@ -106,36 +86,30 @@ GSC_CLIENT_SECRET=GOCSPX-abcdefghijklmnopqrstuvwxyz
106
86
  # =============================================================================
107
87
  #
108
88
  # Quick Start:
109
- # 1. Copy this file: cp .env.example .env
110
- # 2. Edit .env and add your GSC_CLIENT_ID and GSC_CLIENT_SECRET
111
- # 3. Run the test script: npm run test:auth
112
- # 4. Follow the authentication flow in your browser
113
- # 5. The tokens will be saved automatically
89
+ # 1. Install the package: claude mcp add --transport stdio google-search-console -- npx -y @disruptorganic/mcp-google-search-console
90
+ # 2. On first use, authenticate via browser (one-time setup)
91
+ # 3. Done! No additional configuration needed.
114
92
  #
115
93
  # First-Time Authentication Flow:
116
94
  # When you first run the server, it will:
117
95
  # 1. Check for existing tokens at the configured token path
118
- # 2. If no tokens exist, initiate the OAuth2 device flow
96
+ # 2. If no tokens exist, initiate the OAuth2 authentication flow
119
97
  # 3. Display a URL and code in the terminal
120
- # 4. You visit the URL in your browser and enter the code
98
+ # 4. You visit the URL in your browser and authorize access
121
99
  # 5. After authorization, tokens are saved and the server starts
122
100
  # 6. Subsequent runs use the saved tokens (with automatic refresh)
123
101
  #
124
102
  # Security Best Practices:
125
- # - Never commit your .env file to version control
126
- # - Keep your Client Secret confidential
127
- # - Store tokens in a secure location with restricted permissions
128
- # - Rotate credentials if they are ever exposed
129
- # - Use separate OAuth2 clients for development and production
103
+ # - Tokens are stored with secure file permissions (0600)
104
+ # - Tokens automatically refresh before expiry
105
+ # - Read-only access to Search Console data
130
106
  #
131
107
  # Troubleshooting:
132
- # - "Configuration Error": Ensure GSC_CLIENT_ID and GSC_CLIENT_SECRET are set
133
- # - "Invalid credentials": Verify your OAuth2 credentials in Google Cloud Console
134
- # - "API not enabled": Enable the Google Search Console API in your project
135
- # - "Token expired": The server will automatically refresh tokens if possible
136
- # - "Permission denied": Check file permissions on the token storage directory
108
+ # - "Authentication required": Follow the browser authentication flow
109
+ # - "Token expired": Tokens will automatically refresh
110
+ # - "Permission denied": Check token file permissions at ~/.mcp-gsc/tokens.json
137
111
  #
138
112
  # For more information, see:
139
113
  # - README.md
140
- # - docs/authentication-setup.md
114
+ # - docs/USER_GUIDE.md
141
115
  # - https://developers.google.com/webmaster-tools/v1/how-tos/authorizing
package/README.md CHANGED
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoBxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;EAuDhB,CAAC;AASH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAkFlD,eAAO,MAAM,MAAM;;;;;;CAAe,CAAC;AASnC,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAKD,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAKD,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAKD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAUD,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASzD;AAKD,wBAAgB,gBAAgB,IAAI,IAAI,CAMvC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;EAiDhB,CAAC;AASH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AA+ElD,eAAO,MAAM,MAAM;;;;;;CAAe,CAAC;AASnC,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAKD,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAKD,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAKD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAUD,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASzD;AAKD,wBAAgB,gBAAgB,IAAI,IAAI,CAMvC"}
@@ -1,17 +1,19 @@
1
1
  import { z } from 'zod';
2
2
  import * as path from 'path';
3
3
  import * as os from 'os';
4
+ const EMBEDDED_CLIENT_ID = '34697290414-f3416jghvqmstm167lklfo1lbddnlsf4.apps.googleusercontent.com';
5
+ const EMBEDDED_CLIENT_SECRET = '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';
4
6
  const configSchema = z.object({
5
- clientId: z.string().min(1, 'GSC_CLIENT_ID is required'),
6
- clientSecret: z.string().min(1, 'GSC_CLIENT_SECRET is required'),
7
+ clientId: z.string().min(1, 'Client ID is required'),
8
+ clientSecret: z.string().min(1, 'Client Secret is required'),
7
9
  tokenPath: z.string().default(path.join(os.homedir(), '.mcp-gsc', 'tokens.json')),
8
10
  redirectUri: z.string().default('urn:ietf:wg:oauth:2.0:oob'),
9
11
  logLevel: z.enum(['error', 'warn', 'info', 'debug']).default('info'),
10
12
  });
11
13
  function loadConfig() {
12
14
  const rawConfig = {
13
- clientId: process.env.GSC_CLIENT_ID,
14
- clientSecret: process.env.GSC_CLIENT_SECRET,
15
+ clientId: EMBEDDED_CLIENT_ID,
16
+ clientSecret: EMBEDDED_CLIENT_SECRET,
15
17
  tokenPath: process.env.GSC_TOKEN_PATH,
16
18
  redirectUri: process.env.GSC_REDIRECT_URI,
17
19
  logLevel: process.env.LOG_LEVEL,
@@ -28,26 +30,19 @@ function loadConfig() {
28
30
  })
29
31
  .join('\n');
30
32
  const errorMessage = `
31
- Configuration Error: Missing or invalid environment variables
33
+ Configuration Error: Invalid configuration
32
34
 
33
35
  ${missingFields}
34
36
 
35
- Please set the required environment variables:
36
- - GSC_CLIENT_ID: Your Google OAuth2 Client ID
37
- - GSC_CLIENT_SECRET: Your Google OAuth2 Client Secret
37
+ OAuth2 credentials are pre-configured and embedded in this package.
38
+ No setup required for authentication credentials.
38
39
 
39
40
  Optional environment variables (with defaults):
40
41
  - GSC_TOKEN_PATH: Token storage path (default: ~/.mcp-gsc/tokens.json)
41
42
  - GSC_REDIRECT_URI: OAuth redirect URI (default: urn:ietf:wg:oauth:2.0:oob)
42
43
  - LOG_LEVEL: Logging level (default: info, options: error, warn, info, debug)
43
44
 
44
- To obtain OAuth2 credentials:
45
- 1. Go to https://console.cloud.google.com/apis/credentials
46
- 2. Create a new OAuth 2.0 Client ID (Desktop application type)
47
- 3. Enable the Google Search Console API for your project
48
- 4. Copy the Client ID and Client Secret
49
-
50
- See .env.example for a complete configuration template.
45
+ See documentation for configuration details.
51
46
  `.trim();
52
47
  throw new Error(errorMessage);
53
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@disruptorganic/mcp-google-search-console",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Google Search Console MCP server for Claude Code - Query GSC data with AI",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",