@cyanheads/who-gho-mcp-server 0.1.3 → 0.1.5
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 +40 -58
- package/Dockerfile +1 -4
- package/README.md +1 -1
- package/package.json +19 -29
- package/server.json +4 -4
- package/changelog/0.1.x/0.1.0.md +0 -20
- package/changelog/0.1.x/0.1.1.md +0 -23
- package/changelog/0.1.x/0.1.2.md +0 -12
- package/changelog/0.1.x/0.1.3.md +0 -20
- package/changelog/template.md +0 -119
package/CLAUDE.md
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Agent Protocol
|
|
2
2
|
|
|
3
|
-
**Server:** who-gho-mcp-server
|
|
4
|
-
**Version:** 0.1.
|
|
3
|
+
**Server:** @cyanheads/who-gho-mcp-server
|
|
4
|
+
**Version:** 0.1.5
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.7`
|
|
6
|
-
**Engines:** Bun ≥1.3.
|
|
7
|
-
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
8
|
-
**Zod:** ^4.4.3
|
|
6
|
+
**Engines:** Bun ≥1.3.2, Node ≥24.0.0
|
|
9
7
|
|
|
10
8
|
> **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
|
|
11
9
|
|
|
@@ -13,7 +11,7 @@
|
|
|
13
11
|
|
|
14
12
|
## What's Next?
|
|
15
13
|
|
|
16
|
-
When the user asks what's
|
|
14
|
+
When the user asks what to do next, what's left, or needs direction, suggest relevant options based on the current project state:
|
|
17
15
|
|
|
18
16
|
1. **Re-run the `setup` skill** — ensures CLAUDE.md, skills, structure, and metadata are populated and up to date with the current codebase
|
|
19
17
|
2. **Run the `design-mcp-server` skill** — if the tool/resource surface hasn't been mapped yet, work through domain design
|
|
@@ -251,21 +249,24 @@ Available skills:
|
|
|
251
249
|
| `add-service` | Scaffold a new service integration |
|
|
252
250
|
| `add-test` | Scaffold test file for a tool, resource, or service |
|
|
253
251
|
| `field-test` | Exercise tools/resources/prompts with real inputs, verify behavior, report issues |
|
|
252
|
+
| `tool-defs-analysis` | Read-only audit of definition language: voice, leaks, defaults, recovery hints, examples |
|
|
254
253
|
| `security-pass` | Audit server for MCP-flavored security gaps: output injection, scope blast radius, input sinks, tenant isolation |
|
|
255
254
|
| `devcheck` | Lint, format, typecheck, audit |
|
|
256
255
|
| `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
|
|
257
|
-
| `maintenance` | Investigate changelogs, adopt upstream changes, sync skills
|
|
258
|
-
| `
|
|
259
|
-
| `report-issue-
|
|
256
|
+
| `maintenance` | Investigate changelogs, adopt upstream changes, and sync skills after `bun update --latest` |
|
|
257
|
+
| `release-and-publish` | Ship a release: verification gate, push commits+tags, publish to npm / MCP Registry / GHCR / `.mcpb` bundle on GitHub Releases |
|
|
258
|
+
| `report-issue-framework` | File bug/feature request against @cyanheads/mcp-ts-core |
|
|
259
|
+
| `report-issue-local` | File bug/feature request against this server's repo |
|
|
260
260
|
| `api-auth` | Auth modes, scopes, JWT/OAuth |
|
|
261
261
|
| `api-canvas` | DataCanvas: register tabular data, run SQL, export, plus the `spillover()` helper for big result sets — Tier 3 opt-in |
|
|
262
262
|
| `api-config` | AppConfig, parseConfig, env vars |
|
|
263
263
|
| `api-context` | Context interface, logger, state, progress |
|
|
264
264
|
| `api-errors` | McpError, JsonRpcErrorCode, error patterns |
|
|
265
|
+
| `api-linter` | Definition lint rules reference (`format-parity`, `schema-*`, `server-json-*`, …) |
|
|
265
266
|
| `api-services` | LLM, Speech, Graph services |
|
|
267
|
+
| `api-telemetry` | OTel catalog: spans, metrics, completion logs, env config, cardinality rules |
|
|
266
268
|
| `api-testing` | createMockContext, test patterns |
|
|
267
269
|
| `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
|
|
268
|
-
| `api-telemetry` | OTel catalog: spans, metrics, completion logs, env config, cardinality rules |
|
|
269
270
|
| `api-workers` | Cloudflare Workers runtime |
|
|
270
271
|
|
|
271
272
|
When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
|
|
@@ -274,72 +275,53 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
274
275
|
|
|
275
276
|
## Commands
|
|
276
277
|
|
|
277
|
-
**Runtime:** Scripts use `tsx` — both `npm run <cmd>` and `bun run <cmd>` work. `bun` is slightly faster for script invocation but not required.
|
|
278
|
-
|
|
279
278
|
| Command | Purpose |
|
|
280
279
|
|:--------|:--------|
|
|
281
|
-
| `
|
|
282
|
-
| `
|
|
283
|
-
| `
|
|
284
|
-
| `
|
|
285
|
-
| `bun run audit:refresh` | Delete `bun.lock`, reinstall, re-audit
|
|
286
|
-
| `
|
|
287
|
-
| `
|
|
288
|
-
| `
|
|
289
|
-
| `
|
|
290
|
-
| `
|
|
291
|
-
| `
|
|
292
|
-
| `
|
|
293
|
-
| `
|
|
280
|
+
| `bun run build` | Compile TypeScript |
|
|
281
|
+
| `bun run rebuild` | Clean + build |
|
|
282
|
+
| `bun run clean` | Remove build artifacts |
|
|
283
|
+
| `bun run devcheck` | Lint + format + typecheck + security + packaging alignment |
|
|
284
|
+
| `bun run audit:refresh` | Delete `bun.lock`, reinstall, and re-run `bun audit`. Use when `devcheck` flags a transitive advisory — `bun update` is sticky on transitive resolutions, so the advisory may be a stale-lockfile false positive. If it survives the refresh, it's real. |
|
|
285
|
+
| `bun run tree` | Generate directory structure doc |
|
|
286
|
+
| `bun run format` | Auto-fix formatting |
|
|
287
|
+
| `bun run test` | Run tests |
|
|
288
|
+
| `bun run lint:mcp` | Validate MCP definitions against spec |
|
|
289
|
+
| `bun run lint:packaging` | Validate env var alignment between `manifest.json` and `server.json` (skipped cleanly when `manifest.json` is absent) |
|
|
290
|
+
| `bun run list-skills` | List skills in `skills/` with name + description |
|
|
291
|
+
| `bun run bundle` | Build and pack as `dist/who-gho-mcp-server.mcpb` for one-click Claude Desktop install |
|
|
292
|
+
| `bun run start:stdio` | Production mode (stdio) |
|
|
293
|
+
| `bun run start:http` | Production mode (HTTP) |
|
|
294
294
|
|
|
295
295
|
---
|
|
296
296
|
|
|
297
297
|
## Bundling
|
|
298
298
|
|
|
299
|
-
`
|
|
300
|
-
|
|
301
|
-
**Adding an env var requires both files:** `server.json` (registry discovery, `environmentVariables[]`) and `manifest.json` (bundle install UX, `mcp_config.env` + `user_config`). `lint:packaging` (run by `devcheck`) verifies the env var names match.
|
|
302
|
-
|
|
303
|
-
**README install badges.** Drop these into the project README to give users one-click install paths. Fill in `<OWNER>` / `<REPO>` / `<PACKAGE_NAME>` and encode the per-server config. Cursor + VS Code badges assume the server is published to npm; Claude Desktop downloads the `.mcpb` directly so npm publishing isn't required.
|
|
299
|
+
`bun run bundle` produces `dist/who-gho-mcp-server.mcpb` for one-click install in Claude Desktop. MCPB is stdio-only — HTTP and Docker deployments are unaffected. The `release-and-publish` skill attaches the bundle to the GitHub Release at a stable `releases/latest/download/who-gho-mcp-server.mcpb` URL that powers the README install badge.
|
|
304
300
|
|
|
305
|
-
|
|
306
|
-
|:-------|:----------|
|
|
307
|
-
| Claude Desktop | Browser downloads the `.mcpb` from the latest GitHub Release; OS file handler routes it to Claude Desktop, which opens the install dialog. No deep-link URL scheme yet — this is the canonical path. |
|
|
308
|
-
| Cursor | Official `https://cursor.com/en/install-mcp` endpoint with base64 JSON config. |
|
|
309
|
-
| VS Code / Insiders | Official `vscode:mcp/install?...` deep link, wrapped in `https://vscode.dev/redirect?url=` so GitHub-rendered markdown doesn't strip the non-HTTP scheme. |
|
|
310
|
-
| Claude Code / Codex | CLI only (`claude mcp add` / `codex mcp add`); no URL scheme. |
|
|
301
|
+
**Adding an env var requires both files**: `server.json` stdio `environmentVariables[]` (registry discovery) and `manifest.json` `mcp_config.env` (bundle install UX, plus `user_config` if user-prompted). `bun run lint:packaging` (run by `devcheck`) verifies the env var names align.
|
|
311
302
|
|
|
312
|
-
|
|
313
|
-
[](https://github.com/<OWNER>/<REPO>/releases/latest/download/<PACKAGE_NAME>.mcpb)
|
|
314
|
-
[](https://cursor.com/en/install-mcp?name=<PACKAGE_NAME>&config=<BASE64_CONFIG>)
|
|
315
|
-
[](https://vscode.dev/redirect?url=vscode:mcp/install?<URLENCODED_JSON>)
|
|
316
|
-
```
|
|
303
|
+
---
|
|
317
304
|
|
|
318
|
-
|
|
305
|
+
## Publishing
|
|
319
306
|
|
|
320
|
-
|
|
307
|
+
Run the `release-and-publish` skill after git wrapup — it runs the verification gate (`devcheck`, `rebuild`, `test`), pushes commits and tags, and publishes to npm, the MCP Registry, GHCR, and attaches the `.mcpb` bundle to the GitHub Release, halting on the first failure. For reference, the underlying commands are:
|
|
321
308
|
|
|
322
309
|
```bash
|
|
323
|
-
|
|
324
|
-
echo -n '{"command":"npx","args":["-y","<PACKAGE_NAME>"],"env":{"API_KEY":"your-api-key"}}' | base64
|
|
325
|
-
# Without env (no required keys):
|
|
326
|
-
echo -n '{"command":"npx","args":["-y","<PACKAGE_NAME>"]}' | base64
|
|
327
|
-
|
|
328
|
-
# VS Code: URL-encoded JSON. Same shape plus a `name` field.
|
|
329
|
-
node -p 'encodeURIComponent(JSON.stringify({name:"<SHORT_NAME>",command:"npx",args:["-y","<PACKAGE_NAME>"],env:{API_KEY:"your-api-key"}}))'
|
|
330
|
-
# Without env:
|
|
331
|
-
node -p 'encodeURIComponent(JSON.stringify({name:"<SHORT_NAME>",command:"npx",args:["-y","<PACKAGE_NAME>"]}))'
|
|
332
|
-
```
|
|
310
|
+
bun publish --access public
|
|
333
311
|
|
|
334
|
-
|
|
312
|
+
docker buildx build --platform linux/amd64,linux/arm64 \
|
|
313
|
+
-t ghcr.io/cyanheads/who-gho-mcp-server:<version> \
|
|
314
|
+
-t ghcr.io/cyanheads/who-gho-mcp-server:latest \
|
|
315
|
+
--push .
|
|
335
316
|
|
|
336
|
-
|
|
317
|
+
mcp-publisher publish
|
|
318
|
+
```
|
|
337
319
|
|
|
338
320
|
---
|
|
339
321
|
|
|
340
322
|
## Changelog
|
|
341
323
|
|
|
342
|
-
Directory-based, grouped by minor series via the `.x` semver-wildcard convention. Source of truth: `changelog/<major.minor>.x/<version>.md` (e.g. `changelog/0.1.x/0.1.0.md`) — one file per release, shipped in the npm package. At release, author the per-version file with a concrete version and date, then run `
|
|
324
|
+
Directory-based, grouped by minor series via the `.x` semver-wildcard convention. Source of truth: `changelog/<major.minor>.x/<version>.md` (e.g. `changelog/0.1.x/0.1.0.md`) — one file per release, shipped in the npm package. At release, author the per-version file with a concrete version and date, then run `bun run changelog:build` to regenerate the rollup. `changelog/template.md` is a **pristine format reference** — never edited or moved; read it for the frontmatter + section layout when scaffolding. `CHANGELOG.md` is a **navigation index** (header + link + summary per version), regenerated by `bun run changelog:build` — devcheck hard-fails on drift; never hand-edit it.
|
|
343
325
|
|
|
344
326
|
Each per-version file opens with YAML frontmatter:
|
|
345
327
|
|
|
@@ -388,4 +370,4 @@ import { getMyService } from '@/services/my-domain/my-service.js';
|
|
|
388
370
|
- [ ] If wrapping external API: tests include at least one sparse payload case with omitted upstream fields
|
|
389
371
|
- [ ] Registered in `createApp()` arrays (directly or via barrel exports)
|
|
390
372
|
- [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
|
|
391
|
-
- [ ] `
|
|
373
|
+
- [ ] `bun run devcheck` passes
|
package/Dockerfile
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# ==============================================================================
|
|
2
2
|
# Build Stage
|
|
3
|
-
#
|
|
4
|
-
# This stage installs all dependencies (including dev), builds the TypeScript
|
|
5
|
-
# source code into JavaScript, and prepares the production assets.
|
|
6
3
|
# ==============================================================================
|
|
7
4
|
FROM oven/bun:1.3 AS build
|
|
8
5
|
|
|
@@ -38,7 +35,7 @@ ENV NODE_ENV=production
|
|
|
38
35
|
|
|
39
36
|
# OCI image metadata (https://github.com/opencontainers/image-spec/blob/main/annotations.md)
|
|
40
37
|
LABEL org.opencontainers.image.title="@cyanheads/who-gho-mcp-server"
|
|
41
|
-
LABEL org.opencontainers.image.description="
|
|
38
|
+
LABEL org.opencontainers.image.description="Query WHO Global Health Observatory data — 3,059 indicators across 194 member states with country, region, year, and sex filters via MCP. STDIO or Streamable HTTP."
|
|
42
39
|
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
|
43
40
|
LABEL org.opencontainers.image.source="https://github.com/cyanheads/who-gho-mcp-server"
|
|
44
41
|
|
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/who-gho-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/who-gho-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
package/package.json
CHANGED
|
@@ -1,42 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/who-gho-mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"mcpName": "io.github.cyanheads/who-gho-mcp-server",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "Query WHO Global Health Observatory data — 3,059 indicators across 194 member states with country, region, year, and sex filters via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
9
9
|
"bin": {
|
|
10
10
|
"who-gho-mcp-server": "dist/index.js"
|
|
11
11
|
},
|
|
12
|
-
"files": [
|
|
13
|
-
"changelog/",
|
|
14
|
-
"dist/",
|
|
15
|
-
"README.md",
|
|
16
|
-
"LICENSE",
|
|
17
|
-
"CLAUDE.md",
|
|
18
|
-
"AGENTS.md",
|
|
19
|
-
"Dockerfile",
|
|
20
|
-
"server.json"
|
|
21
|
-
],
|
|
12
|
+
"files": ["dist/", "README.md", "LICENSE", "CLAUDE.md", "Dockerfile", "server.json"],
|
|
22
13
|
"scripts": {
|
|
23
|
-
"build": "
|
|
24
|
-
"rebuild": "
|
|
25
|
-
"clean": "
|
|
26
|
-
"devcheck": "
|
|
14
|
+
"build": "bun run scripts/build.ts",
|
|
15
|
+
"rebuild": "bun run scripts/clean.ts && bun run build",
|
|
16
|
+
"clean": "bun run scripts/clean.ts",
|
|
17
|
+
"devcheck": "bun run scripts/devcheck.ts",
|
|
18
|
+
"tree": "bun run scripts/tree.ts",
|
|
19
|
+
"format": "biome check --write --unsafe",
|
|
20
|
+
"test": "bunx vitest run",
|
|
27
21
|
"audit:refresh": "rm -f bun.lock && bun install && bun audit",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"start": "node dist/index.js",
|
|
38
|
-
"start:stdio": "MCP_TRANSPORT_TYPE=stdio node dist/index.js",
|
|
39
|
-
"start:http": "MCP_TRANSPORT_TYPE=http node dist/index.js"
|
|
22
|
+
"list-skills": "bun run scripts/list-skills.ts",
|
|
23
|
+
"lint:mcp": "bun run scripts/lint-mcp.ts",
|
|
24
|
+
"lint:packaging": "bun run scripts/lint-packaging.ts",
|
|
25
|
+
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/who-gho-mcp-server.mcpb",
|
|
26
|
+
"changelog:build": "bun run scripts/build-changelog.ts",
|
|
27
|
+
"changelog:check": "bun run scripts/build-changelog.ts --check",
|
|
28
|
+
"publish-mcp": "mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish",
|
|
29
|
+
"start:stdio": "MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js",
|
|
30
|
+
"start:http": "MCP_TRANSPORT_TYPE=http bun ./dist/index.js"
|
|
40
31
|
},
|
|
41
32
|
"keywords": [
|
|
42
33
|
"mcp",
|
|
@@ -94,7 +85,6 @@
|
|
|
94
85
|
"depcheck": "^1.4.7",
|
|
95
86
|
"ignore": "^7.0.5",
|
|
96
87
|
"tsc-alias": "^1.8.17",
|
|
97
|
-
"tsx": "^4.22.3",
|
|
98
88
|
"typescript": "^6.0.3",
|
|
99
89
|
"vitest": "^4.1.7"
|
|
100
90
|
}
|
package/server.json
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.cyanheads/who-gho-mcp-server",
|
|
4
|
-
"description": "WHO Global Health Observatory
|
|
4
|
+
"description": "WHO Global Health Observatory — 3,059 indicators across 194 member states.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/cyanheads/who-gho-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.5",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "@cyanheads/who-gho-mcp-server",
|
|
15
15
|
"runtimeHint": "bun",
|
|
16
|
-
"version": "0.1.
|
|
16
|
+
"version": "0.1.5",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|
|
19
19
|
"type": "positional",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
43
43
|
"identifier": "@cyanheads/who-gho-mcp-server",
|
|
44
44
|
"runtimeHint": "bun",
|
|
45
|
-
"version": "0.1.
|
|
45
|
+
"version": "0.1.5",
|
|
46
46
|
"packageArguments": [
|
|
47
47
|
{
|
|
48
48
|
"type": "positional",
|
package/changelog/0.1.x/0.1.0.md
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Initial release — WHO GHO MCP server with 6 tools and 2 resources for the Global Health Observatory OData API"
|
|
3
|
-
breaking: false
|
|
4
|
-
security: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# 0.1.0 — 2026-05-23
|
|
8
|
-
|
|
9
|
-
## Added
|
|
10
|
-
|
|
11
|
-
- **`who_search_indicators`** — keyword search across 3,059 GHO indicators by name substring.
|
|
12
|
-
- **`who_list_indicators`** — paginated browse of the full indicator catalog.
|
|
13
|
-
- **`who_get_indicator_metadata`** — batch dimension lookup for up to 10 indicator codes; strips `PUBLISHSTATE` internal dimension from output.
|
|
14
|
-
- **`who_query_indicator_data`** — primary data tool; queries a single indicator with country/region/income-group/year/sex/dim1 filters via OData; raises `ambiguous_spatial_filter` when more than one spatial type is provided.
|
|
15
|
-
- **`who_list_dimension_values`** — valid values for any GHO dimension type (COUNTRY, SEX, AGEGROUP, WORLDBANKINCOMEGROUP, etc.).
|
|
16
|
-
- **`who_list_dimensions`** — full list of GHO dimension type codes and titles.
|
|
17
|
-
- **`who://indicator/{indicatorCode}/metadata`** resource — indicator metadata by URI.
|
|
18
|
-
- **`who://dimension/{dimensionCode}/values`** resource — dimension values by URI.
|
|
19
|
-
- **`GhoService`** — OData API client with retry, timeout, HTML-error-page detection, and `PUBLISHSTATE` filtering.
|
|
20
|
-
- **`GHO_BASE_URL`** / **`GHO_REQUEST_TIMEOUT_MS`** env vars for API URL override and request timeout.
|
package/changelog/0.1.x/0.1.1.md
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Initial public release — WHO GHO MCP server, 6 tools and 2 resources for 3,059 Global Health Observatory indicators across 194 member states"
|
|
3
|
-
breaking: false
|
|
4
|
-
security: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# 0.1.1 — 2026-05-23
|
|
8
|
-
|
|
9
|
-
First npm-published release. Packages the full WHO Global Health Observatory integration: OData API client, tool and resource surface, install badges, and bundling support.
|
|
10
|
-
|
|
11
|
-
## Added
|
|
12
|
-
|
|
13
|
-
- **`who_search_indicators`** — keyword search across 3,059 GHO indicators by name substring.
|
|
14
|
-
- **`who_list_indicators`** — paginated browse of the full indicator catalog.
|
|
15
|
-
- **`who_get_indicator_metadata`** — batch dimension lookup for up to 10 indicator codes; strips `PUBLISHSTATE` internal dimension from output.
|
|
16
|
-
- **`who_query_indicator_data`** — primary data tool; queries a single indicator with country/region/income-group/year/sex/dim1 filters via OData; raises `ambiguous_spatial_filter` when more than one spatial type is provided.
|
|
17
|
-
- **`who_list_dimension_values`** — valid values for any GHO dimension type (COUNTRY, SEX, AGEGROUP, WORLDBANKINCOMEGROUP, etc.).
|
|
18
|
-
- **`who_list_dimensions`** — full list of GHO dimension type codes and titles.
|
|
19
|
-
- **`who://indicator/{indicatorCode}/metadata`** resource — indicator metadata by URI.
|
|
20
|
-
- **`who://dimension/{dimensionCode}/values`** resource — dimension values by URI.
|
|
21
|
-
- **`GhoService`** — OData API client with retry, timeout, HTML-error-page detection, and `PUBLISHSTATE` filtering.
|
|
22
|
-
- **`GHO_BASE_URL`** / **`GHO_REQUEST_TIMEOUT_MS`** env vars for API URL override and request timeout.
|
|
23
|
-
- `manifest.json` for MCPB bundle support; install badges for Claude Desktop, Cursor, and VS Code.
|
package/changelog/0.1.x/0.1.2.md
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Fix indicator name resolution and document region_codes aggregate behavior"
|
|
3
|
-
breaking: false
|
|
4
|
-
security: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# 0.1.2 — 2026-05-23
|
|
8
|
-
|
|
9
|
-
## Fixed
|
|
10
|
-
|
|
11
|
-
- **`who_get_indicator_metadata`** / **`who://indicator/{code}/metadata`**: `indicatorName` now reflects the actual indicator name. `GhoService.listIndicators` accepts an `indicatorCode` param that applies an `IndicatorCode eq '...'` OData filter; both call sites updated to pass the code.
|
|
12
|
-
- **`who_query_indicator_data`**: `region_codes` description now documents that region rows are aggregates, not per-country breakdowns, and how to retrieve country-level data instead.
|
package/changelog/0.1.x/0.1.3.md
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Tool description fixes and metadata sync to gold standard"
|
|
3
|
-
breaking: false
|
|
4
|
-
security: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# 0.1.3 — 2026-05-23
|
|
8
|
-
|
|
9
|
-
## Fixed
|
|
10
|
-
|
|
11
|
-
- **`who_list_dimensions`**: description referred to "this endpoint" — changed to "this tool".
|
|
12
|
-
- **`who_query_indicator_data`**: sex filter description replaced the internal `Dim1Type=SEX` implementation detail with behavior-facing wording. `dim1_value` description now includes a concrete example code (`YEARS05-14`).
|
|
13
|
-
|
|
14
|
-
## Changed
|
|
15
|
-
|
|
16
|
-
- **`package.json`**: added `mcpName`, `bugs`, `homepage`, `author`, `funding`, `packageManager`; keywords expanded; `repository.url` corrected to `git+https://…git` form; `engines.bun` raised to `>=1.3.2`.
|
|
17
|
-
- **`server.json`**: `name` changed to `io.github.cyanheads/who-gho-mcp-server`; `runtimeHint` corrected from `node` to `bun`.
|
|
18
|
-
- **`manifest.json`**: `repository`, `homepage`, `license` fields added.
|
|
19
|
-
- **`Dockerfile`**: OCI labels updated — title uses scoped package name, description filled in, `source` label added.
|
|
20
|
-
- **`bunfig.toml`**: added (`[install]` and `[run]` config for Bun).
|
package/changelog/template.md
DELETED
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
# FORMAT REFERENCE — do not edit. Copy this file to
|
|
3
|
-
# `changelog/<major.minor>.x/<version>.md` (e.g. `changelog/0.8.x/0.8.6.md`)
|
|
4
|
-
# to author a new release. Set that file's H1 to `# <version> — YYYY-MM-DD`
|
|
5
|
-
# with a concrete date.
|
|
6
|
-
|
|
7
|
-
# Required. One-line GitHub Release-style headline. 350 character cap.
|
|
8
|
-
# Default short and scannable. Don't pad, don't stitch unrelated changes with
|
|
9
|
-
# semicolons — pick the headline. Quotes required: unquoted YAML treats `: `
|
|
10
|
-
# inside the value as a key separator and fails GitHub's strict parser.
|
|
11
|
-
summary: ""
|
|
12
|
-
|
|
13
|
-
# Set `true` when consumers must change code to upgrade: API removals,
|
|
14
|
-
# signature changes, config renames, behavior changes that break existing
|
|
15
|
-
# usage. Flagged as `Breaking` in the rollup.
|
|
16
|
-
breaking: false
|
|
17
|
-
|
|
18
|
-
# Set `true` if this release contains any security fix. Pairs with the
|
|
19
|
-
# `## Security` section below. Flagged as `Security` in the rollup so
|
|
20
|
-
# users can triage upgrade urgency at a glance.
|
|
21
|
-
security: false
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
# <version> — YYYY-MM-DD
|
|
25
|
-
|
|
26
|
-
<!--
|
|
27
|
-
AUTHORING GUIDE — applies to the new per-version file you create from this
|
|
28
|
-
template.
|
|
29
|
-
|
|
30
|
-
Audience: someone scanning release notes to decide what affects them. Lead
|
|
31
|
-
each bullet with the symbol or concept name in **bold** so they can skip
|
|
32
|
-
what's irrelevant and zoom in on what's not.
|
|
33
|
-
|
|
34
|
-
Tone: terse, fact-dense, not verbose. Default to one sentence per bullet —
|
|
35
|
-
name the symbol, state what changed, stop. Use a second sentence only when
|
|
36
|
-
it carries weight. If a bullet feels long, it is.
|
|
37
|
-
|
|
38
|
-
Cut: mechanism walkthroughs (those belong in JSDoc, AGENTS.md, or the
|
|
39
|
-
relevant skill), ceremonial framings ("This release introduces…",
|
|
40
|
-
backwards-compat paragraphs), file-by-file test enumerations, internal
|
|
41
|
-
implementation notes. Prefer code/symbol names over English re-explanations.
|
|
42
|
-
|
|
43
|
-
Narrative intro: skip by default. Add one short sentence only when the
|
|
44
|
-
release theme genuinely needs framing the bullets can't carry.
|
|
45
|
-
|
|
46
|
-
Sections: Keep a Changelog order — Added, Changed, Deprecated, Removed,
|
|
47
|
-
Fixed, Security. Include only sections with entries; delete the rest
|
|
48
|
-
(including the commented-out scaffolding below). Don't ship empty headers.
|
|
49
|
-
|
|
50
|
-
Include: every distinct fact a reader needs to adopt or audit the release —
|
|
51
|
-
new exports, signatures, lint rule IDs, env vars, breaking changes, version
|
|
52
|
-
bumps on shipped skills. Nothing more.
|
|
53
|
-
|
|
54
|
-
Links: link issues, PRs, docs, or skills where they help a reader jump to
|
|
55
|
-
context. Once per item per entry — don't re-link the same issue in summary,
|
|
56
|
-
narrative, and bullet. Skip links for inline symbol names; code spans speak
|
|
57
|
-
for themselves.
|
|
58
|
-
|
|
59
|
-
Issue/PR URLs: use full URLs. GitHub's bare `#NN` auto-link only resolves
|
|
60
|
-
inside its own UI, not in npm reads or local editors.
|
|
61
|
-
|
|
62
|
-
[#38](https://github.com/cyanheads/mcp-ts-core/issues/38) ← issue
|
|
63
|
-
[#42](https://github.com/cyanheads/mcp-ts-core/pull/42) ← PR
|
|
64
|
-
|
|
65
|
-
Verify numbers exist before linking (`gh issue view NN`, `gh pr view NN`).
|
|
66
|
-
Never speculate on a future number — `#42` for an upcoming PR silently
|
|
67
|
-
resolves to whatever real item already owns 42, and timeline previews pull
|
|
68
|
-
in that unrelated item's metadata.
|
|
69
|
-
|
|
70
|
-
TAG ANNOTATIONS — the annotated tag body renders as the GitHub Release body
|
|
71
|
-
via `gh release create --notes-from-tag`. The tag is a derivative of this
|
|
72
|
-
changelog entry — a condensed, scannable version, not a copy. Format:
|
|
73
|
-
|
|
74
|
-
<theme — omit version number, GitHub prepends it>
|
|
75
|
-
← blank line
|
|
76
|
-
<1-2 sentence context: what this release does>
|
|
77
|
-
← blank line
|
|
78
|
-
Dependency bumps: ← section header
|
|
79
|
-
← blank line
|
|
80
|
-
- `@cyanheads/mcp-ts-core` ^0.9.1 → ^0.9.6 ← bullet
|
|
81
|
-
← blank line
|
|
82
|
-
Changed: ← only sections with entries
|
|
83
|
-
← blank line
|
|
84
|
-
- `format()` output includes `query` in text mode
|
|
85
|
-
← blank line
|
|
86
|
-
Added:
|
|
87
|
-
← blank line
|
|
88
|
-
- `manifest.json` scaffolded for MCPB bundle support
|
|
89
|
-
- Install badges (Claude Desktop, Cursor, VS Code)
|
|
90
|
-
← blank line
|
|
91
|
-
<N> tests pass; `bun run devcheck` clean. ← footer
|
|
92
|
-
|
|
93
|
-
Never a flat comma-separated string. Always structured markdown with
|
|
94
|
-
sections. The tag must scan well as a rendered GitHub Release page.
|
|
95
|
-
-->
|
|
96
|
-
|
|
97
|
-
## Added
|
|
98
|
-
|
|
99
|
-
-
|
|
100
|
-
|
|
101
|
-
## Changed
|
|
102
|
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
<!-- ## Deprecated
|
|
106
|
-
|
|
107
|
-
- -->
|
|
108
|
-
|
|
109
|
-
<!-- ## Removed
|
|
110
|
-
|
|
111
|
-
- -->
|
|
112
|
-
|
|
113
|
-
## Fixed
|
|
114
|
-
|
|
115
|
-
-
|
|
116
|
-
|
|
117
|
-
<!-- ## Security
|
|
118
|
-
|
|
119
|
-
- -->
|