@cyanheads/openalex-mcp-server 0.7.12 → 0.7.13
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/AGENTS.md +16 -13
- package/CLAUDE.md +16 -13
- package/README.md +3 -3
- package/changelog/0.7.x/0.7.13.md +22 -0
- package/changelog/template.md +7 -24
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +5 -4
- package/dist/config/server-config.js.map +1 -1
- package/package.json +8 -7
- package/server.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** openalex-mcp-server
|
|
4
|
-
**Version:** 0.7.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.
|
|
6
|
-
**Engines:** Bun ≥1.
|
|
4
|
+
**Version:** 0.7.13
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.0`
|
|
6
|
+
**Engines:** Bun ≥1.4.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/server` ^2.0.0
|
|
8
|
-
**Zod:** ^4.
|
|
8
|
+
**Zod:** ^4.6.1
|
|
9
9
|
|
|
10
10
|
> **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
11
|
|
|
@@ -234,9 +234,9 @@ src/
|
|
|
234
234
|
|
|
235
235
|
## Skills
|
|
236
236
|
|
|
237
|
-
Skills are modular instructions in `skills/` at the project root. Read them directly when a task matches — e.g., `skills/add-tool/SKILL.md` when adding a tool.
|
|
237
|
+
Skills are modular instructions in `framework-skills/` at the project root. Read them directly when a task matches — e.g., `framework-skills/add-tool/SKILL.md` when adding a tool.
|
|
238
238
|
|
|
239
|
-
**Agent skill directory:** Copy skills into the directory your agent discovers (Claude Code: `.claude/skills/`, others: equivalent). This makes skills available as context without needing to reference `skills/` paths manually. After framework updates, run the `maintenance` skill — it re-syncs the agent directory automatically (Phase B).
|
|
239
|
+
**Agent skill directory:** Copy skills into the directory your agent discovers (Claude Code: `.claude/skills/`, others: equivalent). This makes skills available as context without needing to reference `framework-skills/` paths manually. After framework updates, run the `maintenance` skill — it re-syncs the agent directory automatically (Phase B).
|
|
240
240
|
|
|
241
241
|
Available skills:
|
|
242
242
|
|
|
@@ -256,8 +256,9 @@ Available skills:
|
|
|
256
256
|
| `code-simplifier` | Post-session cleanup against `git diff` — modernize syntax, consolidate duplication, align with the codebase |
|
|
257
257
|
| `techniques` | Reusable response/data-shaping patterns — overflow handling, payload shaping, retrieval |
|
|
258
258
|
| `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
|
|
259
|
-
| `git-wrapup` |
|
|
260
|
-
| `release-
|
|
259
|
+
| `git-wrapup` | Prepare the version, changelog, verification, and commit stack. |
|
|
260
|
+
| `release-pr-review` | Review an open release PR when the project opts into release PR mode. |
|
|
261
|
+
| `release-and-publish` | Tag + push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup`. |
|
|
261
262
|
| `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
|
|
262
263
|
| `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
|
|
263
264
|
| `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` |
|
|
@@ -275,7 +276,7 @@ Available skills:
|
|
|
275
276
|
| `api-workers` | Cloudflare Workers runtime |
|
|
276
277
|
| `api-mirror` | MirrorService: persistent local SQLite mirror of a bulk upstream dataset — Tier 3 opt-in |
|
|
277
278
|
|
|
278
|
-
**Chaining skills into pipelines.** When the user wants a multi-phase effort — build this server out, QA-and-fix the surface, update-and-ship — *and you can spawn sub-agents*, `skills/orchestrations/SKILL.md` sequences the task skills above into a gated pipeline with verification at each step. Read it to drive the run. Optional: skip it if you can't orchestrate sub-agents, and ignore it entirely if you were *spawned* as one — you've already been scoped to a single phase.
|
|
279
|
+
**Chaining skills into pipelines.** When the user wants a multi-phase effort — build this server out, QA-and-fix the surface, update-and-ship — *and you can spawn sub-agents*, `framework-skills/orchestrations/SKILL.md` sequences the task skills above into a gated pipeline with verification at each step. Read it to drive the run. Optional: skip it if you can't orchestrate sub-agents, and ignore it entirely if you were *spawned* as one — you've already been scoped to a single phase.
|
|
279
280
|
|
|
280
281
|
When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
|
|
281
282
|
|
|
@@ -289,7 +290,8 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
289
290
|
| `bun run rebuild` | Clean + build |
|
|
290
291
|
| `bun run clean` | Remove build artifacts |
|
|
291
292
|
| `bun run devcheck` | Lint + format + typecheck + security + changelog sync |
|
|
292
|
-
| `bun run audit:
|
|
293
|
+
| `bun run audit:fix` | Run `bun audit fix` to upgrade vulnerable packages within existing ranges. |
|
|
294
|
+
| `bun run audit:refresh` | Delete `bun.lock` and reinstall; last resort after `audit:fix`, targeted updates, and `bun dedupe`. |
|
|
293
295
|
| `bun run tree` | Generate directory structure doc |
|
|
294
296
|
| `bun run format` | Auto-fix formatting |
|
|
295
297
|
| `bun run lint:mcp` | Validate MCP tool/prompt definitions |
|
|
@@ -309,6 +311,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
309
311
|
`bun run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. MCPB is stdio-only — HTTP deployments are unaffected. Consumers who don't need it can delete `manifest.json` and `.mcpbignore`; `lint:packaging` skips cleanly.
|
|
310
312
|
|
|
311
313
|
**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.
|
|
314
|
+
Every bundle option must be wired as `${user_config.<option>}`; optional strings need a default. Claude plugins use the same options under `userConfig`, while Codex forwards user variables through `env_vars`. Never overwrite a user's exported value with an empty plugin `env` entry.
|
|
312
315
|
|
|
313
316
|
---
|
|
314
317
|
|
|
@@ -361,7 +364,7 @@ import { getOpenAlexService } from '@/services/openalex/openalex-service.js';
|
|
|
361
364
|
- [ ] OpenAlex wrapping: tests include at least one sparse payload case with omitted upstream fields
|
|
362
365
|
- [ ] Registered in `createApp()` arrays (directly or via barrel exports)
|
|
363
366
|
- [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
|
|
364
|
-
- [ ] `.codex-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; `interface.displayName` =
|
|
365
|
-
- [ ] `.codex-plugin/mcp.json` updated — server name key
|
|
366
|
-
- [ ] `.claude-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; inline `mcpServers` entry
|
|
367
|
+
- [ ] `.codex-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; `interface.displayName` = the unscoped repo name; `interface.shortDescription` from `package.json` description
|
|
368
|
+
- [ ] `.codex-plugin/mcp.json` updated — server name key is the unscoped repo name; user-supplied variables are listed in `env_vars`
|
|
369
|
+
- [ ] `.claude-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; inline `mcpServers` entry keyed by the unscoped repo name; user-supplied variables are declared under `userConfig` and referenced as `${user_config.<option>}`
|
|
367
370
|
- [ ] `bun run devcheck` passes
|
package/CLAUDE.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** openalex-mcp-server
|
|
4
|
-
**Version:** 0.7.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.
|
|
6
|
-
**Engines:** Bun ≥1.
|
|
4
|
+
**Version:** 0.7.13
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.0`
|
|
6
|
+
**Engines:** Bun ≥1.4.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/server` ^2.0.0
|
|
8
|
-
**Zod:** ^4.
|
|
8
|
+
**Zod:** ^4.6.1
|
|
9
9
|
|
|
10
10
|
> **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
11
|
|
|
@@ -234,9 +234,9 @@ src/
|
|
|
234
234
|
|
|
235
235
|
## Skills
|
|
236
236
|
|
|
237
|
-
Skills are modular instructions in `skills/` at the project root. Read them directly when a task matches — e.g., `skills/add-tool/SKILL.md` when adding a tool.
|
|
237
|
+
Skills are modular instructions in `framework-skills/` at the project root. Read them directly when a task matches — e.g., `framework-skills/add-tool/SKILL.md` when adding a tool.
|
|
238
238
|
|
|
239
|
-
**Agent skill directory:** Copy skills into the directory your agent discovers (Claude Code: `.claude/skills/`, others: equivalent). This makes skills available as context without needing to reference `skills/` paths manually. After framework updates, run the `maintenance` skill — it re-syncs the agent directory automatically (Phase B).
|
|
239
|
+
**Agent skill directory:** Copy skills into the directory your agent discovers (Claude Code: `.claude/skills/`, others: equivalent). This makes skills available as context without needing to reference `framework-skills/` paths manually. After framework updates, run the `maintenance` skill — it re-syncs the agent directory automatically (Phase B).
|
|
240
240
|
|
|
241
241
|
Available skills:
|
|
242
242
|
|
|
@@ -256,8 +256,9 @@ Available skills:
|
|
|
256
256
|
| `code-simplifier` | Post-session cleanup against `git diff` — modernize syntax, consolidate duplication, align with the codebase |
|
|
257
257
|
| `techniques` | Reusable response/data-shaping patterns — overflow handling, payload shaping, retrieval |
|
|
258
258
|
| `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
|
|
259
|
-
| `git-wrapup` |
|
|
260
|
-
| `release-
|
|
259
|
+
| `git-wrapup` | Prepare the version, changelog, verification, and commit stack. |
|
|
260
|
+
| `release-pr-review` | Review an open release PR when the project opts into release PR mode. |
|
|
261
|
+
| `release-and-publish` | Tag + push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup`. |
|
|
261
262
|
| `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
|
|
262
263
|
| `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
|
|
263
264
|
| `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` |
|
|
@@ -275,7 +276,7 @@ Available skills:
|
|
|
275
276
|
| `api-workers` | Cloudflare Workers runtime |
|
|
276
277
|
| `api-mirror` | MirrorService: persistent local SQLite mirror of a bulk upstream dataset — Tier 3 opt-in |
|
|
277
278
|
|
|
278
|
-
**Chaining skills into pipelines.** When the user wants a multi-phase effort — build this server out, QA-and-fix the surface, update-and-ship — *and you can spawn sub-agents*, `skills/orchestrations/SKILL.md` sequences the task skills above into a gated pipeline with verification at each step. Read it to drive the run. Optional: skip it if you can't orchestrate sub-agents, and ignore it entirely if you were *spawned* as one — you've already been scoped to a single phase.
|
|
279
|
+
**Chaining skills into pipelines.** When the user wants a multi-phase effort — build this server out, QA-and-fix the surface, update-and-ship — *and you can spawn sub-agents*, `framework-skills/orchestrations/SKILL.md` sequences the task skills above into a gated pipeline with verification at each step. Read it to drive the run. Optional: skip it if you can't orchestrate sub-agents, and ignore it entirely if you were *spawned* as one — you've already been scoped to a single phase.
|
|
279
280
|
|
|
280
281
|
When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
|
|
281
282
|
|
|
@@ -289,7 +290,8 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
289
290
|
| `bun run rebuild` | Clean + build |
|
|
290
291
|
| `bun run clean` | Remove build artifacts |
|
|
291
292
|
| `bun run devcheck` | Lint + format + typecheck + security + changelog sync |
|
|
292
|
-
| `bun run audit:
|
|
293
|
+
| `bun run audit:fix` | Run `bun audit fix` to upgrade vulnerable packages within existing ranges. |
|
|
294
|
+
| `bun run audit:refresh` | Delete `bun.lock` and reinstall; last resort after `audit:fix`, targeted updates, and `bun dedupe`. |
|
|
293
295
|
| `bun run tree` | Generate directory structure doc |
|
|
294
296
|
| `bun run format` | Auto-fix formatting |
|
|
295
297
|
| `bun run lint:mcp` | Validate MCP tool/prompt definitions |
|
|
@@ -309,6 +311,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
309
311
|
`bun run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. MCPB is stdio-only — HTTP deployments are unaffected. Consumers who don't need it can delete `manifest.json` and `.mcpbignore`; `lint:packaging` skips cleanly.
|
|
310
312
|
|
|
311
313
|
**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.
|
|
314
|
+
Every bundle option must be wired as `${user_config.<option>}`; optional strings need a default. Claude plugins use the same options under `userConfig`, while Codex forwards user variables through `env_vars`. Never overwrite a user's exported value with an empty plugin `env` entry.
|
|
312
315
|
|
|
313
316
|
---
|
|
314
317
|
|
|
@@ -361,7 +364,7 @@ import { getOpenAlexService } from '@/services/openalex/openalex-service.js';
|
|
|
361
364
|
- [ ] OpenAlex wrapping: tests include at least one sparse payload case with omitted upstream fields
|
|
362
365
|
- [ ] Registered in `createApp()` arrays (directly or via barrel exports)
|
|
363
366
|
- [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
|
|
364
|
-
- [ ] `.codex-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; `interface.displayName` =
|
|
365
|
-
- [ ] `.codex-plugin/mcp.json` updated — server name key
|
|
366
|
-
- [ ] `.claude-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; inline `mcpServers` entry
|
|
367
|
+
- [ ] `.codex-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; `interface.displayName` = the unscoped repo name; `interface.shortDescription` from `package.json` description
|
|
368
|
+
- [ ] `.codex-plugin/mcp.json` updated — server name key is the unscoped repo name; user-supplied variables are listed in `env_vars`
|
|
369
|
+
- [ ] `.claude-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; inline `mcpServers` entry keyed by the unscoped repo name; user-supplied variables are declared under `userConfig` and referenced as `${user_config.<option>}`
|
|
367
370
|
- [ ] `bun run devcheck` passes
|
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/openalex-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/openalex-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -165,7 +165,7 @@ Add to your MCP client config (e.g., `claude_desktop_config.json`):
|
|
|
165
165
|
|
|
166
166
|
### Prerequisites
|
|
167
167
|
|
|
168
|
-
- [Bun v1.
|
|
168
|
+
- [Bun v1.4.0](https://bun.sh/) or higher (for development)
|
|
169
169
|
|
|
170
170
|
### Installation
|
|
171
171
|
|
|
@@ -243,7 +243,7 @@ See [`CLAUDE.md`](./CLAUDE.md) for development guidelines and architectural rule
|
|
|
243
243
|
|
|
244
244
|
## Contributing
|
|
245
245
|
|
|
246
|
-
Issues
|
|
246
|
+
Issues are welcome. Run checks before submitting:
|
|
247
247
|
|
|
248
248
|
```sh
|
|
249
249
|
bun run devcheck
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Framework adoption and plugin configuration"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.7.13 — 2026-09-13
|
|
8
|
+
|
|
9
|
+
## Changed
|
|
10
|
+
|
|
11
|
+
- **Plugin configuration** now exposes the OpenAlex API key, mailto, base URL, and log level through Claude Code user settings and Codex environment forwarding; the MCPB manifest wires the same options into its server environment.
|
|
12
|
+
- **HTTP links** no longer duplicate the trailing slash in `MCP_PUBLIC_URL`, and the landing-page curl example uses a compatible initialization handshake (framework fixes from 0.12.8 and 0.12.9).
|
|
13
|
+
- **Environment parsing** treats empty strings and whole-value `${…}` placeholders as unset, so optional OpenAlex settings remain absent and defaulted settings use their schema defaults.
|
|
14
|
+
- **Framework skills and maintenance tooling** now use the `framework-skills/` layout and current scaffold checks, packaging validation, issue forms, and contributor guidance; development requires Bun 1.4.0 or newer.
|
|
15
|
+
|
|
16
|
+
## Dependencies
|
|
17
|
+
|
|
18
|
+
- `@cyanheads/mcp-ts-core` ^0.12.7 → ^0.13.0
|
|
19
|
+
- `zod` ^4.5.4 → ^4.6.1
|
|
20
|
+
- `@biomejs/biome` ^2.5.12 → ^2.5.13
|
|
21
|
+
- `@types/node` ^26.4.1 → ^26.5.1
|
|
22
|
+
- `ignore` ^7.0.8 → ^7.0.9
|
package/changelog/template.md
CHANGED
|
@@ -117,30 +117,13 @@ security: false
|
|
|
117
117
|
in that unrelated item's metadata.
|
|
118
118
|
|
|
119
119
|
TAG ANNOTATIONS — the annotated tag body renders as the GitHub Release body
|
|
120
|
-
via `gh release create --notes-from-tag`.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
Dependency bumps: ← section header
|
|
128
|
-
← blank line
|
|
129
|
-
- `@cyanheads/mcp-ts-core` ^0.9.1 → ^0.9.6 ← bullet
|
|
130
|
-
← blank line
|
|
131
|
-
Changed: ← only sections with entries
|
|
132
|
-
← blank line
|
|
133
|
-
- `format()` output includes `query` in text mode
|
|
134
|
-
← blank line
|
|
135
|
-
Added:
|
|
136
|
-
← blank line
|
|
137
|
-
- `manifest.json` scaffolded for MCPB bundle support
|
|
138
|
-
- Install badges (Claude Desktop, Cursor, VS Code)
|
|
139
|
-
← blank line
|
|
140
|
-
<N> tests pass; `bun run devcheck` clean. ← footer
|
|
141
|
-
|
|
142
|
-
Never a flat comma-separated string. Always structured markdown with
|
|
143
|
-
sections. The tag must scan well as a rendered GitHub Release page.
|
|
120
|
+
via `gh release create --notes-from-tag`. It is a condensed digest of this
|
|
121
|
+
entry, never a copy, and its format is owned by the `release-and-publish`
|
|
122
|
+
skill (step 4, "Create the annotated tag"): the entry's `summary:` as the
|
|
123
|
+
theme line without the version, flat headline bullets — no Keep-a-Changelog
|
|
124
|
+
section headers, no gates line — at most one deps line, issue backlinks,
|
|
125
|
+
and the changelog link last. In release-PR mode the `git-wrapup` skill
|
|
126
|
+
authors that digest as the PR body's `## Changes` and the tag copies it.
|
|
144
127
|
-->
|
|
145
128
|
|
|
146
129
|
## Added
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;;iBActB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,wBAAgB,eAAe,IAAI,YAAY,CAO9C"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* @module config/server-config
|
|
4
4
|
*/
|
|
5
5
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
6
|
+
import { parseEnvConfig } from '@cyanheads/mcp-ts-core/config';
|
|
6
7
|
const ServerConfigSchema = z.object({
|
|
7
8
|
apiKey: z
|
|
8
9
|
.string()
|
|
@@ -16,10 +17,10 @@ const ServerConfigSchema = z.object({
|
|
|
16
17
|
});
|
|
17
18
|
let _config;
|
|
18
19
|
export function getServerConfig() {
|
|
19
|
-
_config ??= ServerConfigSchema
|
|
20
|
-
apiKey:
|
|
21
|
-
mailto:
|
|
22
|
-
baseUrl:
|
|
20
|
+
_config ??= parseEnvConfig(ServerConfigSchema, {
|
|
21
|
+
apiKey: 'OPENALEX_API_KEY',
|
|
22
|
+
mailto: 'OPENALEX_MAILTO',
|
|
23
|
+
baseUrl: 'OPENALEX_BASE_URL',
|
|
23
24
|
});
|
|
24
25
|
return _config;
|
|
25
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CACP,sMAAsM,CACvM;IACH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CACP,yKAAyK,CAC1K;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;CAChG,CAAC,CAAC;AAIH,IAAI,OAAiC,CAAC;AAEtC,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,cAAc,CAAC,kBAAkB,EAAE;QAC7C,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,iBAAiB;QACzB,OAAO,EAAE,mBAAmB;KAC7B,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/openalex-mcp-server",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.13",
|
|
4
4
|
"description": "Access the OpenAlex academic research catalog - 270M+ publications through MCP. STDIO & Streamable HTTP.",
|
|
5
5
|
"mcpName": "io.github.cyanheads/openalex-mcp-server",
|
|
6
6
|
"type": "module",
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/openalex-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/openalex-mcp-server.mcpb",
|
|
34
34
|
"generate:field-catalog": "bun scripts/generate-field-catalog.ts",
|
|
35
35
|
"audit:refresh": "rm -f bun.lock && bun install && bun audit",
|
|
36
|
+
"audit:fix": "bun audit fix",
|
|
36
37
|
"changelog:build": "bun scripts/build-changelog.ts",
|
|
37
38
|
"changelog:check": "bun scripts/build-changelog.ts --check",
|
|
38
39
|
"test": "vitest run",
|
|
@@ -80,7 +81,7 @@
|
|
|
80
81
|
"license": "Apache-2.0",
|
|
81
82
|
"engines": {
|
|
82
83
|
"node": ">=24.0.0",
|
|
83
|
-
"bun": ">=1.
|
|
84
|
+
"bun": ">=1.4.0"
|
|
84
85
|
},
|
|
85
86
|
"packageManager": "bun@1.4.0",
|
|
86
87
|
"publishConfig": {
|
|
@@ -88,16 +89,16 @@
|
|
|
88
89
|
},
|
|
89
90
|
"trustedDependencies": ["@socketsecurity/bun-security-scanner"],
|
|
90
91
|
"dependencies": {
|
|
91
|
-
"@cyanheads/mcp-ts-core": "^0.
|
|
92
|
+
"@cyanheads/mcp-ts-core": "^0.13.0",
|
|
92
93
|
"pino-pretty": "^13.1.3",
|
|
93
|
-
"zod": "^4.
|
|
94
|
+
"zod": "^4.6.1"
|
|
94
95
|
},
|
|
95
96
|
"devDependencies": {
|
|
96
|
-
"@biomejs/biome": "^2.5.
|
|
97
|
+
"@biomejs/biome": "^2.5.13",
|
|
97
98
|
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
98
|
-
"@types/node": "^26.
|
|
99
|
+
"@types/node": "^26.5.1",
|
|
99
100
|
"depcheck": "^1.4.7",
|
|
100
|
-
"ignore": "^7.0.
|
|
101
|
+
"ignore": "^7.0.9",
|
|
101
102
|
"tsc-alias": "^1.9.4",
|
|
102
103
|
"typescript": "^7.0.2",
|
|
103
104
|
"vitest": "^5.0.0"
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/openalex-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.7.
|
|
9
|
+
"version": "0.7.13",
|
|
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/openalex-mcp-server",
|
|
21
21
|
"runtimeHint": "node",
|
|
22
|
-
"version": "0.7.
|
|
22
|
+
"version": "0.7.13",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{
|
|
25
25
|
"type": "positional",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
68
68
|
"identifier": "@cyanheads/openalex-mcp-server",
|
|
69
69
|
"runtimeHint": "node",
|
|
70
|
-
"version": "0.7.
|
|
70
|
+
"version": "0.7.13",
|
|
71
71
|
"packageArguments": [
|
|
72
72
|
{
|
|
73
73
|
"type": "positional",
|