@cyanheads/cyanheads-mcp-server 0.1.9 → 0.3.0
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 +1 -1
- package/CLAUDE.md +1 -1
- package/README.md +10 -9
- package/changelog/0.2.x/0.2.0.md +19 -0
- package/changelog/0.3.x/0.3.0.md +25 -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/mcp-server/tools/definitions/search.tool.d.ts +13 -5
- package/dist/mcp-server/tools/definitions/search.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search.tool.js +76 -20
- package/dist/mcp-server/tools/definitions/search.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 +3 -3
- package/server.json +3 -3
package/AGENTS.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** cyanheads-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
4
|
+
**Version:** 0.3.0
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.16`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
package/CLAUDE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** cyanheads-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
4
|
+
**Version:** 0.3.0
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.16`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
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,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "cyanheads_search servers roll-up (scope tools), structured-empty on zero matches, and .mcpbignore root-anchor fix"
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.2.0 — 2026-05-30
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- **`cyanheads_search` servers roll-up** (scope `tools`). The response now includes a `servers` array built from the full match set before the limit slice — each entry carries `name`, `brief`, `category`, `matchedTools` (count of this server's tools in the match set), and `topScore` (best per-tool cosine). Ordered by `topScore` desc (name-tiebroken), capped at 10. `serversTotal` surfaces the true distinct-server count when the cap fires. Absent for scope `servers`. ([#4](https://github.com/cyanheads/cyanheads-mcp-server/issues/4))
|
|
12
|
+
|
|
13
|
+
## Changed
|
|
14
|
+
|
|
15
|
+
- **`cyanheads_search` zero-match path.** Returns `{ results: [], scope }` with enrichment populated (`effectiveQuery`, `totalCount: 0`, recovery `notice`) instead of throwing `no_results`. The `no_results` reason is removed from the tool's `errors[]` contract. Aligns the zero-match path with the rest of the fleet's search tools — agents no longer take an error round-trip on a valid empty query. ([#3](https://github.com/cyanheads/cyanheads-mcp-server/issues/3))
|
|
16
|
+
|
|
17
|
+
## Fixed
|
|
18
|
+
|
|
19
|
+
- **`.mcpbignore` directory excludes anchored to repo root.** Bare directory names (`src/`, `tests/`, `scripts/`, `skills/`, `docs/`, `coverage/`, `changelog/`, `announcements/`, `schemas/`) were unanchored and recursively matched inside `node_modules/`, stripping `@opentelemetry/api/build/src/` from the bundle (bundled server crashed on load). Prefixed with `/` to anchor to root. ([#2](https://github.com/cyanheads/cyanheads-mcp-server/issues/2))
|
|
@@ -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`)
|
|
@@ -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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"}
|
|
@@ -36,12 +36,20 @@ export declare const searchTool: import("@cyanheads/mcp-ts-core").ToolDefinition
|
|
|
36
36
|
tools: "tools";
|
|
37
37
|
servers: "servers";
|
|
38
38
|
}>;
|
|
39
|
+
servers: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
40
|
+
name: z.ZodString;
|
|
41
|
+
brief: z.ZodString;
|
|
42
|
+
category: z.ZodEnum<{
|
|
43
|
+
research: "research";
|
|
44
|
+
government: "government";
|
|
45
|
+
"public-data": "public-data";
|
|
46
|
+
utility: "utility";
|
|
47
|
+
}>;
|
|
48
|
+
matchedTools: z.ZodNumber;
|
|
49
|
+
topScore: z.ZodNumber;
|
|
50
|
+
}, z.core.$strip>>>;
|
|
51
|
+
serversTotal: z.ZodOptional<z.ZodNumber>;
|
|
39
52
|
}, z.core.$strip>, readonly [{
|
|
40
|
-
readonly reason: "no_results";
|
|
41
|
-
readonly code: JsonRpcErrorCode.NotFound;
|
|
42
|
-
readonly when: "Query produced no relevant matches.";
|
|
43
|
-
readonly recovery: "Broaden the query, remove the category filter, or try scope \"servers\" to find the right server first.";
|
|
44
|
-
}, {
|
|
45
53
|
readonly reason: "catalog_empty";
|
|
46
54
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
47
55
|
readonly when: "Catalog has not finished loading.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyNrB,CAAC"}
|
|
@@ -57,6 +57,28 @@ export const searchTool = tool('cyanheads_search', {
|
|
|
57
57
|
.describe('A single search result entry.'))
|
|
58
58
|
.describe('Ranked matches, best first.'),
|
|
59
59
|
scope: z.enum(['tools', 'servers']).describe('Scope that was searched.'),
|
|
60
|
+
servers: z
|
|
61
|
+
.array(z
|
|
62
|
+
.object({
|
|
63
|
+
name: z.string().describe('Server package name (e.g. "cdc-health-mcp-server").'),
|
|
64
|
+
brief: z.string().describe('One-line description of what the server does.'),
|
|
65
|
+
category: z
|
|
66
|
+
.enum(['research', 'government', 'public-data', 'utility'])
|
|
67
|
+
.describe('Catalog category.'),
|
|
68
|
+
matchedTools: z
|
|
69
|
+
.number()
|
|
70
|
+
.describe("Count of this server's tools in the full match set."),
|
|
71
|
+
topScore: z
|
|
72
|
+
.number()
|
|
73
|
+
.describe('Best cosine similarity among this server\'s matched tools. Drives ordering. Distinct from the score a server gets under scope "servers".'),
|
|
74
|
+
})
|
|
75
|
+
.describe('A server roll-up entry.'))
|
|
76
|
+
.optional()
|
|
77
|
+
.describe('Roll-up of distinct servers across the full match set, before the limit slice. Present only for scope "tools". Ordered by topScore desc (name-tiebroken); capped at 10. Use serversTotal to see how many distinct servers matched in total.'),
|
|
78
|
+
serversTotal: z
|
|
79
|
+
.number()
|
|
80
|
+
.optional()
|
|
81
|
+
.describe('Total distinct servers in the full match set (before the cap of 10 is applied). Present only when servers is present.'),
|
|
60
82
|
}),
|
|
61
83
|
// Agent-facing search context — query echo, total count, empty-result guidance.
|
|
62
84
|
// Reaches both structuredContent and content[] trailer; never in the domain return.
|
|
@@ -69,12 +91,6 @@ export const searchTool = tool('cyanheads_search', {
|
|
|
69
91
|
.describe('Guidance when no results matched — e.g. how to broaden the query or try a different scope. Absent on successful result pages.'),
|
|
70
92
|
},
|
|
71
93
|
errors: [
|
|
72
|
-
{
|
|
73
|
-
reason: 'no_results',
|
|
74
|
-
code: JsonRpcErrorCode.NotFound,
|
|
75
|
-
when: 'Query produced no relevant matches.',
|
|
76
|
-
recovery: 'Broaden the query, remove the category filter, or try scope "servers" to find the right server first.',
|
|
77
|
-
},
|
|
78
94
|
{
|
|
79
95
|
reason: 'catalog_empty',
|
|
80
96
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
@@ -100,27 +116,67 @@ export const searchTool = tool('cyanheads_search', {
|
|
|
100
116
|
ctx.enrich.total(totalMatched);
|
|
101
117
|
if (totalMatched === 0) {
|
|
102
118
|
ctx.enrich.notice(`No ${input.scope} matched "${input.query}". Try broadening the query${input.category ? ', removing the category filter,' : ''} or switching to scope "${input.scope === 'tools' ? 'servers' : 'tools'}".`);
|
|
103
|
-
|
|
104
|
-
...ctx.recoveryFor('no_results'),
|
|
105
|
-
query: input.query,
|
|
106
|
-
scope: input.scope,
|
|
107
|
-
category: input.category,
|
|
108
|
-
});
|
|
119
|
+
return { results: [], scope: input.scope };
|
|
109
120
|
}
|
|
110
121
|
const results = allResults.slice(0, input.limit);
|
|
111
122
|
ctx.log.info('Search complete', { totalMatched, returned: results.length });
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
123
|
+
if (input.scope === 'tools') {
|
|
124
|
+
// Build server roll-up from the full match set (before limit slice)
|
|
125
|
+
const SERVERS_CAP = 10;
|
|
126
|
+
const serverMap = new Map();
|
|
127
|
+
for (const r of allResults) {
|
|
128
|
+
const existing = serverMap.get(r.server);
|
|
129
|
+
if (existing) {
|
|
130
|
+
existing.matchedTools++;
|
|
131
|
+
if (r.score > existing.topScore)
|
|
132
|
+
existing.topScore = r.score;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
serverMap.set(r.server, { matchedTools: 1, topScore: r.score });
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const serversTotal = serverMap.size;
|
|
139
|
+
const servers = Array.from(serverMap.entries())
|
|
140
|
+
.sort(([nameA, a], [nameB, b]) => b.topScore - a.topScore || nameA.localeCompare(nameB))
|
|
141
|
+
.slice(0, SERVERS_CAP)
|
|
142
|
+
.map(([name, agg]) => {
|
|
143
|
+
const record = catalog.getServer(name);
|
|
144
|
+
return {
|
|
145
|
+
name,
|
|
146
|
+
brief: record?.description ?? '',
|
|
147
|
+
category: record?.category ?? 'utility',
|
|
148
|
+
matchedTools: agg.matchedTools,
|
|
149
|
+
topScore: agg.topScore,
|
|
150
|
+
};
|
|
151
|
+
});
|
|
152
|
+
return { results, scope: input.scope, servers, serversTotal };
|
|
153
|
+
}
|
|
154
|
+
return { results, scope: input.scope };
|
|
116
155
|
},
|
|
117
156
|
format: (result) => {
|
|
118
157
|
const lines = [`**Scope:** ${result.scope}`, ''];
|
|
119
|
-
|
|
120
|
-
lines.push(
|
|
121
|
-
|
|
122
|
-
|
|
158
|
+
if (result.results.length === 0) {
|
|
159
|
+
lines.push('No results matched.');
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
for (const item of result.results) {
|
|
163
|
+
lines.push(`### ${item.name}`);
|
|
164
|
+
lines.push(`**Server:** ${item.server} | **Category:** ${item.category} | **Score:** ${item.score.toFixed(3)}`);
|
|
165
|
+
lines.push(item.brief);
|
|
166
|
+
lines.push('');
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (result.servers && result.servers.length > 0) {
|
|
170
|
+
const cap = result.servers.length;
|
|
171
|
+
const total = result.serversTotal ?? cap;
|
|
172
|
+
const header = total > cap ? `## Servers (showing ${cap} of ${total})` : '## Servers';
|
|
173
|
+
lines.push(header);
|
|
123
174
|
lines.push('');
|
|
175
|
+
for (const s of result.servers) {
|
|
176
|
+
lines.push(`**${s.name}** (${s.category}) — ${s.matchedTools} matched tool${s.matchedTools === 1 ? '' : 's'}, top score ${s.topScore.toFixed(3)}`);
|
|
177
|
+
lines.push(s.brief);
|
|
178
|
+
lines.push('');
|
|
179
|
+
}
|
|
124
180
|
}
|
|
125
181
|
return [{ type: 'text', text: lines.join('\n') }];
|
|
126
182
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;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;AAE1E,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE;IACjD,KAAK,EAAE,gCAAgC;IACvC,WAAW,EACT,8FAA8F;QAC9F,yFAAyF;QACzF,mFAAmF;QACnF,0FAA0F;IAC5F,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE;IACzD,IAAI,EAAE,CAAC,4BAA4B,CAAC;IAEpC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CACP,wGAAwG,CACzG;QACH,KAAK,EAAE,CAAC;aACL,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;aAC1B,OAAO,CAAC,OAAO,CAAC;aAChB,QAAQ,CACP,kGAAkG,CACnG;QACH,QAAQ,EAAE,CAAC;aACR,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;aAC1D,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;QACzE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,EAAE,CAAC;aACP,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,wDAAwD,CAAC;KACtE,CAAC;IAEF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,CAAC;aACP,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,wEAAwE,CAAC;YACrF,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,CACP,0GAA0G,CAC3G;YACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YAChF,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;iBAC1D,QAAQ,CAAC,yCAAyC,CAAC;YACtD,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CACP,gHAAgH,CACjH;SACJ,CAAC;aACD,QAAQ,CAAC,+BAA+B,CAAC,CAC7C;aACA,QAAQ,CAAC,6BAA6B,CAAC;QAC1C,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"search.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/search.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":"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,CAAC,QAAQ,EAAE;IAC/B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC1C,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;CACtC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,OAAO,yBAAyB;IACnB,IAAI,CAAS;IACb,UAAU,CAAS;IAEpC,YAAY,MAAkE;QAC5E,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,MAAoB;QAC7B,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3D,MAAM,cAAc,GAClB,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;QAE5E,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,aAAa,EAC9B,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAC3E,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,EAClB,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,aAAa,EAC9B,0BAA0B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,EAClE,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAC7E,CAAC;QACJ,CAAC;QAED,IAAI,GAAY,CAAC;QACjB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,aAAa,EAC9B,uCAAuC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACzF,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,EAClB,EAAE,KAAK,EAAE,GAAG,EAAE,CACf,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;YAClD,MAAM,GAAG,GAAG,KAAK,EAAE,OAAO,IAAI,mBAAmB,CAAC;YAClD,MAAM,IAAI,QAAQ,CAChB,gBAAgB,CAAC,aAAa,EAC9B,wCAAwC,IAAI,KAAK,GAAG,EAAE,EACtD,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,IAAoB,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -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":"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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.
|
|
4
|
+
"version": "0.3.0",
|
|
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.0",
|
|
5
5
|
"description": "Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -81,8 +81,8 @@
|
|
|
81
81
|
"depcheck": "^1.4.7",
|
|
82
82
|
"ignore": "^7.0.5",
|
|
83
83
|
"tsc-alias": "^1.8.17",
|
|
84
|
-
"tsx": "^4.22.
|
|
84
|
+
"tsx": "^4.22.4",
|
|
85
85
|
"typescript": "^6.0.3",
|
|
86
|
-
"vitest": "^4.1.
|
|
86
|
+
"vitest": "^4.1.8"
|
|
87
87
|
}
|
|
88
88
|
}
|
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.0",
|
|
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.0",
|
|
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.0",
|
|
72
72
|
"packageArguments": [
|
|
73
73
|
{ "type": "positional", "value": "run" },
|
|
74
74
|
{ "type": "positional", "value": "start:http" }
|