@cyanheads/gdelt-mcp-server 0.2.0 → 0.2.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/CLAUDE.md +2 -2
- package/Dockerfile +6 -0
- package/README.md +1 -1
- package/changelog/0.2.x/0.2.1.md +28 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/server.json +3 -3
package/CLAUDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** gdelt-mcp-server
|
|
4
|
-
**Version:** 0.2.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.
|
|
4
|
+
**Version:** 0.2.1
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.10.6`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
8
8
|
**Zod:** ^4.4.3
|
package/Dockerfile
CHANGED
|
@@ -39,9 +39,12 @@ WORKDIR /usr/src/app
|
|
|
39
39
|
ENV NODE_ENV=production
|
|
40
40
|
|
|
41
41
|
# OCI image metadata (https://github.com/opencontainers/image-spec/blob/main/annotations.md)
|
|
42
|
+
ARG APP_VERSION
|
|
42
43
|
LABEL org.opencontainers.image.title="gdelt-mcp-server"
|
|
43
44
|
LABEL org.opencontainers.image.description="Search and analyze global news coverage and US television transcripts via the GDELT Project's real-time APIs via MCP."
|
|
44
45
|
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
|
46
|
+
LABEL org.opencontainers.image.version="${APP_VERSION}"
|
|
47
|
+
LABEL org.opencontainers.image.source="https://github.com/cyanheads/gdelt-mcp-server"
|
|
45
48
|
|
|
46
49
|
# Copy dependency manifests
|
|
47
50
|
COPY package.json bun.lock ./
|
|
@@ -96,5 +99,8 @@ ENV MCP_FORCE_CONSOLE_LOGGING="true"
|
|
|
96
99
|
# Expose the port the server listens on
|
|
97
100
|
EXPOSE ${MCP_HTTP_PORT}
|
|
98
101
|
|
|
102
|
+
# Health check using a bun-native fetch (slim image ships no curl/wget)
|
|
103
|
+
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD bun -e "fetch('http://localhost:'+(process.env.MCP_HTTP_PORT??'3010')+'/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
|
|
104
|
+
|
|
99
105
|
# The command to start the server
|
|
100
106
|
CMD ["bun", "run", "dist/index.js"]
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/gdelt-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/gdelt-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Adopt mcp-ts-core ^0.10.6, set explicit createApp name/title identity, MCPB bundle hygiene (clean-mcpb + packaging guards), Dockerfile healthcheck and version labels"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.2.1 — 2026-06-12
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`scripts/clean-mcpb.ts`** — post-pack bundle cleaner wired into the `bundle` script. Runs `mcpb clean` (dev-dependency prune) then strips dependency-shipped agent-doc entries (`skills/`, `.claude/`, `.agents/`, `SKILL.md`) nested under `node_modules/` that root-anchored `.mcpbignore` patterns cannot reach, and asserts zero remain.
|
|
12
|
+
- **`techniques` skill** — catalog of reusable response/data-shaping patterns (overflow handling, payload shaping) with the `outline-on-overflow` reference.
|
|
13
|
+
- **Dockerfile `HEALTHCHECK`** — bun-native `fetch` against `/healthz` (the slim runtime image ships no `curl`/`wget`).
|
|
14
|
+
- **Dockerfile OCI version metadata** — `APP_VERSION` build arg populates `org.opencontainers.image.version`; adds `org.opencontainers.image.source`.
|
|
15
|
+
|
|
16
|
+
## Changed
|
|
17
|
+
|
|
18
|
+
- **`createApp()` identity** — `src/index.ts` now sets `name` and `title` explicitly to `gdelt-mcp-server` rather than relying on the scoped-package name fallback.
|
|
19
|
+
- **`.codex-plugin/plugin.json` `interface.displayName`** — `@cyanheads/gdelt-mcp-server` → `gdelt-mcp-server` (unscoped display identity).
|
|
20
|
+
- **`scripts/lint-packaging.ts`** — adds bundle-content guards (root dev dirs excluded from the bundle, `.mcpbignore` patterns anchored so they can't strip nested `node_modules/.../skills/`, critical runtime paths preserved, built `.mcpb` carries zero `node_modules` agent-doc entries) and an identity check (`createApp`/`createWorkerHandler` `name`/`title` and manifest `display_name` must equal the unscoped package name).
|
|
21
|
+
- **`scripts/check-framework-antipatterns.ts`** — adds a `z.coerce.boolean()` env-flag rule (`Boolean("false")` is truthy; use `z.stringbool()`) and skips comment lines so a JSDoc mention of an antipattern isn't flagged as a usage.
|
|
22
|
+
- **`.mcpbignore`** — root dev-dir patterns anchored with a leading `/` so they target the bundle root only.
|
|
23
|
+
- **Vendored `skills/` synced** to `@cyanheads/mcp-ts-core` `0.10.6`.
|
|
24
|
+
|
|
25
|
+
### Dependencies
|
|
26
|
+
|
|
27
|
+
- **`@cyanheads/mcp-ts-core`** `^0.9.21 → ^0.10.6`
|
|
28
|
+
- **`@types/node`** `^25.9.2 → ^25.9.3`
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,8 @@ import { initGdeltDocService } from './services/gdelt/gdelt-doc-service.js';
|
|
|
10
10
|
import { initGdeltTvService } from './services/gdelt/gdelt-tv-service.js';
|
|
11
11
|
import { initRateLimiter } from './services/gdelt/rate-limiter.js';
|
|
12
12
|
await createApp({
|
|
13
|
+
name: 'gdelt-mcp-server',
|
|
14
|
+
title: 'gdelt-mcp-server',
|
|
13
15
|
tools: [
|
|
14
16
|
gdeltSearchArticles,
|
|
15
17
|
gdeltGetCoverageTimeline,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACd,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,MAAM,SAAS,CAAC;IACd,KAAK,EAAE;QACL,mBAAmB;QACnB,wBAAwB;QACxB,wBAAwB;QACxB,yBAAyB;QACzB,aAAa;QACb,eAAe;QACf,iBAAiB;QACjB,kBAAkB;QAClB,mBAAmB;KACpB;IACD,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,yFAAyF;IACzF,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;IAC/B,YAAY,EACV,8DAA8D;QAC9D,iFAAiF;QACjF,gHAAgH;QAChH,iFAAiF;QACjF,6EAA6E;QAC7E,6EAA6E;QAC7E,+EAA+E;QAC/E,oEAAoE;QACpE,yFAAyF;QACzF,yFAAyF;QACzF,8EAA8E;IAEhF,KAAK,CAAC,IAAI;QACR,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,eAAe,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAC7C,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC7D,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACd,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,kBAAkB;IACxB,KAAK,EAAE,kBAAkB;IACzB,KAAK,EAAE;QACL,mBAAmB;QACnB,wBAAwB;QACxB,wBAAwB;QACxB,yBAAyB;QACzB,aAAa;QACb,eAAe;QACf,iBAAiB;QACjB,kBAAkB;QAClB,mBAAmB;KACpB;IACD,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,yFAAyF;IACzF,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;IAC/B,YAAY,EACV,8DAA8D;QAC9D,iFAAiF;QACjF,gHAAgH;QAChH,iFAAiF;QACjF,6EAA6E;QAC7E,6EAA6E;QAC7E,+EAA+E;QAC/E,oEAAoE;QACpE,yFAAyF;QACzF,yFAAyF;QACzF,8EAA8E;IAEhF,KAAK,CAAC,IAAI;QACR,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;QACvC,eAAe,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAC7C,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC7D,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC;CACF,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/gdelt-mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Search and analyze global news coverage and US television transcripts via the GDELT Project's real-time APIs via MCP. STDIO or Streamable HTTP.",
|
|
5
5
|
"mcpName": "io.github.cyanheads/gdelt-mcp-server",
|
|
6
6
|
"type": "module",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"format:unsafe": "biome check --write --unsafe .",
|
|
31
31
|
"lint:mcp": "bun run scripts/lint-mcp.ts",
|
|
32
32
|
"lint:packaging": "bun run scripts/lint-packaging.ts",
|
|
33
|
-
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/gdelt-mcp-server.mcpb",
|
|
33
|
+
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/gdelt-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/gdelt-mcp-server.mcpb",
|
|
34
34
|
"changelog:build": "bun run scripts/build-changelog.ts",
|
|
35
35
|
"changelog:check": "bun run scripts/build-changelog.ts --check",
|
|
36
36
|
"test": "bunx vitest run",
|
|
@@ -85,13 +85,13 @@
|
|
|
85
85
|
"access": "public"
|
|
86
86
|
},
|
|
87
87
|
"dependencies": {
|
|
88
|
-
"@cyanheads/mcp-ts-core": "^0.
|
|
88
|
+
"@cyanheads/mcp-ts-core": "^0.10.6",
|
|
89
89
|
"pino-pretty": "^13.1.3",
|
|
90
90
|
"zod": "^4.4.3"
|
|
91
91
|
},
|
|
92
92
|
"devDependencies": {
|
|
93
93
|
"@biomejs/biome": "^2.4.16",
|
|
94
|
-
"@types/node": "^25.9.
|
|
94
|
+
"@types/node": "^25.9.3",
|
|
95
95
|
"depcheck": "^1.4.7",
|
|
96
96
|
"ignore": "^7.0.5",
|
|
97
97
|
"tsc-alias": "^1.8.17",
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/gdelt-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.2.
|
|
9
|
+
"version": "0.2.1",
|
|
10
10
|
"remotes": [
|
|
11
11
|
{
|
|
12
12
|
"type": "streamable-http",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
20
20
|
"identifier": "@cyanheads/gdelt-mcp-server",
|
|
21
21
|
"runtimeHint": "node",
|
|
22
|
-
"version": "0.2.
|
|
22
|
+
"version": "0.2.1",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
49
49
|
"identifier": "@cyanheads/gdelt-mcp-server",
|
|
50
50
|
"runtimeHint": "node",
|
|
51
|
-
"version": "0.2.
|
|
51
|
+
"version": "0.2.1",
|
|
52
52
|
"packageArguments": [
|
|
53
53
|
{
|
|
54
54
|
"type": "positional",
|