@cyanheads/earthquake-mcp-server 0.1.4 → 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 +37 -53
- package/Dockerfile +1 -1
- package/README.md +1 -1
- package/package.json +19 -30
- package/server.json +6 -6
- package/changelog/0.1.x/0.1.0.md +0 -19
- package/changelog/0.1.x/0.1.1.md +0 -20
- package/changelog/0.1.x/0.1.2.md +0 -13
- package/changelog/0.1.x/0.1.3.md +0 -21
- package/changelog/0.1.x/0.1.4.md +0 -12
- package/changelog/template.md +0 -119
package/CLAUDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Agent Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** earthquake-mcp-server
|
|
4
4
|
**Package:** `@cyanheads/earthquake-mcp-server`
|
|
5
|
-
**Version:** 0.1.
|
|
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
|
|
255
|
-
| `
|
|
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
|
-
| `
|
|
279
|
-
| `
|
|
280
|
-
| `
|
|
281
|
-
| `
|
|
282
|
-
| `bun run audit:refresh` | Delete `bun.lock`, reinstall, re-audit
|
|
283
|
-
| `
|
|
284
|
-
| `
|
|
285
|
-
| `
|
|
286
|
-
| `
|
|
287
|
-
| `
|
|
288
|
-
| `
|
|
289
|
-
| `
|
|
290
|
-
| `
|
|
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
|
-
`
|
|
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
|
-
|
|
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
|
-
|
|
310
|
-
[](https://github.com/<OWNER>/<REPO>/releases/latest/download/<PACKAGE_NAME>.mcpb)
|
|
311
|
-
[](https://cursor.com/en/install-mcp?name=<PACKAGE_NAME>&config=<BASE64_CONFIG>)
|
|
312
|
-
[](https://vscode.dev/redirect?url=vscode:mcp/install?<URLENCODED_JSON>)
|
|
313
|
-
```
|
|
302
|
+
---
|
|
314
303
|
|
|
315
|
-
|
|
304
|
+
## Publishing
|
|
316
305
|
|
|
317
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 `
|
|
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
|
-
- [ ] `
|
|
372
|
+
- [ ] `bun run devcheck` passes
|
package/Dockerfile
CHANGED
|
@@ -39,7 +39,7 @@ ENV NODE_ENV=production
|
|
|
39
39
|
|
|
40
40
|
# OCI image metadata (https://github.com/opencontainers/image-spec/blob/main/annotations.md)
|
|
41
41
|
LABEL org.opencontainers.image.title="@cyanheads/earthquake-mcp-server"
|
|
42
|
-
LABEL org.opencontainers.image.description="
|
|
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."
|
|
43
43
|
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
|
44
44
|
LABEL org.opencontainers.image.source="https://github.com/cyanheads/earthquake-mcp-server"
|
|
45
45
|
|
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/earthquake-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/earthquake-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
package/package.json
CHANGED
|
@@ -1,43 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/earthquake-mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"mcpName": "io.github.cyanheads/earthquake-mcp-server",
|
|
5
|
-
"description": "Search USGS and EMSC seismic data — real-time feeds, 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": "
|
|
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",
|
|
40
|
-
"publish-mcp": "mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish"
|
|
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"
|
|
41
31
|
},
|
|
42
32
|
"keywords": [
|
|
43
33
|
"mcp",
|
|
@@ -94,7 +84,6 @@
|
|
|
94
84
|
"depcheck": "^1.4.7",
|
|
95
85
|
"ignore": "^7.0.5",
|
|
96
86
|
"tsc-alias": "^1.8.17",
|
|
97
|
-
"tsx": "^4.22.3",
|
|
98
87
|
"typescript": "^6.0.3",
|
|
99
88
|
"vitest": "^4.1.7"
|
|
100
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": "Search USGS and EMSC seismic data
|
|
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.
|
|
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": "
|
|
16
|
-
"version": "0.1.
|
|
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": "
|
|
45
|
-
"version": "0.1.
|
|
44
|
+
"runtimeHint": "bun",
|
|
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,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`
|
package/changelog/0.1.x/0.1.1.md
DELETED
|
@@ -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
|
package/changelog/0.1.x/0.1.2.md
DELETED
|
@@ -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`.
|
package/changelog/0.1.x/0.1.3.md
DELETED
|
@@ -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`).
|
package/changelog/0.1.x/0.1.4.md
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
summary: "Sync tagline across all description surfaces; add publish-mcp script"
|
|
3
|
-
breaking: false
|
|
4
|
-
security: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# 0.1.4 — 2026-05-23
|
|
8
|
-
|
|
9
|
-
## Changed
|
|
10
|
-
|
|
11
|
-
- **Tagline**: Updated description across `package.json`, `server.json`, `manifest.json`, and README — new canonical form: "Search USGS and EMSC seismic data — real-time feeds, event queries, and earthquake counts."
|
|
12
|
-
- **`package.json`**: Added `publish-mcp` script (Keychain-backed `mcp-publisher` login + publish).
|
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
|
-
- -->
|