@cyanheads/earthquake-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 CHANGED
@@ -1,8 +1,8 @@
1
- # Developer Protocol
1
+ # Agent Protocol
2
2
 
3
3
  **Server:** earthquake-mcp-server
4
4
  **Package:** `@cyanheads/earthquake-mcp-server`
5
- **Version:** 0.1.2
5
+ **Version:** 0.1.5
6
6
  **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.7`
7
7
  **Engines:** Bun ≥1.3.0, Node ≥24.0.0
8
8
  **MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
@@ -248,22 +248,25 @@ Available skills:
248
248
  | `add-service` | Scaffold a new service integration |
249
249
  | `add-test` | Scaffold test file for a tool, resource, or service |
250
250
  | `field-test` | Exercise tools/resources/prompts with real inputs, verify behavior, report issues |
251
+ | `tool-defs-analysis` | Read-only audit of definition language: voice, leaks, defaults, recovery hints, examples |
251
252
  | `security-pass` | Audit server for MCP-flavored security gaps: output injection, scope blast radius, input sinks, tenant isolation |
252
253
  | `devcheck` | Lint, format, typecheck, audit |
253
254
  | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
254
- | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
255
- | `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
256
- | `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
255
+ | `maintenance` | Investigate changelogs, adopt upstream changes, and sync skills after `bun update --latest` |
256
+ | `release-and-publish` | Ship a release: verification gate, push commits+tags, publish to npm / MCP Registry / GHCR / `.mcpb` bundle on GitHub Releases |
257
257
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
258
258
  | `api-canvas` | DataCanvas: register tabular data, run SQL, export, plus the `spillover()` helper for big result sets — Tier 3 opt-in |
259
259
  | `api-config` | AppConfig, parseConfig, env vars |
260
260
  | `api-context` | Context interface, logger, state, progress |
261
261
  | `api-errors` | McpError, JsonRpcErrorCode, error patterns |
262
+ | `api-linter` | Definition lint rules reference (`format-parity`, `schema-*`, `server-json-*`, …) |
262
263
  | `api-services` | LLM, Speech, Graph services |
264
+ | `api-telemetry` | OTel catalog: spans, metrics, completion logs, env config, cardinality rules |
263
265
  | `api-testing` | createMockContext, test patterns |
264
266
  | `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
265
- | `api-telemetry` | OTel catalog: spans, metrics, completion logs, env config, cardinality rules |
266
267
  | `api-workers` | Cloudflare Workers runtime |
268
+ | `report-issue-framework` | File bug/feature request against @cyanheads/mcp-ts-core |
269
+ | `report-issue-local` | File bug/feature request against this server's repo |
267
270
 
268
271
  When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
269
272
 
@@ -271,72 +274,53 @@ When you complete a skill's checklist, check the boxes and add a completion time
271
274
 
272
275
  ## Commands
273
276
 
274
- **Runtime:** Scripts use `tsx` — both `npm run <cmd>` and `bun run <cmd>` work. `bun` is slightly faster for script invocation but not required.
275
-
276
277
  | Command | Purpose |
277
278
  |:--------|:--------|
278
- | `npm run build` | Compile TypeScript |
279
- | `npm run rebuild` | Clean + build |
280
- | `npm run clean` | Remove build artifacts |
281
- | `npm run devcheck` | Lint + format + typecheck + security + changelog sync |
282
- | `bun run audit:refresh` | Delete `bun.lock`, reinstall, re-audit. Use when `devcheck` flags a transitive advisory — stale lockfile can mask already-patched deps. If advisory survives, it's real. |
283
- | `npm run tree` | Generate directory structure doc |
284
- | `npm run format` | Auto-fix formatting |
285
- | `npm test` | Run tests |
286
- | `npm run start:stdio` | Production mode (stdio) |
287
- | `npm run start:http` | Production mode (HTTP) |
288
- | `npm run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
289
- | `npm run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
290
- | `npm run bundle` | Build and pack as `.mcpb` for one-click Claude Desktop install |
279
+ | `bun run build` | Compile TypeScript |
280
+ | `bun run rebuild` | Clean + build |
281
+ | `bun run clean` | Remove build artifacts |
282
+ | `bun run devcheck` | Lint + format + typecheck + security + packaging alignment |
283
+ | `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. |
284
+ | `bun run tree` | Generate directory structure doc |
285
+ | `bun run format` | Auto-fix formatting |
286
+ | `bun run test` | Run tests |
287
+ | `bun run lint:mcp` | Validate MCP definitions against spec |
288
+ | `bun run lint:packaging` | Validate env var alignment between `manifest.json` and `server.json` (skipped cleanly when `manifest.json` is absent) |
289
+ | `bun run list-skills` | List skills in `skills/` with name + description |
290
+ | `bun run bundle` | Build and pack as `dist/earthquake-mcp-server.mcpb` for one-click Claude Desktop install |
291
+ | `bun run start:stdio` | Production mode (stdio) |
292
+ | `bun run start:http` | Production mode (HTTP) |
291
293
 
292
294
  ---
293
295
 
294
296
  ## Bundling
295
297
 
296
- `npm run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. MCPB is stdio-only — HTTP and Cloudflare Workers deployments are unaffected. Consumers who don't need it can delete `manifest.json` and `.mcpbignore`; `lint:packaging` skips cleanly.
297
-
298
- **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.
299
-
300
- **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.
298
+ `bun run bundle` produces `dist/earthquake-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/earthquake-mcp-server.mcpb` URL that powers the README install badge.
301
299
 
302
- | Client | Mechanism |
303
- |:-------|:----------|
304
- | 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. |
305
- | Cursor | Official `https://cursor.com/en/install-mcp` endpoint with base64 JSON config. |
306
- | 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. |
307
- | Claude Code / Codex | CLI only (`claude mcp add` / `codex mcp add`); no URL scheme. |
300
+ **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.
308
301
 
309
- ```markdown
310
- [![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/<OWNER>/<REPO>/releases/latest/download/<PACKAGE_NAME>.mcpb)
311
- [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=<PACKAGE_NAME>&config=<BASE64_CONFIG>)
312
- [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?<URLENCODED_JSON>)
313
- ```
302
+ ---
314
303
 
315
- Both install links route through HTTPS endpoints (`cursor.com/en/install-mcp` and `vscode.dev/redirect`) — GitHub-rendered markdown strips non-HTTP URL schemes from anchors, so a raw `cursor://` or `vscode:` link won't click through from github.com.
304
+ ## Publishing
316
305
 
317
- Generate the encoded configs (replace `<PACKAGE_NAME>` and add env vars for any required API keys):
306
+ 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:
318
307
 
319
308
  ```bash
320
- # Cursor: base64-encoded JSON. Split command/args, add env when keys are needed.
321
- echo -n '{"command":"npx","args":["-y","<PACKAGE_NAME>"],"env":{"API_KEY":"your-api-key"}}' | base64
322
- # Without env (no required keys):
323
- echo -n '{"command":"npx","args":["-y","<PACKAGE_NAME>"]}' | base64
324
-
325
- # VS Code: URL-encoded JSON. Same shape plus a `name` field.
326
- node -p 'encodeURIComponent(JSON.stringify({name:"<SHORT_NAME>",command:"npx",args:["-y","<PACKAGE_NAME>"],env:{API_KEY:"your-api-key"}}))'
327
- # Without env:
328
- node -p 'encodeURIComponent(JSON.stringify({name:"<SHORT_NAME>",command:"npx",args:["-y","<PACKAGE_NAME>"]}))'
329
- ```
309
+ bun publish --access public
330
310
 
331
- Both clients use the same `{command, args, env}` shape (matching `mcp.json` schema). VS Code adds a top-level `name` field. Omit `env` entirely when no API keys are needed — don't include empty objects or framework-only vars like `MCP_TRANSPORT_TYPE`.
311
+ docker buildx build --platform linux/amd64,linux/arm64 \
312
+ -t ghcr.io/cyanheads/earthquake-mcp-server:<version> \
313
+ -t ghcr.io/cyanheads/earthquake-mcp-server:latest \
314
+ --push .
332
315
 
333
- The Claude Desktop badge requires the bundle to ship with a stable filename — `bun run bundle` outputs `dist/<PACKAGE_NAME>.mcpb`, and `release-and-publish` attaches that file to the GitHub Release. `releases/latest/download/<PACKAGE_NAME>.mcpb` then redirects to the most recent release.
316
+ mcp-publisher publish
317
+ ```
334
318
 
335
319
  ---
336
320
 
337
321
  ## Changelog
338
322
 
339
- 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 `npm 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 `npm run changelog:build` — devcheck hard-fails on drift; never hand-edit it.
323
+ 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.
340
324
 
341
325
  Each per-version file opens with YAML frontmatter:
342
326
 
@@ -385,4 +369,4 @@ import { getMyService } from '@/services/my-domain/my-service.js';
385
369
  - [ ] If wrapping external API: tests include at least one sparse payload case with omitted upstream fields
386
370
  - [ ] Registered in `createApp()` arrays (directly or via barrel exports)
387
371
  - [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
388
- - [ ] `npm run devcheck` passes
372
+ - [ ] `bun run devcheck` passes
package/Dockerfile CHANGED
@@ -17,8 +17,9 @@ RUN bun install --frozen-lockfile
17
17
  # Copy the rest of the source code
18
18
  COPY . .
19
19
 
20
- # Build the application
21
- RUN bun run build
20
+ # Build the application. Use bun directly rather than through the build script wrapper
21
+ # to avoid tsx (Node CJS) failing under Bun's Linux runtime when bunfig.toml is present.
22
+ RUN bun scripts/build.ts
22
23
 
23
24
 
24
25
  # ==============================================================================
@@ -38,7 +39,7 @@ ENV NODE_ENV=production
38
39
 
39
40
  # OCI image metadata (https://github.com/opencontainers/image-spec/blob/main/annotations.md)
40
41
  LABEL org.opencontainers.image.title="@cyanheads/earthquake-mcp-server"
41
- LABEL org.opencontainers.image.description="Global seismic data via USGS and EMSC: real-time feeds, FDSN event queries, and earthquake counts."
42
+ LABEL org.opencontainers.image.description="Search USGS and EMSC seismic data — real-time feeds, event queries, and earthquake counts via MCP. STDIO or Streamable HTTP."
42
43
  LABEL org.opencontainers.image.licenses="Apache-2.0"
43
44
  LABEL org.opencontainers.image.source="https://github.com/cyanheads/earthquake-mcp-server"
44
45
 
package/README.md CHANGED
@@ -1,13 +1,13 @@
1
1
  <div align="center">
2
2
  <h1>@cyanheads/earthquake-mcp-server</h1>
3
- <p><b>Global seismic data via USGS and EMSC: real-time feeds, FDSN event queries, and earthquake counts. STDIO or Streamable HTTP.</b>
3
+ <p><b>Search USGS and EMSC seismic data — real-time feeds, event queries, and earthquake counts via MCP. STDIO or Streamable HTTP.</b>
4
4
  <div>4 Tools • 2 Resources</div>
5
5
  </p>
6
6
  </div>
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![Version](https://img.shields.io/badge/Version-0.1.3-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/earthquake-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/earthquake-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/earthquake-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.1.5-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/earthquake-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/earthquake-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/earthquake-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
 
package/package.json CHANGED
@@ -1,42 +1,33 @@
1
1
  {
2
2
  "name": "@cyanheads/earthquake-mcp-server",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "mcpName": "io.github.cyanheads/earthquake-mcp-server",
5
- "description": "Global seismic data via USGS and EMSC: real-time feeds, FDSN event queries, and earthquake counts.",
5
+ "description": "Search USGS and EMSC seismic data — real-time feeds, event queries, and earthquake counts 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
  "earthquake-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": "tsx scripts/build.ts",
24
- "rebuild": "tsx scripts/clean.ts && tsx scripts/build.ts",
25
- "clean": "tsx scripts/clean.ts",
26
- "devcheck": "tsx scripts/devcheck.ts",
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
- "tree": "tsx scripts/tree.ts",
29
- "list-skills": "tsx scripts/list-skills.ts",
30
- "format": "biome check --write --unsafe .",
31
- "lint:mcp": "tsx scripts/lint-mcp.ts",
32
- "lint:packaging": "tsx scripts/lint-packaging.ts",
33
- "bundle": "npm run build && npx -y @anthropic-ai/mcpb pack . dist/earthquake-mcp-server.mcpb",
34
- "changelog:build": "tsx scripts/build-changelog.ts",
35
- "changelog:check": "tsx scripts/build-changelog.ts --check",
36
- "test": "vitest run",
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/earthquake-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",
@@ -93,7 +84,6 @@
93
84
  "depcheck": "^1.4.7",
94
85
  "ignore": "^7.0.5",
95
86
  "tsc-alias": "^1.8.17",
96
- "tsx": "^4.22.3",
97
87
  "typescript": "^6.0.3",
98
88
  "vitest": "^4.1.7"
99
89
  }
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/earthquake-mcp-server",
4
- "description": "Global seismic data via USGS and EMSC: real-time feeds, FDSN event queries, and earthquake counts.",
4
+ "description": "Search USGS and EMSC seismic data \u2014 real-time feeds, event queries, and earthquake counts.",
5
5
  "repository": {
6
6
  "url": "https://github.com/cyanheads/earthquake-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.1.3",
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/earthquake-mcp-server",
15
- "runtimeHint": "node",
16
- "version": "0.1.3",
15
+ "runtimeHint": "bun",
16
+ "version": "0.1.5",
17
17
  "packageArguments": [
18
18
  {
19
19
  "type": "positional",
@@ -41,8 +41,8 @@
41
41
  "registryType": "npm",
42
42
  "registryBaseUrl": "https://registry.npmjs.org",
43
43
  "identifier": "@cyanheads/earthquake-mcp-server",
44
- "runtimeHint": "node",
45
- "version": "0.1.3",
44
+ "runtimeHint": "bun",
45
+ "version": "0.1.5",
46
46
  "packageArguments": [
47
47
  {
48
48
  "type": "positional",
@@ -1,19 +0,0 @@
1
- ---
2
- summary: "Initial release — USGS and EMSC earthquake data via 4 tools and 2 resources"
3
- breaking: false
4
- security: false
5
- ---
6
-
7
- # 0.1.0 — 2026-05-23
8
-
9
- ## Added
10
-
11
- - `earthquake_get_feed` tool — fetch USGS pre-computed real-time GeoJSON feeds by magnitude tier (`all`, `1.0`, `2.5`, `4.5`, `significant`) and time window (`hour`, `day`, `week`, `month`)
12
- - `earthquake_search` tool — FDSN ComCat query API with dual-source support (USGS and EMSC), full filter surface (time, magnitude, depth, location radius, PAGER alert level, DYFI felt count, significance score), and sort options
13
- - `earthquake_count` tool — lightweight count endpoint for statistical queries and pre-flight result-size checks; surfaces `exceeds_limit` flag when count exceeds 20,000
14
- - `earthquake_get_event` tool — fetch full USGS event detail by event ID including DYFI, ShakeMap MMI, PAGER, and tsunami flag
15
- - `earthquake://feed/{magnitude_tier}/{time_window}` resource — USGS real-time feed as injectable context; lists all 20 tier/window combinations
16
- - `earthquake://event/{event_id}` resource — full USGS event detail by ID as injectable context
17
- - USGS ComCat service (`src/services/usgs`) — GeoJSON feed fetcher and FDSN event query/count API client
18
- - EMSC SeismicPortal service (`src/services/emsc`) — FDSN-WS event search and count endpoints
19
- - Server config (`src/config/server-config.ts`) — `USGS_BASE_URL`, `EMSC_BASE_URL`, `DEFAULT_LIMIT`, `REQUEST_TIMEOUT_MS`
@@ -1,20 +0,0 @@
1
- ---
2
- summary: "First functional release — 4 tools and 2 resources for real-time and historical global earthquake data via USGS and EMSC"
3
- breaking: false
4
- security: false
5
- ---
6
-
7
- # 0.1.1 — 2026-05-23
8
-
9
- ## Added
10
-
11
- - `earthquake_get_feed` tool — USGS real-time GeoJSON feeds by magnitude tier (`all`, `1.0`, `2.5`, `4.5`, `significant`) and time window (`hour`, `day`, `week`, `month`)
12
- - `earthquake_search` tool — FDSN ComCat query across USGS and EMSC with full filter surface (time, magnitude, depth, location radius, PAGER alert level, DYFI felt count, significance score) and sort options
13
- - `earthquake_count` tool — lightweight count endpoint for statistical queries; surfaces `exceeds_limit` flag when count exceeds 20,000
14
- - `earthquake_get_event` tool — full USGS event detail by ID including DYFI, ShakeMap MMI, PAGER, and tsunami flag
15
- - `earthquake://feed/{magnitude_tier}/{time_window}` resource — USGS real-time feed as injectable context; lists all 20 tier/window combinations
16
- - `earthquake://event/{event_id}` resource — full USGS event detail by ID as injectable context
17
- - USGS ComCat service (`src/services/usgs`) — GeoJSON feed fetcher and FDSN event query/count client
18
- - EMSC SeismicPortal service (`src/services/emsc`) — FDSN-WS event search and count client
19
- - Server config — `USGS_BASE_URL`, `EMSC_BASE_URL`, `DEFAULT_LIMIT`, `REQUEST_TIMEOUT_MS`
20
- - 45 tests across tools, resources, and services
@@ -1,13 +0,0 @@
1
- ---
2
- summary: "Field-test fixes: earthquake_get_event always-not-found, feed description M prefix on string tiers, search truncation signal"
3
- breaking: false
4
- security: false
5
- ---
6
-
7
- # 0.1.2 — 2026-05-23
8
-
9
- ## Fixed
10
-
11
- - **`earthquake_get_event`**: USGS eventid endpoint returns a bare GeoJSON `Feature`, not a `FeatureCollection` — the previous code always hit the not-found branch. Now detects the response type and handles both shapes.
12
- - **`earthquake-feed` resource**: Magnitude tier descriptions for string tiers (`all`, `significant`) rendered as `Mall+` / `Msignificant+`. Now only prepends `M` prefix for numeric tiers.
13
- - **`earthquake_search`**: No signal when USGS paginates. Now returns a `truncated: true` field and a markdown notice when results are capped at the requested limit, with a pointer to `earthquake_count`.
@@ -1,21 +0,0 @@
1
- ---
2
- summary: "Fix earthquake_get_event and event resource not_found path; sync metadata to gold standard"
3
- breaking: false
4
- security: false
5
- ---
6
-
7
- # 0.1.3 — 2026-05-24
8
-
9
- ## Fixed
10
-
11
- - **`earthquake_get_event` tool**: `fetchWithTimeout` throws `McpError(NotFound)` for 404 before the handler sees the response. The previous code checked `response.status` directly, which the framework never reached — so all event lookups fell through to the else branch regardless of whether the event existed. Now catches `McpError(NotFound)` and rethrows via `ctx.fail('not_found', …)` so the error contract is honoured.
12
- - **`earthquake://event/{event_id}` resource**: Same root cause as the tool. Now catches `McpError(NotFound)` from `getEvent` and rethrows via `notFound()` with a recoverable message.
13
- - **`usgs-service`**: Dead `response.status === 404` and `Error 404` body checks removed — these were unreachable after the framework started intercepting non-2xx responses.
14
-
15
- ## Changed
16
-
17
- - **`package.json`**: Added `mcpName`, `bugs`, `homepage`, `author`, `funding`, `packageManager` fields; expanded keywords; fixed `repository.url` format.
18
- - **`server.json`**: Corrected `name` to `io.github.cyanheads/earthquake-mcp-server`.
19
- - **`manifest.json`**: Version updated from 0.1.1 → 0.1.2 (missed in prior release).
20
- - **`Dockerfile`**: OCI `title`, `description`, and `source` labels filled in.
21
- - **`bunfig.toml`**: Added (`install.auto = "fallback"`, `run.bun = true`).
@@ -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
- - -->