@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 +7 -3
- package/CLAUDE.md +7 -3
- package/README.md +10 -9
- package/changelog/0.3.x/0.3.0.md +25 -0
- package/changelog/0.3.x/0.3.1.md +22 -0
- package/dist/mcp-server/tools/definitions/describe.tool.d.ts +6 -1
- package/dist/mcp-server/tools/definitions/describe.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/describe.tool.js +63 -21
- package/dist/mcp-server/tools/definitions/describe.tool.js.map +1 -1
- package/dist/services/catalog/remote-catalog-provider.d.ts.map +1 -1
- package/dist/services/catalog/remote-catalog-provider.js +2 -1
- package/dist/services/catalog/remote-catalog-provider.js.map +1 -1
- package/dist/services/catalog/snippets.d.ts +17 -18
- package/dist/services/catalog/snippets.d.ts.map +1 -1
- package/dist/services/catalog/snippets.js +131 -45
- package/dist/services/catalog/snippets.js.map +1 -1
- package/dist/services/catalog/types.d.ts +26 -11
- package/dist/services/catalog/types.d.ts.map +1 -1
- package/manifest.json +1 -1
- package/package.json +5 -4
- package/server.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** cyanheads-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.
|
|
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.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.
|
|
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
|
-
[](./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,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,
|
|
57
|
-
- `
|
|
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
|
|
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
|
|
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
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
lines.push('
|
|
184
|
-
lines.push(
|
|
185
|
-
|
|
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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE;IACrD,KAAK,EAAE,+BAA+B;IACtC,WAAW,EACT,
|
|
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;
|
|
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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAI3E,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AAE5C,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,SAAS,EAAE,eAAe;CAC3B,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IACtE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;
|
|
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
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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,
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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,
|
|
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
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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
|
-
/**
|
|
19
|
-
|
|
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
|
|
37
|
+
payload: `claude mcp add --transport stdio ${record.name} -- npx -y ${record.npm}`,
|
|
24
38
|
};
|
|
25
39
|
}
|
|
26
|
-
|
|
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} --
|
|
45
|
+
payload: `codex mcp add ${record.name} -- npx -y ${record.npm}`,
|
|
32
46
|
};
|
|
33
47
|
}
|
|
34
|
-
|
|
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({
|
|
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
|
-
/**
|
|
43
|
-
function
|
|
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 ${
|
|
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
|
-
|
|
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} ${
|
|
141
|
+
payload: `gemini mcp add --transport http ${record.name} ${endpoint}`,
|
|
71
142
|
};
|
|
72
143
|
}
|
|
73
|
-
/**
|
|
74
|
-
|
|
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
|
-
|
|
82
|
-
|
|
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
|
-
/**
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
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
|
|
32
|
-
* - codex: CLI
|
|
33
|
-
* - cursor: JSON
|
|
34
|
-
* -
|
|
35
|
-
* -
|
|
36
|
-
* -
|
|
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
|
-
/**
|
|
59
|
-
|
|
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":"AAAA;;;;;GAKG;AAEH,6DAA6D;AAC7D,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAElG,2CAA2C;AAC3C,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAEpF,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6DAA6D;AAC7D,MAAM,MAAM,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAElG,2CAA2C;AAC3C,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;AAEpF,gDAAgD;AAChD,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oDAAoD;AACpD,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,MAAM,EAAE,QAAQ,CAAC;IACjB,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;OAQG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;CAC7B;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,QAAQ,EAAE,eAAe,CAAC;IAC1B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,sGAAsG;IACtG,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iEAAiE;IACjE,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAC7B,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,qCAAqC;IACrC,OAAO,EAAE,GAAG,CAAC;CACd;AAED,iDAAiD;AACjD,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,QAAQ,EAAE,eAAe,CAAC;IAC1B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yBAAyB;AACzB,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAAC;IAE9C,+DAA+D;IAC/D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG;QAAE,YAAY,EAAE,aAAa,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IAE9E;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,wDAAwD;IACxD,cAAc,IAAI,eAAe,EAAE,CAAC;IAEpC;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE;QACb,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,CAAC;IAEnC,uCAAuC;IACvC,KAAK,IAAI;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH"}
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
85
|
+
"tsx": "^4.22.4",
|
|
85
86
|
"typescript": "^6.0.3",
|
|
86
|
-
"vitest": "^4.1.
|
|
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.
|
|
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.
|
|
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.
|
|
71
|
+
"version": "0.3.1",
|
|
72
72
|
"packageArguments": [
|
|
73
73
|
{ "type": "positional", "value": "run" },
|
|
74
74
|
{ "type": "positional", "value": "start:http" }
|