@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 CHANGED
@@ -1,8 +1,8 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** gdelt-mcp-server
4
- **Version:** 0.2.0
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.21`
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
- [![Version](https://img.shields.io/badge/Version-0.2.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/gdelt-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/gdelt-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/gdelt-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.0-blueviolet.svg?style=flat-square)](https://bun.sh/)
10
+ [![Version](https://img.shields.io/badge/Version-0.2.1-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/gdelt-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/gdelt-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/gdelt-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.0-blueviolet.svg?style=flat-square)](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.0",
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.9.21",
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.2",
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.0",
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.0",
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.0",
51
+ "version": "0.2.1",
52
52
  "packageArguments": [
53
53
  {
54
54
  "type": "positional",