@cyanheads/pubmed-mcp-server 2.5.2 → 2.5.3

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,7 +1,7 @@
1
1
  # Agent Protocol
2
2
 
3
3
  **Server:** @cyanheads/pubmed-mcp-server
4
- **Version:** 2.5.2
4
+ **Version:** 2.5.3
5
5
  **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
6
6
 
7
7
  > **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.
@@ -230,6 +230,7 @@ Available skills:
230
230
  | `devcheck` | Lint, format, typecheck, audit |
231
231
  | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
232
232
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills after `bun update --latest` |
233
+ | `release-and-publish` | Ship a release: verification gate, push commits+tags, publish to npm / MCP Registry / GHCR |
233
234
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
234
235
  | `api-config` | AppConfig, parseConfig, env vars |
235
236
  | `api-context` | Context interface, logger, state, progress |
@@ -267,7 +268,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
267
268
 
268
269
  ## Publishing
269
270
 
270
- After a version bump and final commit, publish to both npm and GHCR:
271
+ 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, and GHCR, halting on the first failure. For reference, the underlying commands are:
271
272
 
272
273
  ```bash
273
274
  bun publish --access public
@@ -276,9 +277,9 @@ docker buildx build --platform linux/amd64,linux/arm64 \
276
277
  -t ghcr.io/cyanheads/pubmed-mcp-server:<version> \
277
278
  -t ghcr.io/cyanheads/pubmed-mcp-server:latest \
278
279
  --push .
279
- ```
280
280
 
281
- Remind the user to run these after completing a release flow.
281
+ mcp-publisher publish
282
+ ```
282
283
 
283
284
  ---
284
285
 
@@ -297,10 +298,15 @@ import { getNcbiService } from '@/services/ncbi/ncbi-service.js';
297
298
 
298
299
  ## Checklist
299
300
 
300
- - [ ] Zod schemas: all fields have `.describe()`, only JSON-Schema-serializable types (no `z.custom()`, `z.date()`, `z.transform()`, etc.)
301
+ - [ ] Zod schemas: all fields have `.describe()`, only JSON-Schema-serializable types (no `z.custom()`, `z.date()`, `z.transform()`, `z.bigint()`, `z.symbol()`, `z.void()`, `z.map()`, `z.set()`, `z.function()`, `z.nan()`)
302
+ - [ ] Optional nested objects: handler guards for empty inner values from form-based clients (`if (input.obj?.field && ...)`, not just `if (input.obj)`)
301
303
  - [ ] JSDoc `@fileoverview` + `@module` on every file
302
304
  - [ ] `ctx.log` for logging, `ctx.state` for storage
303
305
  - [ ] Handlers throw on failure — error factories or plain `Error`, no try/catch
306
+ - [ ] `format()` renders all data the LLM needs — different clients forward different surfaces (Claude Code → `structuredContent`, Claude Desktop → `content[]`); both must carry the same data
307
+ - [ ] NCBI wrapping: raw/domain/output schemas reviewed against real upstream sparsity/nullability before finalizing required vs optional fields
308
+ - [ ] NCBI wrapping: normalization and `format()` preserve uncertainty; do not fabricate facts from missing upstream data
309
+ - [ ] NCBI wrapping: tests include at least one sparse payload case with omitted upstream fields
304
310
  - [ ] Registered in `createApp()` arrays (directly or via barrel exports)
305
311
  - [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
306
312
  - [ ] `bun run devcheck` passes
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![npm](https://img.shields.io/npm/v/@cyanheads/pubmed-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/pubmed-mcp-server) [![Version](https://img.shields.io/badge/Version-2.5.2-blue.svg?style=flat-square)](./CHANGELOG.md) [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-259?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.27.1-green.svg?style=flat-square)](https://modelcontextprotocol.io/)
10
+ [![npm](https://img.shields.io/npm/v/@cyanheads/pubmed-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/pubmed-mcp-server) [![Version](https://img.shields.io/badge/Version-2.5.3-blue.svg?style=flat-square)](./CHANGELOG.md) [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-259?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.27.1-green.svg?style=flat-square)](https://modelcontextprotocol.io/)
11
11
 
12
12
  [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![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.2-blueviolet.svg?style=flat-square)](https://bun.sh/)
13
13
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanheads/pubmed-mcp-server",
3
- "version": "2.5.2",
3
+ "version": "2.5.3",
4
4
  "mcpName": "io.github.cyanheads/pubmed-mcp-server",
5
5
  "description": "MCP server for PubMed/NCBI E-utilities integration. Search articles, fetch metadata, generate citations, explore MeSH terms, and discover related research.",
6
6
  "type": "module",
@@ -67,7 +67,7 @@
67
67
  "access": "public"
68
68
  },
69
69
  "dependencies": {
70
- "@cyanheads/mcp-ts-core": "^0.6.8",
70
+ "@cyanheads/mcp-ts-core": "^0.6.10",
71
71
  "fast-xml-parser": "^5.7.1",
72
72
  "pino-pretty": "^13.1.3",
73
73
  "sanitize-html": "^2.17.3"
package/server.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/cyanheads/pubmed-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "2.5.2",
9
+ "version": "2.5.3",
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/pubmed-mcp-server",
21
21
  "runtimeHint": "bun",
22
- "version": "2.5.2",
22
+ "version": "2.5.3",
23
23
  "packageArguments": [
24
24
  {
25
25
  "type": "positional",
@@ -60,7 +60,7 @@
60
60
  "registryBaseUrl": "https://registry.npmjs.org",
61
61
  "identifier": "@cyanheads/pubmed-mcp-server",
62
62
  "runtimeHint": "bun",
63
- "version": "2.5.2",
63
+ "version": "2.5.3",
64
64
  "packageArguments": [
65
65
  {
66
66
  "type": "positional",