@cyanheads/cyanheads-mcp-server 0.3.1 → 0.3.4
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 +26 -24
- package/CLAUDE.md +26 -24
- package/Dockerfile +16 -7
- package/README.md +7 -7
- package/changelog/0.3.x/0.3.2.md +12 -0
- package/changelog/0.3.x/0.3.3.md +24 -0
- package/changelog/0.3.x/0.3.4.md +33 -0
- package/changelog/template.md +5 -3
- package/dist/config/server-config.d.ts +1 -1
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +12 -5
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/describe.tool.d.ts +8 -4
- package/dist/mcp-server/tools/definitions/describe.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/describe.tool.js +18 -1
- package/dist/mcp-server/tools/definitions/describe.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search.tool.d.ts +5 -5
- package/dist/services/catalog/catalog-service.d.ts.map +1 -1
- package/dist/services/catalog/embeddings-runtime.d.ts.map +1 -1
- package/dist/services/catalog/embeddings-runtime.js.map +1 -1
- package/dist/services/catalog/remote-catalog-provider.d.ts.map +1 -1
- package/manifest.json +3 -3
- package/package.json +25 -22
- package/server.json +7 -7
package/AGENTS.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** cyanheads-mcp-server
|
|
4
|
-
**Version:** 0.3.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.
|
|
4
|
+
**Version:** 0.3.4
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.11.0`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
8
8
|
**Zod:** ^4.4.3
|
|
@@ -46,7 +46,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
|
|
|
46
46
|
- **Logic throws, framework catches.** Tool/resource handlers are pure — throw on failure, no `try/catch`. Plain `Error` is fine; the framework catches, classifies, and formats. Use error factories (`notFound()`, `validationError()`, etc.) when the error code matters.
|
|
47
47
|
- **Use `ctx.log`** for request-scoped logging. No `console` calls.
|
|
48
48
|
- **Use `ctx.state`** for tenant-scoped storage. Never access persistence directly.
|
|
49
|
-
- **Check `ctx.elicit
|
|
49
|
+
- **Check `ctx.elicit`** for presence before calling.
|
|
50
50
|
- **Secrets in env vars only** — never hardcoded.
|
|
51
51
|
- **Close the loop on issues.** When implementing work tracked by a GitHub issue, comment on the issue with what landed and close it. Do both — a comment without a close leaves stale issues open; a close without a comment leaves no record of what shipped. The comment is for future readers — state the concrete changes, not the conversation that produced them.
|
|
52
52
|
|
|
@@ -160,8 +160,7 @@ Handlers receive a unified `ctx` object. Key properties:
|
|
|
160
160
|
|:---------|:------------|
|
|
161
161
|
| `ctx.log` | Request-scoped logger — `.debug()`, `.info()`, `.notice()`, `.warning()`, `.error()`. Auto-correlates requestId, traceId, tenantId. |
|
|
162
162
|
| `ctx.state` | Tenant-scoped KV — `.get(key)`, `.set(key, value, { ttl? })`, `.delete(key)`, `.list(prefix, { cursor, limit })`. Accepts any serializable value. |
|
|
163
|
-
| `ctx.elicit` | Ask user for structured input. **Check for presence first:** `if (ctx.elicit) { ... }` |
|
|
164
|
-
| `ctx.sample` | Request LLM completion from the client. **Check for presence first:** `if (ctx.sample) { ... }` |
|
|
163
|
+
| `ctx.elicit` | Ask user for structured input — form call `(message, schema)` or `.url(message, url)` for an external link. **Check for presence first:** `if (ctx.elicit) { ... }` |
|
|
165
164
|
| `ctx.signal` | `AbortSignal` for cancellation. |
|
|
166
165
|
| `ctx.progress` | Task progress (present when `task: true`) — `.setTotal(n)`, `.increment()`, `.update(message)`. |
|
|
167
166
|
| `ctx.requestId` | Unique request ID. |
|
|
@@ -246,7 +245,7 @@ src/
|
|
|
246
245
|
|
|
247
246
|
## Skills
|
|
248
247
|
|
|
249
|
-
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.
|
|
248
|
+
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. `bun run list-skills` prints the full registry.
|
|
250
249
|
|
|
251
250
|
**Agent skill directory:** Copy skills into the directory your agent discovers (Claude Code: `.claude/skills/`, others: equivalent). Skills then load as context without referencing `skills/` paths. After framework updates, run the `maintenance` skill — Phase B re-syncs the agent directory.
|
|
252
251
|
|
|
@@ -266,7 +265,6 @@ Available skills:
|
|
|
266
265
|
| `tool-defs-analysis` | Read-only audit of MCP definition language across the surface — voice, leaks, defaults, recovery hints, output descriptions |
|
|
267
266
|
| `security-pass` | Audit server for MCP-flavored security gaps: output injection, scope blast radius, input sinks, tenant isolation |
|
|
268
267
|
| `code-simplifier` | Post-session cleanup against `git diff` — modernize syntax, consolidate duplication, align with the codebase |
|
|
269
|
-
| `devcheck` | Lint, format, typecheck, audit |
|
|
270
268
|
| `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
|
|
271
269
|
| `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
|
|
272
270
|
| `release-and-publish` | Push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
|
|
@@ -274,13 +272,14 @@ Available skills:
|
|
|
274
272
|
| `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
|
|
275
273
|
| `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
|
|
276
274
|
| `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
|
|
275
|
+
| `techniques` | Catalog of response/data-shaping techniques — overflow handling, payload shaping, retrieval patterns |
|
|
277
276
|
| `api-auth` | Auth modes, scopes, JWT/OAuth |
|
|
278
277
|
| `api-canvas` | DataCanvas: register tabular data, run SQL, export, plus the `spillover()` helper for big result sets — Tier 3 opt-in |
|
|
279
278
|
| `api-config` | AppConfig, parseConfig, env vars |
|
|
280
279
|
| `api-context` | Context interface, logger, state, progress |
|
|
281
280
|
| `api-errors` | McpError, JsonRpcErrorCode, error patterns |
|
|
282
281
|
| `api-linter` | Definition linter rule catalog — invoked by `bun run lint:mcp` and `devcheck` |
|
|
283
|
-
| `api-mirror` | MirrorService: persistent
|
|
282
|
+
| `api-mirror` | MirrorService: persistent self-refreshing local mirror (embedded SQLite + FTS5) of a bulk upstream dataset — Tier 3 opt-in |
|
|
284
283
|
| `api-services` | LLM, Speech, Graph services |
|
|
285
284
|
| `api-testing` | createMockContext, test patterns |
|
|
286
285
|
| `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
|
|
@@ -295,31 +294,34 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
295
294
|
|
|
296
295
|
## Commands
|
|
297
296
|
|
|
298
|
-
**Runtime:** Scripts use
|
|
297
|
+
**Runtime:** Scripts use Bun's native TypeScript execution — `bun run <cmd>` is the standard invocation. `npm run <cmd>` also works (npm delegates to bun).
|
|
299
298
|
|
|
300
299
|
| Command | Purpose |
|
|
301
300
|
|:--------|:--------|
|
|
302
|
-
| `
|
|
303
|
-
| `
|
|
304
|
-
| `
|
|
305
|
-
| `
|
|
301
|
+
| `bun run build` | Compile TypeScript |
|
|
302
|
+
| `bun run rebuild` | Clean + build |
|
|
303
|
+
| `bun run clean` | Remove build artifacts |
|
|
304
|
+
| `bun run devcheck` | Lint + format + typecheck + security + changelog sync |
|
|
306
305
|
| `bun run audit:refresh` | Delete `bun.lock`, reinstall, and re-run `bun audit`. Use when `devcheck` flags a transitive advisory — Bun's `update` is sticky on transitive resolutions, so the advisory may be a stale-lockfile false positive. If it survives the refresh, it's real. |
|
|
307
|
-
| `
|
|
308
|
-
| `
|
|
309
|
-
| `
|
|
310
|
-
| `
|
|
311
|
-
| `
|
|
312
|
-
| `
|
|
313
|
-
| `
|
|
314
|
-
| `
|
|
315
|
-
| `
|
|
316
|
-
| `
|
|
306
|
+
| `bun run lint:mcp` | Run the MCP definition linter standalone (rule catalog: `api-linter` skill) |
|
|
307
|
+
| `bun run lint:packaging` | Packaging surface checks — `server.json`/`manifest.json` env-var parity and plugin manifest identity (run by devcheck) |
|
|
308
|
+
| `bun run list-skills` | Print the skill registry |
|
|
309
|
+
| `bun run tree` | Generate directory structure doc |
|
|
310
|
+
| `bun run format` | Auto-fix formatting (safe fixes only) |
|
|
311
|
+
| `bun run format:unsafe` | Also apply Biome's unsafe autofixes — review the diff; they can change behavior |
|
|
312
|
+
| `bun run test` | Run tests (Vitest — use `bun run test`, not `bun test`) |
|
|
313
|
+
| `bun run start:stdio` | Production mode (stdio) |
|
|
314
|
+
| `bun run start:http` | Production mode (HTTP) |
|
|
315
|
+
| `bun run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
|
|
316
|
+
| `bun run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
|
|
317
|
+
| `bun run release:github` | Create GitHub Release from annotated tag (title format: `v<VERSION>: <subject>`) |
|
|
318
|
+
| `bun run bundle` | Build, pack, and clean a `.mcpb` for one-click Claude Desktop install |
|
|
317
319
|
|
|
318
320
|
---
|
|
319
321
|
|
|
320
322
|
## Bundling
|
|
321
323
|
|
|
322
|
-
`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.
|
|
324
|
+
`npm run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. The pack step is followed by `scripts/clean-mcpb.ts`, which prunes dev dependencies (`mcpb clean`) and strips dependency-shipped agent docs (`node_modules/**` `skills/`, `.claude/`, `.agents/`, `SKILL.md`) that root-anchored `.mcpbignore` patterns cannot reach. 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.
|
|
323
325
|
|
|
324
326
|
**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.
|
|
325
327
|
|
package/CLAUDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** cyanheads-mcp-server
|
|
4
|
-
**Version:** 0.3.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.
|
|
4
|
+
**Version:** 0.3.4
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.11.0`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
8
8
|
**Zod:** ^4.4.3
|
|
@@ -46,7 +46,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
|
|
|
46
46
|
- **Logic throws, framework catches.** Tool/resource handlers are pure — throw on failure, no `try/catch`. Plain `Error` is fine; the framework catches, classifies, and formats. Use error factories (`notFound()`, `validationError()`, etc.) when the error code matters.
|
|
47
47
|
- **Use `ctx.log`** for request-scoped logging. No `console` calls.
|
|
48
48
|
- **Use `ctx.state`** for tenant-scoped storage. Never access persistence directly.
|
|
49
|
-
- **Check `ctx.elicit
|
|
49
|
+
- **Check `ctx.elicit`** for presence before calling.
|
|
50
50
|
- **Secrets in env vars only** — never hardcoded.
|
|
51
51
|
- **Close the loop on issues.** When implementing work tracked by a GitHub issue, comment on the issue with what landed and close it. Do both — a comment without a close leaves stale issues open; a close without a comment leaves no record of what shipped. The comment is for future readers — state the concrete changes, not the conversation that produced them.
|
|
52
52
|
|
|
@@ -160,8 +160,7 @@ Handlers receive a unified `ctx` object. Key properties:
|
|
|
160
160
|
|:---------|:------------|
|
|
161
161
|
| `ctx.log` | Request-scoped logger — `.debug()`, `.info()`, `.notice()`, `.warning()`, `.error()`. Auto-correlates requestId, traceId, tenantId. |
|
|
162
162
|
| `ctx.state` | Tenant-scoped KV — `.get(key)`, `.set(key, value, { ttl? })`, `.delete(key)`, `.list(prefix, { cursor, limit })`. Accepts any serializable value. |
|
|
163
|
-
| `ctx.elicit` | Ask user for structured input. **Check for presence first:** `if (ctx.elicit) { ... }` |
|
|
164
|
-
| `ctx.sample` | Request LLM completion from the client. **Check for presence first:** `if (ctx.sample) { ... }` |
|
|
163
|
+
| `ctx.elicit` | Ask user for structured input — form call `(message, schema)` or `.url(message, url)` for an external link. **Check for presence first:** `if (ctx.elicit) { ... }` |
|
|
165
164
|
| `ctx.signal` | `AbortSignal` for cancellation. |
|
|
166
165
|
| `ctx.progress` | Task progress (present when `task: true`) — `.setTotal(n)`, `.increment()`, `.update(message)`. |
|
|
167
166
|
| `ctx.requestId` | Unique request ID. |
|
|
@@ -246,7 +245,7 @@ src/
|
|
|
246
245
|
|
|
247
246
|
## Skills
|
|
248
247
|
|
|
249
|
-
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.
|
|
248
|
+
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. `bun run list-skills` prints the full registry.
|
|
250
249
|
|
|
251
250
|
**Agent skill directory:** Copy skills into the directory your agent discovers (Claude Code: `.claude/skills/`, others: equivalent). Skills then load as context without referencing `skills/` paths. After framework updates, run the `maintenance` skill — Phase B re-syncs the agent directory.
|
|
252
251
|
|
|
@@ -266,7 +265,6 @@ Available skills:
|
|
|
266
265
|
| `tool-defs-analysis` | Read-only audit of MCP definition language across the surface — voice, leaks, defaults, recovery hints, output descriptions |
|
|
267
266
|
| `security-pass` | Audit server for MCP-flavored security gaps: output injection, scope blast radius, input sinks, tenant isolation |
|
|
268
267
|
| `code-simplifier` | Post-session cleanup against `git diff` — modernize syntax, consolidate duplication, align with the codebase |
|
|
269
|
-
| `devcheck` | Lint, format, typecheck, audit |
|
|
270
268
|
| `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
|
|
271
269
|
| `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
|
|
272
270
|
| `release-and-publish` | Push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
|
|
@@ -274,13 +272,14 @@ Available skills:
|
|
|
274
272
|
| `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
|
|
275
273
|
| `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
|
|
276
274
|
| `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
|
|
275
|
+
| `techniques` | Catalog of response/data-shaping techniques — overflow handling, payload shaping, retrieval patterns |
|
|
277
276
|
| `api-auth` | Auth modes, scopes, JWT/OAuth |
|
|
278
277
|
| `api-canvas` | DataCanvas: register tabular data, run SQL, export, plus the `spillover()` helper for big result sets — Tier 3 opt-in |
|
|
279
278
|
| `api-config` | AppConfig, parseConfig, env vars |
|
|
280
279
|
| `api-context` | Context interface, logger, state, progress |
|
|
281
280
|
| `api-errors` | McpError, JsonRpcErrorCode, error patterns |
|
|
282
281
|
| `api-linter` | Definition linter rule catalog — invoked by `bun run lint:mcp` and `devcheck` |
|
|
283
|
-
| `api-mirror` | MirrorService: persistent
|
|
282
|
+
| `api-mirror` | MirrorService: persistent self-refreshing local mirror (embedded SQLite + FTS5) of a bulk upstream dataset — Tier 3 opt-in |
|
|
284
283
|
| `api-services` | LLM, Speech, Graph services |
|
|
285
284
|
| `api-testing` | createMockContext, test patterns |
|
|
286
285
|
| `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
|
|
@@ -295,31 +294,34 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
295
294
|
|
|
296
295
|
## Commands
|
|
297
296
|
|
|
298
|
-
**Runtime:** Scripts use
|
|
297
|
+
**Runtime:** Scripts use Bun's native TypeScript execution — `bun run <cmd>` is the standard invocation. `npm run <cmd>` also works (npm delegates to bun).
|
|
299
298
|
|
|
300
299
|
| Command | Purpose |
|
|
301
300
|
|:--------|:--------|
|
|
302
|
-
| `
|
|
303
|
-
| `
|
|
304
|
-
| `
|
|
305
|
-
| `
|
|
301
|
+
| `bun run build` | Compile TypeScript |
|
|
302
|
+
| `bun run rebuild` | Clean + build |
|
|
303
|
+
| `bun run clean` | Remove build artifacts |
|
|
304
|
+
| `bun run devcheck` | Lint + format + typecheck + security + changelog sync |
|
|
306
305
|
| `bun run audit:refresh` | Delete `bun.lock`, reinstall, and re-run `bun audit`. Use when `devcheck` flags a transitive advisory — Bun's `update` is sticky on transitive resolutions, so the advisory may be a stale-lockfile false positive. If it survives the refresh, it's real. |
|
|
307
|
-
| `
|
|
308
|
-
| `
|
|
309
|
-
| `
|
|
310
|
-
| `
|
|
311
|
-
| `
|
|
312
|
-
| `
|
|
313
|
-
| `
|
|
314
|
-
| `
|
|
315
|
-
| `
|
|
316
|
-
| `
|
|
306
|
+
| `bun run lint:mcp` | Run the MCP definition linter standalone (rule catalog: `api-linter` skill) |
|
|
307
|
+
| `bun run lint:packaging` | Packaging surface checks — `server.json`/`manifest.json` env-var parity and plugin manifest identity (run by devcheck) |
|
|
308
|
+
| `bun run list-skills` | Print the skill registry |
|
|
309
|
+
| `bun run tree` | Generate directory structure doc |
|
|
310
|
+
| `bun run format` | Auto-fix formatting (safe fixes only) |
|
|
311
|
+
| `bun run format:unsafe` | Also apply Biome's unsafe autofixes — review the diff; they can change behavior |
|
|
312
|
+
| `bun run test` | Run tests (Vitest — use `bun run test`, not `bun test`) |
|
|
313
|
+
| `bun run start:stdio` | Production mode (stdio) |
|
|
314
|
+
| `bun run start:http` | Production mode (HTTP) |
|
|
315
|
+
| `bun run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
|
|
316
|
+
| `bun run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
|
|
317
|
+
| `bun run release:github` | Create GitHub Release from annotated tag (title format: `v<VERSION>: <subject>`) |
|
|
318
|
+
| `bun run bundle` | Build, pack, and clean a `.mcpb` for one-click Claude Desktop install |
|
|
317
319
|
|
|
318
320
|
---
|
|
319
321
|
|
|
320
322
|
## Bundling
|
|
321
323
|
|
|
322
|
-
`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.
|
|
324
|
+
`npm run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. The pack step is followed by `scripts/clean-mcpb.ts`, which prunes dev dependencies (`mcpb clean`) and strips dependency-shipped agent docs (`node_modules/**` `skills/`, `.claude/`, `.agents/`, `SKILL.md`) that root-anchored `.mcpbignore` patterns cannot reach. 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.
|
|
323
325
|
|
|
324
326
|
**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.
|
|
325
327
|
|
package/Dockerfile
CHANGED
|
@@ -4,15 +4,17 @@
|
|
|
4
4
|
# This stage installs all dependencies (including dev), builds the TypeScript
|
|
5
5
|
# source code into JavaScript, and prepares the production assets.
|
|
6
6
|
# ==============================================================================
|
|
7
|
-
FROM oven/bun:1.3 AS build
|
|
7
|
+
FROM oven/bun:1.3.14 AS build
|
|
8
8
|
|
|
9
9
|
WORKDIR /usr/src/app
|
|
10
10
|
|
|
11
11
|
# Copy dependency manifests for optimized layer caching
|
|
12
12
|
COPY package.json bun.lock ./
|
|
13
13
|
|
|
14
|
-
# Install all dependencies (including dev dependencies for building)
|
|
15
|
-
|
|
14
|
+
# Install all dependencies (including dev dependencies for building).
|
|
15
|
+
# The BuildKit cache mount persists Bun's global package cache across builds.
|
|
16
|
+
RUN --mount=type=cache,target=/root/.bun/install/cache \
|
|
17
|
+
bun install --frozen-lockfile --ignore-scripts
|
|
16
18
|
|
|
17
19
|
# Copy the rest of the source code
|
|
18
20
|
COPY . .
|
|
@@ -29,7 +31,7 @@ RUN bun scripts/build.ts
|
|
|
29
31
|
# application. It uses a slim base image and only includes production
|
|
30
32
|
# dependencies and build artifacts.
|
|
31
33
|
# ==============================================================================
|
|
32
|
-
FROM oven/bun:1.3-slim AS production
|
|
34
|
+
FROM oven/bun:1.3.14-slim AS production
|
|
33
35
|
|
|
34
36
|
WORKDIR /usr/src/app
|
|
35
37
|
|
|
@@ -38,9 +40,11 @@ WORKDIR /usr/src/app
|
|
|
38
40
|
ENV NODE_ENV=production
|
|
39
41
|
|
|
40
42
|
# OCI image metadata (https://github.com/opencontainers/image-spec/blob/main/annotations.md)
|
|
43
|
+
ARG APP_VERSION
|
|
41
44
|
LABEL org.opencontainers.image.title="cyanheads-mcp-server"
|
|
42
45
|
LABEL org.opencontainers.image.description="Fleet discovery server for the cyanheads MCP ecosystem."
|
|
43
46
|
LABEL org.opencontainers.image.licenses="Apache-2.0"
|
|
47
|
+
LABEL org.opencontainers.image.version="${APP_VERSION}"
|
|
44
48
|
LABEL org.opencontainers.image.source="https://github.com/cyanheads/cyanheads-mcp-server"
|
|
45
49
|
|
|
46
50
|
# Copy dependency manifests
|
|
@@ -48,14 +52,16 @@ COPY package.json bun.lock ./
|
|
|
48
52
|
|
|
49
53
|
# Install only production dependencies, ignoring any lifecycle scripts (like 'prepare')
|
|
50
54
|
# that are not needed in the final production image.
|
|
51
|
-
RUN bun
|
|
55
|
+
RUN --mount=type=cache,target=/root/.bun/install/cache \
|
|
56
|
+
bun install --production --frozen-lockfile --ignore-scripts
|
|
52
57
|
|
|
53
58
|
# Conditionally install OpenTelemetry optional peer dependencies (Tier 3).
|
|
54
59
|
# These are not bundled by default to keep the base image lean. Enable at build time
|
|
55
60
|
# with: docker build --build-arg OTEL_ENABLED=true
|
|
56
61
|
ARG OTEL_ENABLED=true
|
|
57
|
-
RUN
|
|
58
|
-
|
|
62
|
+
RUN --mount=type=cache,target=/root/.bun/install/cache \
|
|
63
|
+
if [ "$OTEL_ENABLED" = "true" ]; then \
|
|
64
|
+
bun add --omit=dev --ignore-scripts @hono/otel \
|
|
59
65
|
@opentelemetry/instrumentation-http \
|
|
60
66
|
@opentelemetry/exporter-metrics-otlp-http \
|
|
61
67
|
@opentelemetry/exporter-trace-otlp-http \
|
|
@@ -96,5 +102,8 @@ ENV MCP_FORCE_CONSOLE_LOGGING="true"
|
|
|
96
102
|
# Expose the port the server listens on
|
|
97
103
|
EXPOSE ${MCP_HTTP_PORT}
|
|
98
104
|
|
|
105
|
+
# Health check using a bun-native fetch (slim image ships no curl/wget)
|
|
106
|
+
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 CMD bun -e "fetch('http://localhost:'+(process.env.MCP_HTTP_PORT??'3010')+'/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
|
|
107
|
+
|
|
99
108
|
# The command to start the server
|
|
100
109
|
CMD ["bun", "run", "dist/index.js"]
|
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<h1>@cyanheads/cyanheads-mcp-server</h1>
|
|
3
|
-
<p><b>
|
|
3
|
+
<p><b>Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.</b>
|
|
4
4
|
<div>2 Tools • 0 Resources • 0 Prompts</div>
|
|
5
5
|
</p>
|
|
6
6
|
</div>
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/cyanheads-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/cyanheads-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -53,7 +53,7 @@ Semantic search across the fleet. Embeds the query with [Snowflake Arctic Embed
|
|
|
53
53
|
Resolve a name to its install instructions. Accepts either a tool name (snake_case, e.g. `earthquake_search`) or a server name (kebab-case, e.g. `earthquake-mcp-server`) — auto-detected from the format, or pinned via the `kind` parameter.
|
|
54
54
|
|
|
55
55
|
- For tools: returns the description and the owning server name
|
|
56
|
-
- For servers: returns description, version, npm package, GitHub URL, tool
|
|
56
|
+
- For servers: returns description, version, npm package, GitHub URL, the full tool list (each tool's name and description), and per-client install snippets — **local (stdio, via `npx`) for every server, plus remote (Streamable HTTP) when a hosted endpoint exists**
|
|
57
57
|
- Each snippet carries a `transport` (`stdio` or `http`); env vars a local install needs are surfaced and scaffolded into the JSON configs
|
|
58
58
|
- `client` filter narrows snippets to one of `claude-code`, `codex`, `cursor`, `gemini`, `streamable-http`, `curl`; omit to return every client
|
|
59
59
|
- Discriminated output on `kind` — callers branch on data, not string parsing
|
|
@@ -204,11 +204,11 @@ All configuration is validated at startup via Zod schemas in `src/config/server-
|
|
|
204
204
|
| `MCP_HTTP_ENDPOINT_PATH` | HTTP endpoint path where the MCP server is mounted | `/mcp` |
|
|
205
205
|
| `MCP_AUTH_MODE` | Authentication: `none`, `jwt`, or `oauth` | `none` |
|
|
206
206
|
| `MCP_LOG_LEVEL` | Log level (`debug`, `info`, `warning`, `error`, etc.) | `info` |
|
|
207
|
-
| `CATALOG_URL` | Remote fleet.json endpoint (schema v2 with baked embeddings). Override to front your own fleet. | `https://caseyjhand.com/fleet.json` |
|
|
208
|
-
| `CATALOG_FETCH_TIMEOUT_MS` | Per-request timeout for fleet.json fetches in ms | `10000` |
|
|
209
|
-
| `CATALOG_REFRESH_SECONDS` | Background poll interval for fleet.json refresh. `0` disables. | `3600` |
|
|
207
|
+
| `CATALOG_URL` | Remote fleet.json endpoint (schema v2 with baked embeddings). Must be an absolute URL. Override to front your own fleet. | `https://caseyjhand.com/fleet.json` |
|
|
208
|
+
| `CATALOG_FETCH_TIMEOUT_MS` | Per-request timeout for fleet.json fetches in ms. Must be > 0. | `10000` |
|
|
209
|
+
| `CATALOG_REFRESH_SECONDS` | Background poll interval for fleet.json refresh. `0` disables; otherwise must be > 0. | `3600` |
|
|
210
210
|
| `EMBEDDING_MODEL_ID` | Hugging Face model id for query embedding. Must match `fleet.json.embeddingModel`. | `Snowflake/snowflake-arctic-embed-m-v1.5` |
|
|
211
|
-
| `SIMILARITY_FLOOR` | Cosine similarity cutoff for `cyanheads_search` results
|
|
211
|
+
| `SIMILARITY_FLOOR` | Cosine similarity cutoff for `cyanheads_search` results. Must be within `[0, 1]`. | `0.3` |
|
|
212
212
|
| `OTEL_ENABLED` | Enable OpenTelemetry | `false` |
|
|
213
213
|
|
|
214
214
|
To point at a different catalog, change `CATALOG_URL` to your own hosted JSON file. See [`docs/design.md`](./docs/design.md) for the producer-side script and schema.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "cyanheads_describe returns full tool list on server branch — name + description for every tool, format() renders ## Tools section"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.3.2 — 2026-06-04
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`cyanheads_describe` (server branch)** now returns a `tools` array alongside `toolCount` — each entry carries the tool's `name` and `description`, populated from `serverEntry.tools`. An agent learns a server's full tool surface from a single call without a second lookup. Resolves [#6](https://github.com/cyanheads/cyanheads-mcp-server/issues/6).
|
|
12
|
+
- **`format()`** renders a `## Tools` section (bullet list of `` `name` — description `` entries) after the Description block so both `structuredContent` and `content[]` consumers see the tool inventory.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Adopt @cyanheads/mcp-ts-core ^0.10.6 — server name/title identity, Docker HEALTHCHECK + version label, bundle cleaner, tsx → bun run script migration."
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.3.3 — 2026-06-11
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **Server identity pair** — `createApp()` now sets an explicit `name` / `title` of `cyanheads-mcp-server`, so the hyphenated machine name is the display identity on every surface ([#231](https://github.com/cyanheads/mcp-ts-core/issues/231)).
|
|
12
|
+
- **`stdio` / `streamable-http` keywords** added to `package.json` to surface both supported transports in registry search.
|
|
13
|
+
- **`Dockerfile` `HEALTHCHECK`** — bun-native `fetch` against `/healthz` every 30s (slim image ships no `curl`/`wget`), plus an `APP_VERSION` build arg that stamps `org.opencontainers.image.version` ([#217](https://github.com/cyanheads/mcp-ts-core/issues/217)).
|
|
14
|
+
- **`scripts/clean-mcpb.ts`** — post-pack bundle cleaner wired into `bundle`; runs `mcpb clean` then strips dependency-shipped agent docs (`node_modules/**` `skills/`, `.claude/`, `.agents/`, `SKILL.md`) that root-anchored `.mcpbignore` patterns cannot reach ([#230](https://github.com/cyanheads/mcp-ts-core/issues/230)).
|
|
15
|
+
- **`lint-packaging` checks 8–9** — post-bundle content guard (zero `node_modules/**` agent-doc entries) and entrypoint/manifest identity check (`name`/`title`/`display_name` must equal the unscoped package name) ([#230](https://github.com/cyanheads/mcp-ts-core/issues/230), [#231](https://github.com/cyanheads/mcp-ts-core/issues/231)).
|
|
16
|
+
- **`coerce-boolean-env-flag` antipattern rule** in `check-framework-antipatterns.ts` — flags `z.coerce.boolean()` on env flags (`Boolean("false") === true`), recommending `z.stringbool()`; the scanner now skips comment lines ([#201](https://github.com/cyanheads/mcp-ts-core/issues/201)).
|
|
17
|
+
- **`techniques` skill** — catalog of reusable response/data-shaping patterns; first reference documents outline-on-overflow ([#204](https://github.com/cyanheads/mcp-ts-core/issues/204)).
|
|
18
|
+
|
|
19
|
+
## Changed
|
|
20
|
+
|
|
21
|
+
- **`cyanheads_describe`** — the `ambiguous_kind` error code moved from `InvalidParams` to `ValidationError`; a name colliding across catalog kinds is an application-level validation failure, not a malformed-params protocol error.
|
|
22
|
+
- **Build scripts run under Bun** — every `package.json` script switched from `tsx scripts/*.ts` to `bun run scripts/*.ts`, and `tsx` was dropped from devDependencies ([#205](https://github.com/cyanheads/mcp-ts-core/issues/205)).
|
|
23
|
+
- **`.mcpbignore` dev-dir patterns root-anchored** — leading `/` added to `/.claude/`, `/.agents/`, `/Dockerfile`, etc. so they match only at bundle root and can't strip nested `node_modules` runtime paths ([#207](https://github.com/cyanheads/mcp-ts-core/issues/207)).
|
|
24
|
+
- Dependencies: `@cyanheads/mcp-ts-core` ^0.9.21 → ^0.10.6, `@types/node` ^25.9.1 → ^25.9.3.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Fix unbounded config env vars (#8); adopt @cyanheads/mcp-ts-core ^0.11.0 with a supply-chain install guard, floating-specifier and plugin-manifest lint checks, and native-binding bundle stripping."
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.3.4 — 2026-07-26
|
|
8
|
+
|
|
9
|
+
## Fixed
|
|
10
|
+
|
|
11
|
+
- **`server-config.ts` bounds enforcement** — the Zod schema now rejects values outside the bounds it documents: `SIMILARITY_FLOOR` constrained to `[0, 1]`, `CATALOG_FETCH_TIMEOUT_MS` must be positive, `CATALOG_REFRESH_SECONDS` must be `0` or positive, `CATALOG_URL` must be an absolute URL (`z.url()`), and `EMBEDDING_MODEL_ID` must be non-empty. Previously all five accepted any coerced value, including negative timeouts and an out-of-range similarity floor ([#8](https://github.com/cyanheads/cyanheads-mcp-server/issues/8)).
|
|
12
|
+
- New `tests/config/server-config.test.ts` covers the documented defaults and the accept/reject boundary for each of the five env vars.
|
|
13
|
+
|
|
14
|
+
## Changed
|
|
15
|
+
|
|
16
|
+
- **`@cyanheads/mcp-ts-core`** `^0.10.6` → `^0.11.0`; `typescript` `^6.0.3` → `^7.0.2`; `@biomejs/biome` `^2.4.16` → `^2.5.5`; `@types/node` `^25.9.3` → `^26.1.1`; `tsc-alias` `^1.8.17` → `^1.9.1`; `vitest` `^4.1.8` → `^4.1.10`; `ignore` `^7.0.5` → `^7.0.6`.
|
|
17
|
+
- **`package.json` `author`** — canonicalized to `Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)`; `packageManager` field pinned to `bun@1.3.14`.
|
|
18
|
+
- **`bunfig.toml` supply-chain guard** — `[install].minimumReleaseAge` set to 259200s (3 days), blocking newly-published package versions from install; `@cyanheads/mcp-ts-core` is excluded via `minimumReleaseAgeExcludes` so framework releases adopt same-day. `[install.security].scanner` set to `@socketsecurity/bun-security-scanner`.
|
|
19
|
+
- **`Dockerfile`** — base image pinned to `oven/bun:1.3.14` (both stages); `bun install` steps now use a BuildKit cache mount (`--mount=type=cache,target=/root/.bun/install/cache`); the build-stage install adds `--ignore-scripts`; the OTEL peer-dependency install adds `--omit=dev --ignore-scripts`.
|
|
20
|
+
- **`devcheck`'s Outdated check** no longer flags a package as a finding when `Update === Current` — covers versions held back by the new `minimumReleaseAge` guard or a deliberately capped range, and stops flagging `peerDependency` rows (a peer range states a floor, not a version to track).
|
|
21
|
+
- **`devcheck`'s git-dependent checks** (TODOs/FIXMEs, Tracked Secrets, Framework Antipatterns) skip cleanly instead of failing when `.git` is absent (fresh scaffold before `git init`).
|
|
22
|
+
- **`lint-mcp.ts`** passes `packageJson` to the linter only when present, instead of always.
|
|
23
|
+
- **`scripts/clean-mcpb.ts`** / **`lint-packaging.ts` check 8** now also strip and verify zero `node_modules/@duckdb/node-bindings-*/` entries in a built `.mcpb` — a native binding otherwise locks the bundle to the build host's platform and blows past the 25 MB registry cap; `NATIVE_BINDING_ENTRY` is kept identical across both files (unit-tested).
|
|
24
|
+
- **`.gitignore`** — `data/` anchored to `/data/` (was matching `data/` at any depth).
|
|
25
|
+
|
|
26
|
+
## Added
|
|
27
|
+
|
|
28
|
+
- **`scripts/check-dependency-specifiers.ts`** (new `devcheck` step, "Dependency Specifiers") — rejects floating specifiers (`latest`, `*`, `next`/`beta`/`canary`/`rc`) in `package.json`'s dependency sections and `bun.lock`'s `workspaces` maps; `overrides` is held to the strictest rule since a floating override silently re-resolves the vulnerable transitive it was meant to pin. `peerDependencies`/`optionalDependencies` allow `*`/dist-tags but never `latest`.
|
|
29
|
+
- **`lint-packaging.ts` check 10** — validates the new plugin marketplace manifests (`.claude-plugin/plugin.json`, `.codex-plugin/plugin.json`, `.codex-plugin/mcp.json`): non-empty descriptions, and that display fields (`name`, server key, `interface.displayName`) carry the unscoped machine name while the `npx -y` install arg carries the full (possibly scoped) `package.json` name. Gated by `devcheck.config.json` `packaging.pluginManifests` (default on).
|
|
30
|
+
- **`.claude-plugin/plugin.json`**, **`.codex-plugin/plugin.json`**, **`.codex-plugin/mcp.json`** — plugin marketplace manifests for Claude Code and Codex install flows.
|
|
31
|
+
- **`.gitattributes`** — normalizes line endings to LF, marks binary asset extensions, and flags `bun.lock`/`CHANGELOG.md`/`docs/tree.md` as `linguist-generated`.
|
|
32
|
+
- **`.github/SECURITY.md`** — vulnerability reporting policy (GitHub Security tab or `casey@caseyjhand.com`).
|
|
33
|
+
- **`.github/FUNDING.yml`** — GitHub Sponsors / Buy Me a Coffee funding links.
|
package/changelog/template.md
CHANGED
|
@@ -15,9 +15,11 @@ summary: ""
|
|
|
15
15
|
# usage. Flagged as `Breaking` in the rollup.
|
|
16
16
|
breaking: false
|
|
17
17
|
|
|
18
|
-
# Set `true`
|
|
19
|
-
#
|
|
20
|
-
#
|
|
18
|
+
# Set `true` ONLY for a security fix in THIS project's own source code — a
|
|
19
|
+
# vulnerability or hardening in code you ship. A dependency or transitive CVE
|
|
20
|
+
# bump is routine maintenance, NOT a security release: record it under
|
|
21
|
+
# `## Dependencies` (with the advisory ID) and leave this `false`. When true,
|
|
22
|
+
# pairs with the `## Security` section below and flags `Security` in the rollup.
|
|
21
23
|
security: false
|
|
22
24
|
|
|
23
25
|
# Optional free-form notes for maintenance agents processing this release.
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
7
7
|
declare const ServerConfigSchema: z.ZodObject<{
|
|
8
|
-
catalogUrl: z.ZodDefault<z.
|
|
8
|
+
catalogUrl: z.ZodDefault<z.ZodURL>;
|
|
9
9
|
catalogFetchTimeoutMs: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
10
10
|
catalogRefreshSeconds: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
11
11
|
embeddingModelId: z.ZodDefault<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;;;;
|
|
1
|
+
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;;;;iBAyDtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,wBAAgB,eAAe,IAAI,YAAY,CAS9C;AAED,uCAAuC;AACvC,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
|
@@ -11,25 +11,29 @@ const ServerConfigSchema = z.object({
|
|
|
11
11
|
* Loaded at server startup via RemoteJsonCatalogProvider.
|
|
12
12
|
*/
|
|
13
13
|
catalogUrl: z
|
|
14
|
-
.
|
|
14
|
+
.url()
|
|
15
15
|
.default('https://caseyjhand.com/fleet.json')
|
|
16
16
|
.describe('URL of the remote fleet.json catalog endpoint.'),
|
|
17
17
|
/**
|
|
18
|
-
* Timeout in milliseconds for the remote catalog fetch.
|
|
18
|
+
* Timeout in milliseconds for the remote catalog fetch. Must be a positive,
|
|
19
|
+
* finite duration — a zero or negative timeout aborts every fetch before it
|
|
20
|
+
* can complete. `z.coerce.number()` already rejects NaN and Infinity.
|
|
19
21
|
*/
|
|
20
22
|
catalogFetchTimeoutMs: z.coerce
|
|
21
23
|
.number()
|
|
24
|
+
.positive()
|
|
22
25
|
.default(10000)
|
|
23
|
-
.describe('HTTP timeout for remote catalog fetch in milliseconds.'),
|
|
26
|
+
.describe('HTTP timeout for remote catalog fetch in milliseconds. Must be > 0.'),
|
|
24
27
|
/**
|
|
25
28
|
* Background poll interval. The service re-fetches fleet.json on this cadence
|
|
26
29
|
* and swaps in the new vector index if `generatedAt` changed.
|
|
27
|
-
* Set to 0 to disable background refresh.
|
|
30
|
+
* Set to 0 to disable background refresh; any other value must be positive.
|
|
28
31
|
*/
|
|
29
32
|
catalogRefreshSeconds: z.coerce
|
|
30
33
|
.number()
|
|
34
|
+
.nonnegative()
|
|
31
35
|
.default(3600)
|
|
32
|
-
.describe('Seconds between background catalog re-fetches. 0 disables background refresh.'),
|
|
36
|
+
.describe('Seconds between background catalog re-fetches. 0 disables background refresh; otherwise must be > 0.'),
|
|
33
37
|
/**
|
|
34
38
|
* Embedding model identifier. Must match `embeddingModel` declared in fleet.json,
|
|
35
39
|
* or the server refuses to load (since vectors live in the same space as the
|
|
@@ -37,6 +41,7 @@ const ServerConfigSchema = z.object({
|
|
|
37
41
|
*/
|
|
38
42
|
embeddingModelId: z
|
|
39
43
|
.string()
|
|
44
|
+
.min(1)
|
|
40
45
|
.default('Snowflake/snowflake-arctic-embed-m-v1.5')
|
|
41
46
|
.describe('Hugging Face model id used for query embedding at search time. Must match fleet.json.embeddingModel.'),
|
|
42
47
|
/**
|
|
@@ -45,6 +50,8 @@ const ServerConfigSchema = z.object({
|
|
|
45
50
|
*/
|
|
46
51
|
similarityFloor: z.coerce
|
|
47
52
|
.number()
|
|
53
|
+
.min(0)
|
|
54
|
+
.max(1)
|
|
48
55
|
.default(0.3)
|
|
49
56
|
.describe('Minimum cosine similarity in [0, 1] for a match to appear in search results.'),
|
|
50
57
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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;;;OAGG;IACH,UAAU,EAAE,CAAC;SACV,
|
|
1
|
+
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;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;;;OAGG;IACH,UAAU,EAAE,CAAC;SACV,GAAG,EAAE;SACL,OAAO,CAAC,mCAAmC,CAAC;SAC5C,QAAQ,CAAC,gDAAgD,CAAC;IAE7D;;;;OAIG;IACH,qBAAqB,EAAE,CAAC,CAAC,MAAM;SAC5B,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,qEAAqE,CAAC;IAElF;;;;OAIG;IACH,qBAAqB,EAAE,CAAC,CAAC,MAAM;SAC5B,MAAM,EAAE;SACR,WAAW,EAAE;SACb,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CACP,sGAAsG,CACvG;IAEH;;;;OAIG;IACH,gBAAgB,EAAE,CAAC;SAChB,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,yCAAyC,CAAC;SAClD,QAAQ,CACP,sGAAsG,CACvG;IAEH;;;OAGG;IACH,eAAe,EAAE,CAAC,CAAC,MAAM;SACtB,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,GAAG,CAAC;SACZ,QAAQ,CAAC,8EAA8E,CAAC;CAC5F,CAAC,CAAC;AAIH,IAAI,OAAiC,CAAC;AAEtC,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,cAAc,CAAC,kBAAkB,EAAE;QAC7C,UAAU,EAAE,aAAa;QACzB,qBAAqB,EAAE,0BAA0B;QACjD,qBAAqB,EAAE,yBAAyB;QAChD,gBAAgB,EAAE,oBAAoB;QACtC,eAAe,EAAE,kBAAkB;KACpC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,iBAAiB;IAC/B,OAAO,GAAG,SAAS,CAAC;AACtB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@ import { searchTool } from './mcp-server/tools/definitions/search.tool.js';
|
|
|
10
10
|
import { getCatalogService, initCatalogService } from './services/catalog/catalog-service.js';
|
|
11
11
|
await createApp({
|
|
12
12
|
name: 'cyanheads-mcp-server',
|
|
13
|
+
title: 'cyanheads-mcp-server',
|
|
13
14
|
tools: [searchTool, describeTool],
|
|
14
15
|
resources: [],
|
|
15
16
|
prompts: [],
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE9F,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;IACjC,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,YAAY,EACV,sEAAsE;QACtE,mFAAmF;QACnF,6FAA6F;QAC7F,qGAAqG;IAEvG,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,iBAAiB,EAAE,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC;CACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,+CAA+C,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE9F,MAAM,SAAS,CAAC;IACd,IAAI,EAAE,sBAAsB;IAC5B,KAAK,EAAE,sBAAsB;IAC7B,KAAK,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;IACjC,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,EAAE;IACX,YAAY,EACV,sEAAsE;QACtE,mFAAmF;QACnF,6FAA6F;QAC7F,qGAAqG;IAEvG,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3B,MAAM,iBAAiB,EAAE,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -16,8 +16,8 @@ export declare const describeTool: import("@cyanheads/mcp-ts-core").ToolDefiniti
|
|
|
16
16
|
client: z.ZodOptional<z.ZodEnum<{
|
|
17
17
|
"claude-code": "claude-code";
|
|
18
18
|
codex: "codex";
|
|
19
|
-
cursor: "cursor";
|
|
20
19
|
curl: "curl";
|
|
20
|
+
cursor: "cursor";
|
|
21
21
|
gemini: "gemini";
|
|
22
22
|
"streamable-http": "streamable-http";
|
|
23
23
|
}>>;
|
|
@@ -39,18 +39,22 @@ export declare const describeTool: import("@cyanheads/mcp-ts-core").ToolDefiniti
|
|
|
39
39
|
auth: z.ZodString;
|
|
40
40
|
requiredEnvVars: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
41
41
|
toolCount: z.ZodNumber;
|
|
42
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
43
|
+
name: z.ZodString;
|
|
44
|
+
description: z.ZodString;
|
|
45
|
+
}, z.core.$strip>>;
|
|
42
46
|
installSnippets: z.ZodArray<z.ZodObject<{
|
|
43
47
|
client: z.ZodEnum<{
|
|
44
48
|
"claude-code": "claude-code";
|
|
45
49
|
codex: "codex";
|
|
46
|
-
cursor: "cursor";
|
|
47
50
|
curl: "curl";
|
|
51
|
+
cursor: "cursor";
|
|
48
52
|
gemini: "gemini";
|
|
49
53
|
"streamable-http": "streamable-http";
|
|
50
54
|
}>;
|
|
51
55
|
transport: z.ZodEnum<{
|
|
52
|
-
stdio: "stdio";
|
|
53
56
|
http: "http";
|
|
57
|
+
stdio: "stdio";
|
|
54
58
|
}>;
|
|
55
59
|
label: z.ZodString;
|
|
56
60
|
payload: z.ZodString;
|
|
@@ -63,7 +67,7 @@ export declare const describeTool: import("@cyanheads/mcp-ts-core").ToolDefiniti
|
|
|
63
67
|
readonly recovery: "Use cyanheads_search to find the correct name, then call cyanheads_describe again.";
|
|
64
68
|
}, {
|
|
65
69
|
readonly reason: "ambiguous_kind";
|
|
66
|
-
readonly code: JsonRpcErrorCode.
|
|
70
|
+
readonly code: JsonRpcErrorCode.ValidationError;
|
|
67
71
|
readonly when: "Name matches both a tool and a server (collision in catalog).";
|
|
68
72
|
readonly recovery: "Set the kind parameter to \"tool\" or \"server\" to disambiguate.";
|
|
69
73
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/describe.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"describe.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/describe.tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAIjE,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+RvB,CAAC"}
|
|
@@ -69,6 +69,15 @@ export const describeTool = tool('cyanheads_describe', {
|
|
|
69
69
|
.optional()
|
|
70
70
|
.describe('Env var names the local (stdio) install requires (e.g. ["MAILCHIMP_API_KEY"]). Absent when none.'),
|
|
71
71
|
toolCount: z.number().describe('Number of tools exposed by this server.'),
|
|
72
|
+
tools: z
|
|
73
|
+
.array(z
|
|
74
|
+
.object({
|
|
75
|
+
name: z.string().describe('Tool name (snake_case, e.g. "earthquake_search").'),
|
|
76
|
+
description: z.string().describe('Brief description of what the tool does.'),
|
|
77
|
+
})
|
|
78
|
+
.describe('A single tool exposed by this server.'))
|
|
79
|
+
.describe('Every tool this server exposes, each with its name and a brief description — ' +
|
|
80
|
+
'one describe call reveals the full surface without a second lookup.'),
|
|
72
81
|
installSnippets: z
|
|
73
82
|
.array(z
|
|
74
83
|
.object({
|
|
@@ -98,7 +107,7 @@ export const describeTool = tool('cyanheads_describe', {
|
|
|
98
107
|
},
|
|
99
108
|
{
|
|
100
109
|
reason: 'ambiguous_kind',
|
|
101
|
-
code: JsonRpcErrorCode.
|
|
110
|
+
code: JsonRpcErrorCode.ValidationError,
|
|
102
111
|
when: 'Name matches both a tool and a server (collision in catalog).',
|
|
103
112
|
recovery: 'Set the kind parameter to "tool" or "server" to disambiguate.',
|
|
104
113
|
},
|
|
@@ -164,6 +173,7 @@ export const describeTool = tool('cyanheads_describe', {
|
|
|
164
173
|
? { requiredEnvVars: serverEntry.requiredEnvVars }
|
|
165
174
|
: {}),
|
|
166
175
|
toolCount: serverEntry.tools.length,
|
|
176
|
+
tools: serverEntry.tools.map((t) => ({ name: t.name, description: t.description })),
|
|
167
177
|
installSnippets: snippets,
|
|
168
178
|
},
|
|
169
179
|
};
|
|
@@ -197,6 +207,13 @@ export const describeTool = tool('cyanheads_describe', {
|
|
|
197
207
|
lines.push('## Description');
|
|
198
208
|
lines.push(result.description);
|
|
199
209
|
lines.push('');
|
|
210
|
+
if (result.tools.length > 0) {
|
|
211
|
+
lines.push('## Tools');
|
|
212
|
+
for (const t of result.tools) {
|
|
213
|
+
lines.push(`- \`${t.name}\` — ${t.description}`);
|
|
214
|
+
}
|
|
215
|
+
lines.push('');
|
|
216
|
+
}
|
|
200
217
|
const local = result.installSnippets.filter((s) => s.transport === 'stdio');
|
|
201
218
|
const remote = result.installSnippets.filter((s) => s.transport === 'http');
|
|
202
219
|
if (local.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/describe.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"describe.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/describe.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,13 +9,13 @@ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
|
9
9
|
export declare const searchTool: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
|
|
10
10
|
query: z.ZodString;
|
|
11
11
|
scope: z.ZodDefault<z.ZodEnum<{
|
|
12
|
-
tools: "tools";
|
|
13
12
|
servers: "servers";
|
|
13
|
+
tools: "tools";
|
|
14
14
|
}>>;
|
|
15
15
|
category: z.ZodOptional<z.ZodEnum<{
|
|
16
|
-
research: "research";
|
|
17
16
|
government: "government";
|
|
18
17
|
"public-data": "public-data";
|
|
18
|
+
research: "research";
|
|
19
19
|
utility: "utility";
|
|
20
20
|
}>>;
|
|
21
21
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
@@ -25,24 +25,24 @@ export declare const searchTool: import("@cyanheads/mcp-ts-core").ToolDefinition
|
|
|
25
25
|
server: z.ZodString;
|
|
26
26
|
brief: z.ZodString;
|
|
27
27
|
category: z.ZodEnum<{
|
|
28
|
-
research: "research";
|
|
29
28
|
government: "government";
|
|
30
29
|
"public-data": "public-data";
|
|
30
|
+
research: "research";
|
|
31
31
|
utility: "utility";
|
|
32
32
|
}>;
|
|
33
33
|
score: z.ZodNumber;
|
|
34
34
|
}, z.core.$strip>>;
|
|
35
35
|
scope: z.ZodEnum<{
|
|
36
|
-
tools: "tools";
|
|
37
36
|
servers: "servers";
|
|
37
|
+
tools: "tools";
|
|
38
38
|
}>;
|
|
39
39
|
servers: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
40
40
|
name: z.ZodString;
|
|
41
41
|
brief: z.ZodString;
|
|
42
42
|
category: z.ZodEnum<{
|
|
43
|
-
research: "research";
|
|
44
43
|
government: "government";
|
|
45
44
|
"public-data": "public-data";
|
|
45
|
+
research: "research";
|
|
46
46
|
utility: "utility";
|
|
47
47
|
}>;
|
|
48
48
|
matchedTools: z.ZodNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-service.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/catalog-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,kBAAkB,EAAiC,MAAM,yBAAyB,CAAC;AAEjG,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,WAAW,EAEX,eAAe,EAChB,MAAM,YAAY,CAAC;AAoBpB,KAAK,oBAAoB,GAAG,IAAI,CAC9B,YAAY,EACV,YAAY,GACZ,uBAAuB,GACvB,uBAAuB,GACvB,kBAAkB,GAClB,iBAAiB,CACpB,CAAC;AAMF,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,aAAa,CAA+C;
|
|
1
|
+
{"version":3,"file":"catalog-service.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/catalog-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,kBAAkB,EAAiC,MAAM,yBAAyB,CAAC;AAEjG,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,WAAW,EAEX,eAAe,EAChB,MAAM,YAAY,CAAC;AAoBpB,KAAK,oBAAoB,GAAG,IAAI,CAC9B,YAAY,EACV,YAAY,GACZ,uBAAuB,GACvB,uBAAuB,GACvB,kBAAkB,GAClB,iBAAiB,CACpB,CAAC;AAMF,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,aAAa,CAA+C;IAEpE,YAAY,MAAM,EAAE,oBAAoB,EAAE,UAAU,CAAC,EAAE,kBAAkB,EAIxE;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAgChC;IAEK,MAAM,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;QAC3B,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAgDjC;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG;QAAE,YAAY,EAAE,aAAa,CAAA;KAAE,CAAC,GAAG,IAAI,CAG5E;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAG5C;IAED,cAAc,IAAI,eAAe,EAAE,CAKlC;IAED,KAAK,IAAI;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;KACxB,CAQA;IAED,gEAAgE;IAChE,QAAQ,IAAI,IAAI,CAKf;IAMD,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,WAAW;YAwDL,aAAa;IA2B3B,OAAO,CAAC,kBAAkB;CAQ3B;AAsBD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,oBAAoB,EAC5B,UAAU,CAAC,EAAE,kBAAkB,GAC9B,IAAI,CAEN;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAQlD;AAED,uBAAuB;AACvB,wBAAgB,2BAA2B,IAAI,IAAI,CAGlD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embeddings-runtime.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/embeddings-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAoBH,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACnF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,6BAA8B,YAAW,kBAAkB;aAI1C,OAAO,EAAE,MAAM;IAH3C,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,YAAY,CAAmD;
|
|
1
|
+
{"version":3,"file":"embeddings-runtime.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/embeddings-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAoBH,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACnF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,6BAA8B,YAAW,kBAAkB;aAI1C,OAAO,EAAE,MAAM;IAH3C,OAAO,CAAC,UAAU,CAA0C;IAC5D,OAAO,CAAC,YAAY,CAAmD;IAEvE,YAA4B,OAAO,EAAE,MAAM,EAAI;IAE/C,OAAO,CAAC,aAAa;IA4Bf,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA6BvF;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embeddings-runtime.js","sourceRoot":"","sources":["../../../src/services/catalog/embeddings-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,GAAG,EAAkC,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1F;;;;;GAKG;AACH,GAAG,CAAC,QAAQ;IACV,OAAO,CAAC,GAAG,CAAC,OAAO;QACnB,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,EAAE,UAAU,CAAC,CAAC;AAO7D,MAAM,OAAO,6BAA6B;IAIZ;
|
|
1
|
+
{"version":3,"file":"embeddings-runtime.js","sourceRoot":"","sources":["../../../src/services/catalog/embeddings-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-catalog-provider.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/remote-catalog-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0C/C,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;
|
|
1
|
+
{"version":3,"file":"remote-catalog-provider.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/remote-catalog-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0C/C,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YAAY,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,uBAAuB,CAAC,EAG7E;IAED;;;;OAIG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAmDtD;CACF"}
|
package/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "cyanheads-mcp-server",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.4",
|
|
5
5
|
"description": "Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.",
|
|
6
6
|
"author": { "name": "cyanheads" },
|
|
7
7
|
"repository": {
|
|
@@ -33,14 +33,14 @@
|
|
|
33
33
|
"catalog_url": {
|
|
34
34
|
"type": "string",
|
|
35
35
|
"title": "Catalog URL",
|
|
36
|
-
"description": "Remote fleet.json endpoint (schema v2 with baked embeddings). Defaults to the canonical cyanheads fleet — override to point at your own hosted catalog.",
|
|
36
|
+
"description": "Remote fleet.json endpoint (schema v2 with baked embeddings), as an absolute URL. Defaults to the canonical cyanheads fleet — override to point at your own hosted catalog.",
|
|
37
37
|
"required": false,
|
|
38
38
|
"default": "https://caseyjhand.com/fleet.json"
|
|
39
39
|
},
|
|
40
40
|
"similarity_floor": {
|
|
41
41
|
"type": "string",
|
|
42
42
|
"title": "Similarity Floor",
|
|
43
|
-
"description": "Cosine similarity cutoff for cyanheads_search results
|
|
43
|
+
"description": "Cosine similarity cutoff for cyanheads_search results. Must be within [0, 1] — raise to require closer matches; lower to surface more candidates.",
|
|
44
44
|
"required": false,
|
|
45
45
|
"default": "0.3"
|
|
46
46
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/cyanheads-mcp-server",
|
|
3
3
|
"mcpName": "io.github.cyanheads/cyanheads-mcp-server",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.4",
|
|
5
5
|
"description": "Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -20,28 +20,28 @@
|
|
|
20
20
|
"manifest.json",
|
|
21
21
|
"server.json"
|
|
22
22
|
],
|
|
23
|
-
"author": "
|
|
23
|
+
"author": "Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)",
|
|
24
24
|
"homepage": "https://github.com/cyanheads/cyanheads-mcp-server#readme",
|
|
25
25
|
"bugs": {
|
|
26
26
|
"url": "https://github.com/cyanheads/cyanheads-mcp-server/issues"
|
|
27
27
|
},
|
|
28
28
|
"scripts": {
|
|
29
|
-
"build": "
|
|
30
|
-
"rebuild": "
|
|
31
|
-
"clean": "
|
|
32
|
-
"devcheck": "
|
|
29
|
+
"build": "bun run scripts/build.ts",
|
|
30
|
+
"rebuild": "bun run scripts/clean.ts && bun run scripts/build.ts",
|
|
31
|
+
"clean": "bun run scripts/clean.ts",
|
|
32
|
+
"devcheck": "bun run scripts/devcheck.ts",
|
|
33
33
|
"audit:refresh": "rm -f bun.lock && bun install && bun audit",
|
|
34
|
-
"tree": "
|
|
35
|
-
"list-skills": "
|
|
34
|
+
"tree": "bun run scripts/tree.ts",
|
|
35
|
+
"list-skills": "bun run scripts/list-skills.ts",
|
|
36
36
|
"format": "biome check --write .",
|
|
37
37
|
"format:unsafe": "biome check --write --unsafe .",
|
|
38
|
-
"lint:mcp": "
|
|
39
|
-
"lint:packaging": "
|
|
40
|
-
"bundle": "
|
|
38
|
+
"lint:mcp": "bun run scripts/lint-mcp.ts",
|
|
39
|
+
"lint:packaging": "bun run scripts/lint-packaging.ts",
|
|
40
|
+
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/cyanheads-mcp-server.mcpb && bun run scripts/clean-mcpb.ts dist/cyanheads-mcp-server.mcpb",
|
|
41
41
|
"publish-mcp": "mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish",
|
|
42
|
-
"changelog:build": "
|
|
43
|
-
"changelog:check": "
|
|
44
|
-
"release:github": "
|
|
42
|
+
"changelog:build": "bun run scripts/build-changelog.ts",
|
|
43
|
+
"changelog:check": "bun run scripts/build-changelog.ts --check",
|
|
44
|
+
"release:github": "bun run scripts/release-github.ts",
|
|
45
45
|
"test": "vitest run",
|
|
46
46
|
"start": "node dist/index.js",
|
|
47
47
|
"start:stdio": "MCP_TRANSPORT_TYPE=stdio node dist/index.js",
|
|
@@ -51,6 +51,8 @@
|
|
|
51
51
|
"mcp",
|
|
52
52
|
"mcp-server",
|
|
53
53
|
"model-context-protocol",
|
|
54
|
+
"stdio",
|
|
55
|
+
"streamable-http",
|
|
54
56
|
"mcp-discovery",
|
|
55
57
|
"mcp-fleet",
|
|
56
58
|
"semantic-search",
|
|
@@ -63,6 +65,7 @@
|
|
|
63
65
|
"url": "git+https://github.com/cyanheads/cyanheads-mcp-server.git"
|
|
64
66
|
},
|
|
65
67
|
"license": "Apache-2.0",
|
|
68
|
+
"packageManager": "bun@1.3.14",
|
|
66
69
|
"engines": {
|
|
67
70
|
"bun": ">=1.3.0",
|
|
68
71
|
"node": ">=24.0.0"
|
|
@@ -71,19 +74,19 @@
|
|
|
71
74
|
"access": "public"
|
|
72
75
|
},
|
|
73
76
|
"dependencies": {
|
|
74
|
-
"@cyanheads/mcp-ts-core": "^0.
|
|
77
|
+
"@cyanheads/mcp-ts-core": "^0.11.0",
|
|
75
78
|
"@huggingface/transformers": "4.2.0",
|
|
76
79
|
"pino-pretty": "^13.1.3",
|
|
77
80
|
"zod": "^4.4.3"
|
|
78
81
|
},
|
|
79
82
|
"devDependencies": {
|
|
80
|
-
"@biomejs/biome": "^2.
|
|
81
|
-
"@
|
|
83
|
+
"@biomejs/biome": "^2.5.5",
|
|
84
|
+
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
85
|
+
"@types/node": "^26.1.1",
|
|
82
86
|
"depcheck": "^1.4.7",
|
|
83
|
-
"ignore": "^7.0.
|
|
84
|
-
"tsc-alias": "^1.
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"vitest": "^4.1.8"
|
|
87
|
+
"ignore": "^7.0.6",
|
|
88
|
+
"tsc-alias": "^1.9.1",
|
|
89
|
+
"typescript": "^7.0.2",
|
|
90
|
+
"vitest": "^4.1.10"
|
|
88
91
|
}
|
|
89
92
|
}
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/cyanheads-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.3.
|
|
9
|
+
"version": "0.3.4",
|
|
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/cyanheads-mcp-server",
|
|
21
21
|
"runtimeHint": "node",
|
|
22
|
-
"version": "0.3.
|
|
22
|
+
"version": "0.3.4",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{ "type": "positional", "value": "run" },
|
|
25
25
|
{ "type": "positional", "value": "start:stdio" }
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
"name": "CATALOG_REFRESH_SECONDS",
|
|
44
|
-
"description": "Background poll interval for fleet.json refresh. 0 disables.",
|
|
44
|
+
"description": "Background poll interval for fleet.json refresh. 0 disables; otherwise must be > 0.",
|
|
45
45
|
"format": "string",
|
|
46
46
|
"isRequired": false,
|
|
47
47
|
"default": "3600"
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
"name": "SIMILARITY_FLOOR",
|
|
58
|
-
"description": "Cosine similarity cutoff for cyanheads_search results
|
|
58
|
+
"description": "Cosine similarity cutoff for cyanheads_search results. Must be within [0, 1].",
|
|
59
59
|
"format": "string",
|
|
60
60
|
"isRequired": false,
|
|
61
61
|
"default": "0.3"
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
69
69
|
"identifier": "@cyanheads/cyanheads-mcp-server",
|
|
70
70
|
"runtimeHint": "node",
|
|
71
|
-
"version": "0.3.
|
|
71
|
+
"version": "0.3.4",
|
|
72
72
|
"packageArguments": [
|
|
73
73
|
{ "type": "positional", "value": "run" },
|
|
74
74
|
{ "type": "positional", "value": "start:http" }
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
},
|
|
119
119
|
{
|
|
120
120
|
"name": "CATALOG_REFRESH_SECONDS",
|
|
121
|
-
"description": "Background poll interval for fleet.json refresh. 0 disables.",
|
|
121
|
+
"description": "Background poll interval for fleet.json refresh. 0 disables; otherwise must be > 0.",
|
|
122
122
|
"format": "string",
|
|
123
123
|
"isRequired": false,
|
|
124
124
|
"default": "3600"
|
|
@@ -132,7 +132,7 @@
|
|
|
132
132
|
},
|
|
133
133
|
{
|
|
134
134
|
"name": "SIMILARITY_FLOOR",
|
|
135
|
-
"description": "Cosine similarity cutoff for cyanheads_search results
|
|
135
|
+
"description": "Cosine similarity cutoff for cyanheads_search results. Must be within [0, 1].",
|
|
136
136
|
"format": "string",
|
|
137
137
|
"isRequired": false,
|
|
138
138
|
"default": "0.3"
|