@cyanheads/cyanheads-mcp-server 0.2.0 → 0.3.1

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 CHANGED
@@ -1,8 +1,8 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** cyanheads-mcp-server
4
- **Version:** 0.2.0
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.16`
4
+ **Version:** 0.3.1
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.21`
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
@@ -270,8 +270,8 @@ Available skills:
270
270
  | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
271
271
  | `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
272
272
  | `release-and-publish` | Push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
273
- | `migrate-mcp-ts-template` | One-time migration of an existing project to the current framework template |
274
273
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
274
+ | `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
275
275
  | `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
276
276
  | `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
277
277
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
@@ -280,12 +280,15 @@ Available skills:
280
280
  | `api-context` | Context interface, logger, state, progress |
281
281
  | `api-errors` | McpError, JsonRpcErrorCode, error patterns |
282
282
  | `api-linter` | Definition linter rule catalog — invoked by `bun run lint:mcp` and `devcheck` |
283
+ | `api-mirror` | MirrorService: persistent, self-refreshing local mirror of a bulk upstream dataset (embedded SQLite + FTS5) |
283
284
  | `api-services` | LLM, Speech, Graph services |
284
285
  | `api-testing` | createMockContext, test patterns |
285
286
  | `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
286
287
  | `api-telemetry` | OTel catalog: spans, metrics, completion logs, env config, cardinality rules |
287
288
  | `api-workers` | Cloudflare Workers runtime |
288
289
 
290
+ **Chaining skills into pipelines.** When the user wants a multi-phase effort — build this server out, QA-and-fix the surface, update-and-ship — *and you can spawn sub-agents*, `skills/orchestrations/SKILL.md` sequences the task skills above into a gated pipeline with verification at each step. Read it to drive the run. Optional: skip it if you can't orchestrate sub-agents, and ignore it entirely if you were *spawned* as one — you've already been scoped to a single phase.
291
+
289
292
  When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
290
293
 
291
294
  ---
@@ -309,6 +312,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
309
312
  | `npm run start:http` | Production mode (HTTP) |
310
313
  | `npm run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
311
314
  | `npm run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
315
+ | `npm run release:github` | Create GitHub Release from annotated tag (title format: `v<VERSION>: <subject>`) |
312
316
  | `npm run bundle` | Build and pack as `.mcpb` for one-click Claude Desktop install |
313
317
 
314
318
  ---
package/CLAUDE.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # Developer Protocol
2
2
 
3
3
  **Server:** cyanheads-mcp-server
4
- **Version:** 0.2.0
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.16`
4
+ **Version:** 0.3.1
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.21`
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
@@ -270,8 +270,8 @@ Available skills:
270
270
  | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
271
271
  | `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
272
272
  | `release-and-publish` | Push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
273
- | `migrate-mcp-ts-template` | One-time migration of an existing project to the current framework template |
274
273
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
274
+ | `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
275
275
  | `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
276
276
  | `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
277
277
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
@@ -280,12 +280,15 @@ Available skills:
280
280
  | `api-context` | Context interface, logger, state, progress |
281
281
  | `api-errors` | McpError, JsonRpcErrorCode, error patterns |
282
282
  | `api-linter` | Definition linter rule catalog — invoked by `bun run lint:mcp` and `devcheck` |
283
+ | `api-mirror` | MirrorService: persistent, self-refreshing local mirror of a bulk upstream dataset (embedded SQLite + FTS5) |
283
284
  | `api-services` | LLM, Speech, Graph services |
284
285
  | `api-testing` | createMockContext, test patterns |
285
286
  | `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
286
287
  | `api-telemetry` | OTel catalog: spans, metrics, completion logs, env config, cardinality rules |
287
288
  | `api-workers` | Cloudflare Workers runtime |
288
289
 
290
+ **Chaining skills into pipelines.** When the user wants a multi-phase effort — build this server out, QA-and-fix the surface, update-and-ship — *and you can spawn sub-agents*, `skills/orchestrations/SKILL.md` sequences the task skills above into a gated pipeline with verification at each step. Read it to drive the run. Optional: skip it if you can't orchestrate sub-agents, and ignore it entirely if you were *spawned* as one — you've already been scoped to a single phase.
291
+
289
292
  When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
290
293
 
291
294
  ---
@@ -309,6 +312,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
309
312
  | `npm run start:http` | Production mode (HTTP) |
310
313
  | `npm run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
311
314
  | `npm run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
315
+ | `npm run release:github` | Create GitHub Release from annotated tag (title format: `v<VERSION>: <subject>`) |
312
316
  | `npm run bundle` | Build and pack as `.mcpb` for one-click Claude Desktop install |
313
317
 
314
318
  ---
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![Version](https://img.shields.io/badge/Version-0.2.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/cyanheads-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/cyanheads-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/cyanheads-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-%3E=1.3.0-blueviolet.svg?style=flat-square)](https://bun.sh/)
10
+ [![Version](https://img.shields.io/badge/Version-0.3.1-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/cyanheads-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/cyanheads-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/cyanheads-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-%3E=1.3.0-blueviolet.svg?style=flat-square)](https://bun.sh/)
11
11
 
12
12
  </div>
13
13
 
@@ -53,8 +53,9 @@ 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, hosted endpoint URL, tool count, and per-client install snippets
57
- - `client` filter narrows snippets to one of `claude-desktop`, `claude-code`, `cursor`, `cline`; omit to return all four
56
+ - For servers: returns description, version, npm package, GitHub URL, tool count, and per-client install snippets — **local (stdio, via `npx`) for every server, plus remote (Streamable HTTP) when a hosted endpoint exists**
57
+ - Each snippet carries a `transport` (`stdio` or `http`); env vars a local install needs are surfaced and scaffolded into the JSON configs
58
+ - `client` filter narrows snippets to one of `claude-code`, `codex`, `cursor`, `gemini`, `streamable-http`, `curl`; omit to return every client
58
59
  - Discriminated output on `kind` — callers branch on data, not string parsing
59
60
 
60
61
  ## Features
@@ -71,8 +72,8 @@ Fleet-specific:
71
72
 
72
73
  - Hourly background catalog refresh with atomic swap on `generatedAt` change — no restart needed when the fleet updates
73
74
  - L2-normalized 256-dim Matryoshka-truncated vectors keep memory under 100KB for a 40-server fleet
74
- - Per-client install snippet generation (Claude Desktop, Claude Code, Cursor, Cline) at describe-time, not catalog-generation time — snippets stay in sync with the deployed endpoint
75
- - Discriminated `result.kind` and typed `installSnippets[].client` enums — agents can branch reliably
75
+ - Per-client install snippet generation at describe-time, not catalog-generation time — both local (stdio `npx`) and remote (Streamable HTTP) transports, kept in sync with the deployed endpoint
76
+ - Discriminated `result.kind` and typed `installSnippets[].client` / `installSnippets[].transport` enums — agents can branch reliably
76
77
 
77
78
  ## What's in the fleet
78
79
 
@@ -94,7 +95,7 @@ A public instance is available at `https://cyanheads.caseyjhand.com/mcp` — no
94
95
  ```json
95
96
  {
96
97
  "mcpServers": {
97
- "cyanheads": {
98
+ "cyanheads-mcp-server": {
98
99
  "type": "streamable-http",
99
100
  "url": "https://cyanheads.caseyjhand.com/mcp"
100
101
  }
@@ -115,7 +116,7 @@ Add the following to your MCP client configuration file.
115
116
  ```json
116
117
  {
117
118
  "mcpServers": {
118
- "cyanheads": {
119
+ "cyanheads-mcp-server": {
119
120
  "type": "stdio",
120
121
  "command": "bunx",
121
122
  "args": ["@cyanheads/cyanheads-mcp-server@latest"],
@@ -133,7 +134,7 @@ Or with npx (no Bun required):
133
134
  ```json
134
135
  {
135
136
  "mcpServers": {
136
- "cyanheads": {
137
+ "cyanheads-mcp-server": {
137
138
  "type": "stdio",
138
139
  "command": "npx",
139
140
  "args": ["-y", "@cyanheads/cyanheads-mcp-server@latest"],
@@ -151,7 +152,7 @@ Or with Docker:
151
152
  ```json
152
153
  {
153
154
  "mcpServers": {
154
- "cyanheads": {
155
+ "cyanheads-mcp-server": {
155
156
  "type": "stdio",
156
157
  "command": "docker",
157
158
  "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/cyanheads-mcp-server:latest"]
@@ -0,0 +1,25 @@
1
+ ---
2
+ summary: "cyanheads_describe: local (stdio) install snippets for every server, plus remote (HTTP) when a hosted endpoint exists"
3
+ breaking: false
4
+ ---
5
+
6
+ # 0.3.0 — 2026-06-02
7
+
8
+ ## Added
9
+
10
+ - **`cyanheads_describe`** returns local (stdio) install snippets via `npx -y <pkg>` for every published server: `claude-code`, `codex`, `cursor`, `gemini`, and a generic Claude Desktop / Cline config ([#5](https://github.com/cyanheads/cyanheads-mcp-server/issues/5)).
11
+ - **`InstallSnippet.transport`** field (`"stdio" | "http"`) — callers can filter or branch on transport without string inspection.
12
+ - **`CatalogRecord.requiredEnvVars`** optional field — surfaces required env vars and scaffolds them as empty-valued `env` keys in local JSON configs.
13
+
14
+ ## Changed
15
+
16
+ - **`cyanheads_describe`** output now groups snippets into `## Local install (stdio)` and `## Remote install (HTTP)` sections when both apply; HTTP-only when no `endpoint` is present on the record.
17
+ - **`CatalogRecord.endpoint`** is now optional (was required) — forward-compatible with local-only servers that have no hosted HTTP endpoint.
18
+ - **`curl` probe** is emitted only for servers with a hosted endpoint; dropped for endpoint-less records.
19
+ - **MCP server config key** in README install examples renamed from `cyanheads` to `cyanheads-mcp-server`.
20
+
21
+ ## Dependency bumps
22
+
23
+ - `tsx` ^4.22.3 → ^4.22.4
24
+ - `vitest` ^4.1.7 → ^4.1.8
25
+ - `@cyanheads/mcp-ts-core` held at `0.9.16` (allowlisted in `devcheck.config.json`)
@@ -0,0 +1,22 @@
1
+ ---
2
+ summary: "Adopt @cyanheads/mcp-ts-core 0.9.21 — request-context fix, secret-stripping in fetchWithTimeout, fail-fast withRetry"
3
+ breaking: false
4
+ ---
5
+
6
+ # 0.3.1 — 2026-06-02
7
+
8
+ ## Changed
9
+
10
+ - **`@cyanheads/mcp-ts-core`** `^0.9.16` → `^0.9.21` — picks up three framework improvements:
11
+ - **HTTP transport per-request log context** — per-request logs and traces now carry fresh `requestId` + `traceId`/`spanId` instead of the frozen boot context.
12
+ - **`fetchWithTimeout`** strips query-string secrets (e.g. `?api_key=…`) from error messages and logs before surfacing them.
13
+ - **`withRetry`** fails fast on non-retryable errors; `ctx.fail` auto-populates the `retryable` flag on the thrown error.
14
+ - **`scripts/devcheck.ts`** extended with skill-version and other checks from the updated framework template.
15
+ - **`scripts/release-github.ts`** and **`scripts/check-skill-versions.ts`** added (new framework scripts).
16
+ - **Skills** (`add-tool`, `add-service`, `api-canvas`, `api-context`, `api-linter`, `api-utils`, `design-mcp-server`, `release-and-publish`) updated to 0.9.21 framework surface; **`skills/api-mirror/`** and **`skills/orchestrations/`** added (new in 0.9.19+).
17
+
18
+ ## Dependency bumps
19
+
20
+ - `@cyanheads/mcp-ts-core` ^0.9.16 → ^0.9.21
21
+ - `vitest` ^4.1.7 → ^4.1.8
22
+ - `tsx` ^4.22.3 → ^4.22.4
@@ -35,8 +35,9 @@ export declare const describeTool: import("@cyanheads/mcp-ts-core").ToolDefiniti
35
35
  version: z.ZodString;
36
36
  npm: z.ZodString;
37
37
  github: z.ZodString;
38
- endpoint: z.ZodString;
38
+ endpoint: z.ZodOptional<z.ZodString>;
39
39
  auth: z.ZodString;
40
+ requiredEnvVars: z.ZodOptional<z.ZodArray<z.ZodString>>;
40
41
  toolCount: z.ZodNumber;
41
42
  installSnippets: z.ZodArray<z.ZodObject<{
42
43
  client: z.ZodEnum<{
@@ -47,6 +48,10 @@ export declare const describeTool: import("@cyanheads/mcp-ts-core").ToolDefiniti
47
48
  gemini: "gemini";
48
49
  "streamable-http": "streamable-http";
49
50
  }>;
51
+ transport: z.ZodEnum<{
52
+ stdio: "stdio";
53
+ http: "http";
54
+ }>;
50
55
  label: z.ZodString;
51
56
  payload: z.ZodString;
52
57
  }, z.core.$strip>>;
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8MvB,CAAC"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAyQvB,CAAC"}
@@ -11,10 +11,11 @@ import { getCatalogService } from '../../../services/catalog/catalog-service.js'
11
11
  import { buildAllSnippets } from '../../../services/catalog/snippets.js';
12
12
  export const describeTool = tool('cyanheads_describe', {
13
13
  title: 'Describe Fleet Tool or Server',
14
- description: 'Return the description, connection URL, and per-client install snippets for a named tool or ' +
15
- 'server. For tools: the description and the server it belongs to. ' +
16
- 'For servers: connection URL and install snippets for every supported client (or one specific ' +
17
- 'client when the client parameter is specified). Call cyanheads_search first to find valid names.',
14
+ description: 'Return the description and install snippets for a named tool or server. For tools: the ' +
15
+ 'description and the server it belongs to. For servers: local (stdio, via npx) install ' +
16
+ 'snippets for every published server, plus remote (HTTP) connection snippets when a hosted ' +
17
+ 'endpoint exists — for every supported client, or one client via the client parameter. ' +
18
+ 'Call cyanheads_search first to find valid names.',
18
19
  annotations: { readOnlyHint: true, openWorldHint: false },
19
20
  auth: ['tool:cyanheads_describe:read'],
20
21
  input: z.object({
@@ -31,30 +32,42 @@ export const describeTool = tool('cyanheads_describe', {
31
32
  client: z
32
33
  .enum(['claude-code', 'codex', 'cursor', 'curl', 'gemini', 'streamable-http'])
33
34
  .optional()
34
- .describe('Return the install snippet for this specific client only. ' +
35
- 'Omit to return snippets for all supported clients.'),
35
+ .describe('Return install snippets for this client only (both local and remote transports when ' +
36
+ 'available). Omit to return snippets for all supported clients.'),
36
37
  }),
37
38
  output: z.object({
38
39
  result: z
39
40
  .discriminatedUnion('kind', [
40
- z.object({
41
+ z
42
+ .object({
41
43
  kind: z.literal('tool').describe('Resolved as a tool entry.'),
42
44
  name: z.string().describe('Resolved name (as looked up).'),
43
45
  description: z.string().describe('Brief description of what the tool does.'),
44
46
  server: z.string().describe('Server package name that owns this tool.'),
45
- }),
46
- z.object({
47
+ })
48
+ .describe('A resolved tool entry — its description and the server that owns it.'),
49
+ z
50
+ .object({
47
51
  kind: z.literal('server').describe('Resolved as a server entry.'),
48
52
  name: z.string().describe('Resolved name (as looked up).'),
49
53
  displayName: z.string().describe('Human-readable server label.'),
50
54
  description: z.string().describe('Brief description of what the server does.'),
51
55
  version: z.string().describe('Published version captured at fleet-generation time.'),
52
- npm: z.string().describe('npm package name (e.g. "@cyanheads/arxiv-mcp-server").'),
56
+ npm: z
57
+ .string()
58
+ .describe('npm package name (e.g. "@cyanheads/arxiv-mcp-server"). Drives the local stdio snippets.'),
53
59
  github: z.string().describe('GitHub repository URL.'),
54
- endpoint: z.string().describe('Streamable HTTP endpoint for the hosted deployment.'),
60
+ endpoint: z
61
+ .string()
62
+ .optional()
63
+ .describe('Streamable HTTP endpoint for the hosted deployment. Absent for local-only (stdio) servers.'),
55
64
  auth: z
56
65
  .string()
57
66
  .describe('Auth requirement for the hosted deployment (currently always "none").'),
67
+ requiredEnvVars: z
68
+ .array(z.string())
69
+ .optional()
70
+ .describe('Env var names the local (stdio) install requires (e.g. ["MAILCHIMP_API_KEY"]). Absent when none.'),
58
71
  toolCount: z.number().describe('Number of tools exposed by this server.'),
59
72
  installSnippets: z
60
73
  .array(z
@@ -62,12 +75,17 @@ export const describeTool = tool('cyanheads_describe', {
62
75
  client: z
63
76
  .enum(['claude-code', 'codex', 'cursor', 'curl', 'gemini', 'streamable-http'])
64
77
  .describe('MCP client this snippet targets.'),
78
+ transport: z
79
+ .enum(['stdio', 'http'])
80
+ .describe('Transport this snippet installs — stdio (local) or http (remote).'),
65
81
  label: z.string().describe('Human-readable install method label.'),
66
82
  payload: z.string().describe('Install payload (JSON fragment or CLI command).'),
67
83
  })
68
84
  .describe('A single install instruction entry.'))
69
- .describe('Install instructions, one per supported client (or filtered by input.client).'),
70
- }),
85
+ .describe('Install instructions: local (stdio) snippets for every server, plus remote (HTTP) ' +
86
+ 'snippets when an endpoint exists. Filtered to one client when input.client is set.'),
87
+ })
88
+ .describe('A resolved server entry — metadata, optional hosted endpoint, and per-client install snippets.'),
71
89
  ])
72
90
  .describe('The resolved entry — either a tool detail or a server detail depending on the resolved kind.'),
73
91
  }),
@@ -140,8 +158,11 @@ export const describeTool = tool('cyanheads_describe', {
140
158
  version: serverEntry.version,
141
159
  npm: serverEntry.npm,
142
160
  github: serverEntry.github,
143
- endpoint: serverEntry.endpoint,
161
+ ...(serverEntry.endpoint ? { endpoint: serverEntry.endpoint } : {}),
144
162
  auth: serverEntry.auth,
163
+ ...(serverEntry.requiredEnvVars?.length
164
+ ? { requiredEnvVars: serverEntry.requiredEnvVars }
165
+ : {}),
145
166
  toolCount: serverEntry.tools.length,
146
167
  installSnippets: snippets,
147
168
  },
@@ -172,18 +193,39 @@ export const describeTool = tool('cyanheads_describe', {
172
193
  lines.push(`**GitHub:** ${result.github}`);
173
194
  lines.push(`**Auth:** ${result.auth}`);
174
195
  lines.push(`**Tool count:** ${result.toolCount}`);
175
- lines.push(`**Endpoint:** ${result.endpoint}`);
176
196
  lines.push('');
177
197
  lines.push('## Description');
178
198
  lines.push(result.description);
179
199
  lines.push('');
180
- lines.push('## Install Snippets');
181
- for (const snippet of result.installSnippets) {
182
- lines.push(`### ${snippet.label} (${snippet.client})`);
183
- lines.push('```');
184
- lines.push(snippet.payload);
185
- lines.push('```');
200
+ const local = result.installSnippets.filter((s) => s.transport === 'stdio');
201
+ const remote = result.installSnippets.filter((s) => s.transport === 'http');
202
+ if (local.length > 0) {
203
+ lines.push('## Local install (stdio)');
204
+ lines.push('Run locally via npx — available for every published server, no hosting required.');
205
+ if (result.requiredEnvVars?.length) {
206
+ lines.push('');
207
+ lines.push(`**Required env vars:** ${result.requiredEnvVars.join(', ')} — set these for the server to work.`);
208
+ }
209
+ lines.push('');
210
+ for (const snippet of local) {
211
+ lines.push(`### ${snippet.label} (${snippet.client})`);
212
+ lines.push('```');
213
+ lines.push(snippet.payload);
214
+ lines.push('```');
215
+ lines.push('');
216
+ }
217
+ }
218
+ if (result.endpoint) {
219
+ lines.push('## Remote install (HTTP)');
220
+ lines.push(`**Endpoint:** ${result.endpoint}`);
186
221
  lines.push('');
222
+ for (const snippet of remote) {
223
+ lines.push(`### ${snippet.label} (${snippet.client})`);
224
+ lines.push('```');
225
+ lines.push(snippet.payload);
226
+ lines.push('```');
227
+ lines.push('');
228
+ }
187
229
  }
188
230
  }
189
231
  return [{ type: 'text', text: lines.join('\n') }];
@@ -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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"}
@@ -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;AAyC/C,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAK9E;;;;OAIG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAoDxD"}
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;gBAExB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,uBAAuB,CAAC;IAK9E;;;;OAIG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;CAoDxD"}
@@ -20,11 +20,12 @@ const CatalogRecordSchema = z.object({
20
20
  displayName: z.string(),
21
21
  description: z.string(),
22
22
  category: z.enum(['research', 'government', 'public-data', 'utility']),
23
- endpoint: z.string(),
23
+ endpoint: z.string().optional(),
24
24
  npm: z.string(),
25
25
  github: z.string(),
26
26
  version: z.string(),
27
27
  auth: z.string(),
28
+ requiredEnvVars: z.array(z.string()).optional(),
28
29
  embedding: EmbeddingSchema,
29
30
  tools: z.array(CatalogToolSchema),
30
31
  });
@@ -1 +1 @@
1
- {"version":3,"file":"remote-catalog-provider.js","sourceRoot":"","sources":["../../../src/services/catalog/remote-catalog-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-catalog-provider.js","sourceRoot":"","sources":["../../../src/services/catalog/remote-catalog-provider.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,23 @@
1
1
  /**
2
- * @fileoverview Per-client install snippet factory registry.
3
- * A plain Record mapping ClientId to a factory function that produces an InstallSnippet
4
- * from a CatalogRecord. Snippets are derived at request time from the record's
5
- * { name, endpoint } fields — no precomputed snippet list lives in the catalog JSON.
2
+ * @fileoverview Per-client install snippet factories.
3
+ * Snippets are derived at request time from a CatalogRecord — no precomputed snippet
4
+ * list lives in the catalog JSON. Two transports per server:
5
+ * - stdio (local): built from `record.npm` via `npx -y <pkg>`. Available for every
6
+ * published server. The `curl` probe has no stdio analog, so it is HTTP-only.
7
+ * - http (remote): built from `record.endpoint`. Emitted only when the record has an
8
+ * endpoint (hosted servers).
6
9
  *
7
- * All fleet servers run Streamable HTTP — the legacy `sse` transport tag is not
8
- * emitted. Per-client formats:
9
- * - claude-code / gemini: `<cli> mcp add --transport http <name> <url>`
10
- * - codex: `codex mcp add <name> --url <url>`
11
- * - cursor: `mcpServers.<name>.{url}` (no `type` field)
12
- * - streamable-http: `mcpServers.<name>.{type:"http", url}` (Claude Desktop, Cline, generic)
13
- * - curl: `initialize` POST with `MCP-Protocol-Version` header
10
+ * Required env vars (`record.requiredEnvVars`) are scaffolded into the JSON config
11
+ * snippets as empty-valued `env` keys so the caller knows what to set; the CLI snippets
12
+ * stay bare and runnable. All hosted servers run Streamable HTTP — the legacy `sse`
13
+ * transport tag is never emitted.
14
14
  * @module services/catalog/snippets
15
15
  */
16
- import type { CatalogRecord, ClientId, InstallSnippet } from './types.js';
17
- /** Factory signature: given a CatalogRecord, produce one InstallSnippet. */
18
- type SnippetFactory = (record: CatalogRecord) => InstallSnippet;
19
- /** Registry of all supported clients. */
20
- export declare const SNIPPET_REGISTRY: Record<ClientId, SnippetFactory>;
21
- /** Generate install snippets for all supported clients for a given record. */
16
+ import type { CatalogRecord, InstallSnippet } from './types.js';
17
+ /**
18
+ * Generate every install snippet for a record: local (stdio) snippets always, plus
19
+ * remote (HTTP) snippets when the record has a hosted endpoint. Local snippets come
20
+ * first so a flat consumer reads "install locally, or connect remotely" top to bottom.
21
+ */
22
22
  export declare function buildAllSnippets(record: CatalogRecord): InstallSnippet[];
23
- export {};
24
23
  //# sourceMappingURL=snippets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snippets.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/snippets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE1E,4EAA4E;AAC5E,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,aAAa,KAAK,cAAc,CAAC;AAkFhE,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,cAAc,CAO7D,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,EAAE,CAExE"}
1
+ {"version":3,"file":"snippets.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/snippets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AA8LhE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,EAAE,CAOxE"}
@@ -1,46 +1,116 @@
1
1
  /**
2
- * @fileoverview Per-client install snippet factory registry.
3
- * A plain Record mapping ClientId to a factory function that produces an InstallSnippet
4
- * from a CatalogRecord. Snippets are derived at request time from the record's
5
- * { name, endpoint } fields — no precomputed snippet list lives in the catalog JSON.
2
+ * @fileoverview Per-client install snippet factories.
3
+ * Snippets are derived at request time from a CatalogRecord — no precomputed snippet
4
+ * list lives in the catalog JSON. Two transports per server:
5
+ * - stdio (local): built from `record.npm` via `npx -y <pkg>`. Available for every
6
+ * published server. The `curl` probe has no stdio analog, so it is HTTP-only.
7
+ * - http (remote): built from `record.endpoint`. Emitted only when the record has an
8
+ * endpoint (hosted servers).
6
9
  *
7
- * All fleet servers run Streamable HTTP — the legacy `sse` transport tag is not
8
- * emitted. Per-client formats:
9
- * - claude-code / gemini: `<cli> mcp add --transport http <name> <url>`
10
- * - codex: `codex mcp add <name> --url <url>`
11
- * - cursor: `mcpServers.<name>.{url}` (no `type` field)
12
- * - streamable-http: `mcpServers.<name>.{type:"http", url}` (Claude Desktop, Cline, generic)
13
- * - curl: `initialize` POST with `MCP-Protocol-Version` header
10
+ * Required env vars (`record.requiredEnvVars`) are scaffolded into the JSON config
11
+ * snippets as empty-valued `env` keys so the caller knows what to set; the CLI snippets
12
+ * stay bare and runnable. All hosted servers run Streamable HTTP — the legacy `sse`
13
+ * transport tag is never emitted.
14
14
  * @module services/catalog/snippets
15
15
  */
16
16
  /** MCP protocol version pinned in the curl `initialize` snippet. */
17
17
  const CURL_MCP_PROTOCOL_VERSION = '2025-11-25';
18
- /** Claude Code CLI install command. */
19
- function claudeCodeSnippet(record) {
18
+ /**
19
+ * `env` block for a JSON config snippet — one empty-valued key per required var.
20
+ * Returns nothing to spread when the server needs no configuration, so the `env`
21
+ * block is omitted entirely rather than emitted empty.
22
+ */
23
+ function envBlock(record) {
24
+ const vars = record.requiredEnvVars;
25
+ if (!vars || vars.length === 0)
26
+ return {};
27
+ return { env: Object.fromEntries(vars.map((name) => [name, ''])) };
28
+ }
29
+ // ---------------------------------------------------------------------------
30
+ // Local (stdio) factories — built from record.npm via `npx -y <pkg>`
31
+ // ---------------------------------------------------------------------------
32
+ function claudeCodeStdio(record) {
20
33
  return {
21
34
  client: 'claude-code',
35
+ transport: 'stdio',
22
36
  label: 'Claude Code (CLI)',
23
- payload: `claude mcp add --transport http ${record.name} ${record.endpoint}`,
37
+ payload: `claude mcp add --transport stdio ${record.name} -- npx -y ${record.npm}`,
24
38
  };
25
39
  }
26
- /** OpenAI Codex CLI install command. */
27
- function codexSnippet(record) {
40
+ function codexStdio(record) {
28
41
  return {
29
42
  client: 'codex',
43
+ transport: 'stdio',
30
44
  label: 'Codex (CLI)',
31
- payload: `codex mcp add ${record.name} --url ${record.endpoint}`,
45
+ payload: `codex mcp add ${record.name} -- npx -y ${record.npm}`,
32
46
  };
33
47
  }
34
- /** Cursor `.cursor/mcp.json` fragment (Cursor reads HTTP servers without a `type` field). */
35
- function cursorSnippet(record) {
48
+ function cursorStdio(record) {
36
49
  return {
37
50
  client: 'cursor',
51
+ transport: 'stdio',
38
52
  label: 'Cursor (mcp.json)',
39
- payload: JSON.stringify({ mcpServers: { [record.name]: { url: record.endpoint } } }, null, 2),
53
+ payload: JSON.stringify({
54
+ mcpServers: {
55
+ [record.name]: { command: 'npx', args: ['-y', record.npm], ...envBlock(record) },
56
+ },
57
+ }, null, 2),
58
+ };
59
+ }
60
+ function geminiStdio(record) {
61
+ return {
62
+ client: 'gemini',
63
+ transport: 'stdio',
64
+ label: 'Gemini (CLI)',
65
+ payload: `gemini mcp add ${record.name} npx -y ${record.npm}`,
40
66
  };
41
67
  }
42
- /** curl `initialize` request — a connectivity probe, not an install. */
43
- function curlSnippet(record) {
68
+ /** Generic `mcpServers` JSON (stdio) for Claude Desktop, Cline, and other MCP clients. */
69
+ function genericStdio(record) {
70
+ return {
71
+ client: 'streamable-http',
72
+ transport: 'stdio',
73
+ label: 'Claude Desktop / Cline / generic',
74
+ payload: JSON.stringify({
75
+ mcpServers: {
76
+ [record.name]: {
77
+ type: 'stdio',
78
+ command: 'npx',
79
+ args: ['-y', record.npm],
80
+ ...envBlock(record),
81
+ },
82
+ },
83
+ }, null, 2),
84
+ };
85
+ }
86
+ // ---------------------------------------------------------------------------
87
+ // Remote (HTTP) factories — built from the hosted endpoint
88
+ // ---------------------------------------------------------------------------
89
+ function claudeCodeHttp(record, endpoint) {
90
+ return {
91
+ client: 'claude-code',
92
+ transport: 'http',
93
+ label: 'Claude Code (CLI)',
94
+ payload: `claude mcp add --transport http ${record.name} ${endpoint}`,
95
+ };
96
+ }
97
+ function codexHttp(record, endpoint) {
98
+ return {
99
+ client: 'codex',
100
+ transport: 'http',
101
+ label: 'Codex (CLI)',
102
+ payload: `codex mcp add ${record.name} --url ${endpoint}`,
103
+ };
104
+ }
105
+ function cursorHttp(record, endpoint) {
106
+ return {
107
+ client: 'cursor',
108
+ transport: 'http',
109
+ label: 'Cursor (mcp.json)',
110
+ payload: JSON.stringify({ mcpServers: { [record.name]: { url: endpoint } } }, null, 2),
111
+ };
112
+ }
113
+ function curlHttp(_record, endpoint) {
44
114
  const body = JSON.stringify({
45
115
  jsonrpc: '2.0',
46
116
  id: 1,
@@ -53,46 +123,62 @@ function curlSnippet(record) {
53
123
  });
54
124
  return {
55
125
  client: 'curl',
126
+ transport: 'http',
56
127
  label: 'curl (initialize probe)',
57
128
  payload: [
58
- `curl -X POST ${record.endpoint} \\`,
129
+ `curl -X POST ${endpoint} \\`,
59
130
  ` -H "Content-Type: application/json" \\`,
60
131
  ` -H "MCP-Protocol-Version: ${CURL_MCP_PROTOCOL_VERSION}" \\`,
61
132
  ` -d '${body}'`,
62
133
  ].join('\n'),
63
134
  };
64
135
  }
65
- /** Gemini CLI install command. */
66
- function geminiSnippet(record) {
136
+ function geminiHttp(record, endpoint) {
67
137
  return {
68
138
  client: 'gemini',
139
+ transport: 'http',
69
140
  label: 'Gemini (CLI)',
70
- payload: `gemini mcp add --transport http ${record.name} ${record.endpoint}`,
141
+ payload: `gemini mcp add --transport http ${record.name} ${endpoint}`,
71
142
  };
72
143
  }
73
- /**
74
- * Generic Streamable HTTP `mcpServers` block. Works for Claude Desktop, Cline,
75
- * mcp-remote, and any other MCP client that consumes the standard config shape
76
- * with `type: "http"`.
77
- */
78
- function streamableHttpSnippet(record) {
144
+ /** Generic `mcpServers` JSON (Streamable HTTP) for Claude Desktop, Cline, mcp-remote. */
145
+ function genericHttp(record, endpoint) {
79
146
  return {
80
147
  client: 'streamable-http',
81
- label: 'Streamable HTTP (Claude Desktop, Cline, generic)',
82
- payload: JSON.stringify({ mcpServers: { [record.name]: { type: 'http', url: record.endpoint } } }, null, 2),
148
+ transport: 'http',
149
+ label: 'Claude Desktop / Cline / generic',
150
+ payload: JSON.stringify({ mcpServers: { [record.name]: { type: 'http', url: endpoint } } }, null, 2),
83
151
  };
84
152
  }
85
- /** Registry of all supported clients. */
86
- export const SNIPPET_REGISTRY = {
87
- 'claude-code': claudeCodeSnippet,
88
- codex: codexSnippet,
89
- cursor: cursorSnippet,
90
- curl: curlSnippet,
91
- gemini: geminiSnippet,
92
- 'streamable-http': streamableHttpSnippet,
93
- };
94
- /** Generate install snippets for all supported clients for a given record. */
153
+ /** Local (stdio) factories, in render order. One per client that supports a local install. */
154
+ const STDIO_FACTORIES = [
155
+ claudeCodeStdio,
156
+ codexStdio,
157
+ cursorStdio,
158
+ geminiStdio,
159
+ genericStdio,
160
+ ];
161
+ /** Remote (HTTP) factories, in render order. Emitted only when the record has an endpoint. */
162
+ const HTTP_FACTORIES = [
163
+ claudeCodeHttp,
164
+ codexHttp,
165
+ cursorHttp,
166
+ curlHttp,
167
+ geminiHttp,
168
+ genericHttp,
169
+ ];
170
+ /**
171
+ * Generate every install snippet for a record: local (stdio) snippets always, plus
172
+ * remote (HTTP) snippets when the record has a hosted endpoint. Local snippets come
173
+ * first so a flat consumer reads "install locally, or connect remotely" top to bottom.
174
+ */
95
175
  export function buildAllSnippets(record) {
96
- return Object.values(SNIPPET_REGISTRY).map((factory) => factory(record));
176
+ const snippets = STDIO_FACTORIES.map((factory) => factory(record));
177
+ if (record.endpoint) {
178
+ const endpoint = record.endpoint;
179
+ for (const factory of HTTP_FACTORIES)
180
+ snippets.push(factory(record, endpoint));
181
+ }
182
+ return snippets;
97
183
  }
98
184
  //# sourceMappingURL=snippets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snippets.js","sourceRoot":"","sources":["../../../src/services/catalog/snippets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snippets.js","sourceRoot":"","sources":["../../../src/services/catalog/snippets.ts"],"names":[],"mappings":"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"}
@@ -20,22 +20,28 @@ export interface CatalogTool {
20
20
  /** Fully-qualified name: snake_case (e.g. "earthquake_search"). */
21
21
  name: string;
22
22
  }
23
- /** Per-client install snippet. */
23
+ /** Per-client install snippet for one transport. */
24
24
  export interface InstallSnippet {
25
25
  /** MCP client identifier. */
26
26
  client: ClientId;
27
27
  /** Human-readable label for the install method. */
28
28
  label: string;
29
29
  /**
30
- * The install payload. Shape varies by client:
31
- * - claude-code: CLI command (`claude mcp add --transport http <name> <url>`)
32
- * - codex: CLI command (`codex mcp add <name> --url <url>`)
33
- * - cursor: JSON fragment for `.cursor/mcp.json` mcpServers block (no `type` field)
34
- * - curl: HTTP `initialize` request for connectivity testing
35
- * - gemini: CLI command (`gemini mcp add --transport http <name> <url>`)
36
- * - streamable-http: generic JSON fragment for any MCP HTTP client (Claude Desktop, Cline, mcp-remote)
30
+ * The install payload. Shape varies by client and transport:
31
+ * - claude-code: CLI — stdio `claude mcp add --transport stdio <name> -- npx -y <pkg>`; http `claude mcp add --transport http <name> <url>`
32
+ * - codex: CLI — stdio `codex mcp add <name> -- npx -y <pkg>`; http `codex mcp add <name> --url <url>`
33
+ * - cursor: `mcpServers` JSON, no `type` field — stdio `{ command, args }`; http `{ url }`
34
+ * - gemini: CLI — stdio `gemini mcp add <name> npx -y <pkg>`; http `gemini mcp add --transport http <name> <url>`
35
+ * - streamable-http: generic `mcpServers` JSON with `type` — stdio `{ type: 'stdio', command, args }`; http `{ type: 'http', url }`
36
+ * - curl: http only — `initialize` connectivity probe against the endpoint
37
37
  */
38
38
  payload: string;
39
+ /**
40
+ * Transport this snippet installs.
41
+ * - `stdio`: local install via `npx -y <pkg>` — available for every published server.
42
+ * - `http`: remote connection to the hosted endpoint — present only when the record has an `endpoint`.
43
+ */
44
+ transport: 'stdio' | 'http';
39
45
  }
40
46
  /** One fleet server record, mirroring the fleet.json servers[] entry. */
41
47
  export interface CatalogRecord {
@@ -55,14 +61,23 @@ export interface CatalogRecord {
55
61
  * `${displayName}\n${description}`. Length matches FleetPayload.embeddingDims.
56
62
  */
57
63
  embedding: number[];
58
- /** Streamable HTTP endpoint — always present; the catalog covers hosted servers only. */
59
- endpoint: string;
64
+ /**
65
+ * Streamable HTTP endpoint for the hosted deployment. Optional: present for hosted
66
+ * servers (drives the remote/HTTP snippets), absent for local-only (stdio) servers.
67
+ */
68
+ endpoint?: string;
60
69
  /** GitHub repository URL. */
61
70
  github: string;
62
71
  /** Package name without scope (e.g. "arxiv-mcp-server"). */
63
72
  name: string;
64
- /** npm package name (scoped, e.g. "@cyanheads/arxiv-mcp-server"). */
73
+ /** npm package name (scoped, e.g. "@cyanheads/arxiv-mcp-server"). Drives the local stdio snippets. */
65
74
  npm: string;
75
+ /**
76
+ * Env var names the local (stdio) install requires (e.g. ["MAILCHIMP_API_KEY"]).
77
+ * Surfaced in the local-install snippets so the caller knows what to set. Optional —
78
+ * absent or empty when the server needs no configuration.
79
+ */
80
+ requiredEnvVars?: string[];
66
81
  /** Tool entries for this server, each with its own embedding. */
67
82
  tools: CatalogTool[];
68
83
  /** Published version captured at fleet-generation time (e.g. "1.2.7"). */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/types.ts"],"names":[],"mappings":"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"}
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.2.0",
4
+ "version": "0.3.1",
5
5
  "description": "Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.",
6
6
  "author": { "name": "cyanheads" },
7
7
  "repository": {
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.2.0",
4
+ "version": "0.3.1",
5
5
  "description": "Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",
@@ -41,6 +41,7 @@
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
42
  "changelog:build": "tsx scripts/build-changelog.ts",
43
43
  "changelog:check": "tsx scripts/build-changelog.ts --check",
44
+ "release:github": "tsx scripts/release-github.ts",
44
45
  "test": "vitest run",
45
46
  "start": "node dist/index.js",
46
47
  "start:stdio": "MCP_TRANSPORT_TYPE=stdio node dist/index.js",
@@ -70,7 +71,7 @@
70
71
  "access": "public"
71
72
  },
72
73
  "dependencies": {
73
- "@cyanheads/mcp-ts-core": "^0.9.16",
74
+ "@cyanheads/mcp-ts-core": "^0.9.21",
74
75
  "@huggingface/transformers": "4.2.0",
75
76
  "pino-pretty": "^13.1.3",
76
77
  "zod": "^4.4.3"
@@ -81,8 +82,8 @@
81
82
  "depcheck": "^1.4.7",
82
83
  "ignore": "^7.0.5",
83
84
  "tsc-alias": "^1.8.17",
84
- "tsx": "^4.22.3",
85
+ "tsx": "^4.22.4",
85
86
  "typescript": "^6.0.3",
86
- "vitest": "^4.1.7"
87
+ "vitest": "^4.1.8"
87
88
  }
88
89
  }
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.2.0",
9
+ "version": "0.3.1",
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.2.0",
22
+ "version": "0.3.1",
23
23
  "packageArguments": [
24
24
  { "type": "positional", "value": "run" },
25
25
  { "type": "positional", "value": "start:stdio" }
@@ -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.2.0",
71
+ "version": "0.3.1",
72
72
  "packageArguments": [
73
73
  { "type": "positional", "value": "run" },
74
74
  { "type": "positional", "value": "start:http" }