@digestseo/mcp-gsc 0.4.18 → 0.4.19
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 +7 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/scripts/glama-start.mjs +3 -2
- package/src/google.ts +18 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.19] - 2026-09-22
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- Search Analytics freshness metadata now normalizes Google's camelCase `firstIncompleteDate` / `firstIncompleteHour` wire fields into the stable MCP `first_incomplete_date` / `first_incomplete_hour` response contract.
|
|
14
|
+
- The npm launcher now exits deterministically after its Wrangler child terminates by signal instead of re-signalling itself while its own `SIGINT`/`SIGTERM` listeners are installed, preventing wrapper processes from lingering after Ctrl+C or supervisor shutdown on POSIX systems.
|
|
15
|
+
- ChatGPT local-launcher guidance now explicitly requires Secure MCP Tunnel for the loopback `127.0.0.1` endpoint, or a separately deployed remote Worker, instead of implying that ChatGPT can connect directly to localhost.
|
|
16
|
+
|
|
10
17
|
## [0.4.18] - 2026-09-22
|
|
11
18
|
|
|
12
19
|
### Fixed
|
package/README.md
CHANGED
|
@@ -62,7 +62,7 @@ claude mcp add --transport http gsc http://127.0.0.1:8080/mcp
|
|
|
62
62
|
|
|
63
63
|
Start the npm launcher before using either install button. Complete its Google OAuth flow on first use.
|
|
64
64
|
|
|
65
|
-
**ChatGPT** — add
|
|
65
|
+
**ChatGPT** — ChatGPT cannot connect directly to this loopback `127.0.0.1` endpoint. Use OpenAI's **Secure MCP Tunnel** for the local launcher, or deploy your own remote Cloudflare Worker and add that `/mcp` URL as a custom MCP app in Developer mode; see [Connect in your AI client](#connect-in-your-ai-client) below.
|
|
66
66
|
|
|
67
67
|
A self-hostable [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server for **Google Search Console**. Connect it to Claude.ai, Cursor, ChatGPT, or any MCP-compatible client and ask your AI assistant about your site's organic search performance — impressions, clicks, top queries, index status, and sitemap health — straight from your own Google account.
|
|
68
68
|
|
package/package.json
CHANGED
package/scripts/glama-start.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { homedir } from 'node:os';
|
|
3
|
+
import { constants, homedir } from 'node:os';
|
|
4
4
|
import { resolve } from 'node:path';
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
6
|
|
|
@@ -51,7 +51,8 @@ process.on('SIGTERM', () => forwardSignal('SIGTERM'));
|
|
|
51
51
|
|
|
52
52
|
child.on('exit', (code, signal) => {
|
|
53
53
|
if (signal) {
|
|
54
|
-
|
|
54
|
+
const signalNumber = constants.signals[signal];
|
|
55
|
+
process.exit(signalNumber === undefined ? 1 : 128 + signalNumber);
|
|
55
56
|
} else {
|
|
56
57
|
process.exit(code ?? 1);
|
|
57
58
|
}
|
package/src/google.ts
CHANGED
|
@@ -407,6 +407,11 @@ export interface SearchAnalyticsResponseMetadata {
|
|
|
407
407
|
first_incomplete_hour?: string;
|
|
408
408
|
}
|
|
409
409
|
|
|
410
|
+
interface GoogleSearchAnalyticsResponseMetadata {
|
|
411
|
+
firstIncompleteDate?: string;
|
|
412
|
+
firstIncompleteHour?: string;
|
|
413
|
+
}
|
|
414
|
+
|
|
410
415
|
export interface SearchAnalyticsResponse {
|
|
411
416
|
rows: SearchAnalyticsRow[];
|
|
412
417
|
responseAggregationType?: string;
|
|
@@ -610,14 +615,25 @@ export async function querySearchAnalytics(
|
|
|
610
615
|
const data = (await resp.json()) as {
|
|
611
616
|
rows?: SearchAnalyticsRow[];
|
|
612
617
|
responseAggregationType?: string;
|
|
613
|
-
metadata?:
|
|
618
|
+
metadata?: GoogleSearchAnalyticsResponseMetadata;
|
|
614
619
|
};
|
|
620
|
+
const metadata: SearchAnalyticsResponseMetadata | undefined =
|
|
621
|
+
data.metadata === undefined
|
|
622
|
+
? undefined
|
|
623
|
+
: {
|
|
624
|
+
...(data.metadata.firstIncompleteDate !== undefined
|
|
625
|
+
? { first_incomplete_date: data.metadata.firstIncompleteDate }
|
|
626
|
+
: {}),
|
|
627
|
+
...(data.metadata.firstIncompleteHour !== undefined
|
|
628
|
+
? { first_incomplete_hour: data.metadata.firstIncompleteHour }
|
|
629
|
+
: {}),
|
|
630
|
+
};
|
|
615
631
|
return {
|
|
616
632
|
rows: data.rows ?? [],
|
|
617
633
|
...(data.responseAggregationType !== undefined
|
|
618
634
|
? { responseAggregationType: data.responseAggregationType }
|
|
619
635
|
: {}),
|
|
620
|
-
...(
|
|
636
|
+
...(metadata !== undefined ? { metadata } : {}),
|
|
621
637
|
};
|
|
622
638
|
}
|
|
623
639
|
|