@cyanheads/cyanheads-mcp-server 0.4.1 → 0.4.3
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 +56 -26
- package/CLAUDE.md +56 -26
- package/Dockerfile +38 -29
- package/README.md +59 -48
- package/changelog/0.4.x/0.4.2.md +32 -0
- package/changelog/0.4.x/0.4.3.md +34 -0
- package/changelog/template.md +9 -26
- package/dist/index.js +22 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/describe-entry.tool.d.ts +24 -0
- package/dist/mcp-server/tools/definitions/describe-entry.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/describe-entry.tool.js +120 -95
- package/dist/mcp-server/tools/definitions/describe-entry.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/search-catalog.tool.d.ts +12 -0
- package/dist/mcp-server/tools/definitions/search-catalog.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/search-catalog.tool.js +86 -20
- package/dist/mcp-server/tools/definitions/search-catalog.tool.js.map +1 -1
- package/dist/services/catalog/catalog-service.d.ts +2 -2
- package/dist/services/catalog/catalog-service.d.ts.map +1 -1
- package/dist/services/catalog/catalog-service.js +36 -11
- package/dist/services/catalog/catalog-service.js.map +1 -1
- package/dist/services/catalog/remote-catalog-provider.d.ts +2 -2
- package/dist/services/catalog/remote-catalog-provider.d.ts.map +1 -1
- package/dist/services/catalog/remote-catalog-provider.js +34 -5
- package/dist/services/catalog/remote-catalog-provider.js.map +1 -1
- package/dist/services/catalog/self-record.js +3 -3
- package/dist/services/catalog/service-instance.js +1 -1
- package/dist/services/catalog/service-instance.js.map +1 -1
- package/dist/services/catalog/types.d.ts +2 -2
- package/dist/services/catalog/types.d.ts.map +1 -1
- package/manifest.json +2 -2
- package/package.json +26 -14
- package/server.json +3 -3
|
@@ -26,9 +26,9 @@ export declare class CatalogService implements ICatalogService {
|
|
|
26
26
|
}): Promise<CatalogSearchResult[]>;
|
|
27
27
|
/**
|
|
28
28
|
* The remote catalog is generated outside this repo and does not include the
|
|
29
|
-
* discovery front door itself, so both
|
|
29
|
+
* discovery front door itself, so both name lookups fall back to the
|
|
30
30
|
* server-local self record. The remote index is always consulted first: if the
|
|
31
|
-
* generator ever starts emitting
|
|
31
|
+
* generator ever starts emitting an exact or unique case-folded entry, that
|
|
32
32
|
* entry wins on every request and the fallback becomes unreachable — no
|
|
33
33
|
* duplication, no stale local metadata masking the real record. The static
|
|
34
34
|
* record also survives `_maybeRefresh()`'s atomic index swap by construction,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-service.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/catalog-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,kBAAkB,EAAiC,MAAM,yBAAyB,CAAC;AAIjG,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,WAAW,EAEX,eAAe,EAChB,MAAM,YAAY,CAAC;AAoBpB,KAAK,oBAAoB,GAAG,IAAI,CAC9B,YAAY,EACV,YAAY,GACZ,uBAAuB,GACvB,uBAAuB,GACvB,kBAAkB,GAClB,iBAAiB,CACpB,CAAC;AAMF,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,aAAa,CAA+C;IAEpE,YAAY,MAAM,EAAE,oBAAoB,EAAE,UAAU,CAAC,EAAE,kBAAkB,EAIxE;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAgChC;IAEK,MAAM,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;QAC3B,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAgDjC;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG;QAAE,YAAY,EAAE,aAAa,CAAA;KAAE,CAAC,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"catalog-service.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/catalog-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,KAAK,kBAAkB,EAAiC,MAAM,yBAAyB,CAAC;AAIjG,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,WAAW,EAEX,eAAe,EAChB,MAAM,YAAY,CAAC;AAoBpB,KAAK,oBAAoB,GAAG,IAAI,CAC9B,YAAY,EACV,YAAY,GACZ,uBAAuB,GACvB,uBAAuB,GACvB,kBAAkB,GAClB,iBAAiB,CACpB,CAAC;AAMF,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,aAAa,CAA+C;IAEpE,YAAY,MAAM,EAAE,oBAAoB,EAAE,UAAU,CAAC,EAAE,kBAAkB,EAIxE;IAEK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAgChC;IAEK,MAAM,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;QAC3B,QAAQ,CAAC,EAAE,eAAe,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAgDjC;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG;QAAE,YAAY,EAAE,aAAa,CAAA;KAAE,CAAC,GAAG,IAAI,CAO5E;IAED,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAO5C;IAED,cAAc,IAAI,eAAe,EAAE,CAKlC;IAED,KAAK,IAAI;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;KACxB,CAQA;IAED,gEAAgE;IAChE,QAAQ,IAAI,IAAI,CAKf;IAMD,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,WAAW;YA8DL,aAAa;IA2B3B,OAAO,CAAC,kBAAkB;CAe3B;AAoBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,oBAAoB,EAC5B,UAAU,CAAC,EAAE,kBAAkB,GAC9B,IAAI,CAEN"}
|
|
@@ -31,7 +31,7 @@ export class CatalogService {
|
|
|
31
31
|
const payload = await this._provider.load();
|
|
32
32
|
this._assertModelMatch(payload);
|
|
33
33
|
this._index = this._buildIndex(payload);
|
|
34
|
-
logger.info(`Fleet catalog loaded: ${payload.servers.length} servers, ${this._index.
|
|
34
|
+
logger.info(`Fleet catalog loaded: ${payload.servers.length} servers, ${this._index.toolVectors.length / this._index.dims} tools ` +
|
|
35
35
|
`(model=${payload.embeddingModel}, dims=${payload.embeddingDims}, generatedAt=${payload.generatedAt})`);
|
|
36
36
|
/**
|
|
37
37
|
* Eager warm-up: load the embedding model synchronously inside the setup
|
|
@@ -97,9 +97,9 @@ export class CatalogService {
|
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
99
99
|
* The remote catalog is generated outside this repo and does not include the
|
|
100
|
-
* discovery front door itself, so both
|
|
100
|
+
* discovery front door itself, so both name lookups fall back to the
|
|
101
101
|
* server-local self record. The remote index is always consulted first: if the
|
|
102
|
-
* generator ever starts emitting
|
|
102
|
+
* generator ever starts emitting an exact or unique case-folded entry, that
|
|
103
103
|
* entry wins on every request and the fallback becomes unreachable — no
|
|
104
104
|
* duplication, no stale local metadata masking the real record. The static
|
|
105
105
|
* record also survives `_maybeRefresh()`'s atomic index swap by construction,
|
|
@@ -107,11 +107,23 @@ export class CatalogService {
|
|
|
107
107
|
*/
|
|
108
108
|
getTool(name) {
|
|
109
109
|
const index = this._assertInitialized();
|
|
110
|
-
|
|
110
|
+
const exact = index.toolByName.get(name);
|
|
111
|
+
if (exact)
|
|
112
|
+
return exact;
|
|
113
|
+
const folded = name.toLowerCase();
|
|
114
|
+
if (index.toolByFoldedName.has(folded))
|
|
115
|
+
return index.toolByFoldedName.get(folded) ?? null;
|
|
116
|
+
return getSelfCatalogTool(folded);
|
|
111
117
|
}
|
|
112
118
|
getServer(name) {
|
|
113
119
|
const index = this._assertInitialized();
|
|
114
|
-
|
|
120
|
+
const exact = index.serverByName.get(name);
|
|
121
|
+
if (exact)
|
|
122
|
+
return exact;
|
|
123
|
+
const folded = name.toLowerCase();
|
|
124
|
+
if (index.serverByFoldedName.has(folded))
|
|
125
|
+
return index.serverByFoldedName.get(folded) ?? null;
|
|
126
|
+
return folded === SELF_RECORD_NAME ? getSelfCatalogRecord() : null;
|
|
115
127
|
}
|
|
116
128
|
listCategories() {
|
|
117
129
|
const index = this._assertInitialized();
|
|
@@ -123,7 +135,7 @@ export class CatalogService {
|
|
|
123
135
|
stats() {
|
|
124
136
|
const index = this._assertInitialized();
|
|
125
137
|
return {
|
|
126
|
-
toolCount: index.
|
|
138
|
+
toolCount: index.toolVectors.length / index.dims,
|
|
127
139
|
serverCount: index.payload.servers.length,
|
|
128
140
|
initializedAt: index.initializedAt,
|
|
129
141
|
embeddingModel: index.payload.embeddingModel,
|
|
@@ -158,7 +170,8 @@ export class CatalogService {
|
|
|
158
170
|
const toolVectors = new Float32Array(toolCount * dims);
|
|
159
171
|
const toolByName = new Map();
|
|
160
172
|
const serverByName = new Map();
|
|
161
|
-
const
|
|
173
|
+
const serverByFoldedName = new Map();
|
|
174
|
+
const toolByFoldedName = new Map();
|
|
162
175
|
let toolI = 0;
|
|
163
176
|
for (const [si, server] of payload.servers.entries()) {
|
|
164
177
|
if (server.name.includes('_')) {
|
|
@@ -169,13 +182,17 @@ export class CatalogService {
|
|
|
169
182
|
}
|
|
170
183
|
serverVectors.set(server.embedding, si * dims);
|
|
171
184
|
serverByName.set(server.name, server);
|
|
185
|
+
const serverFold = server.name.toLowerCase();
|
|
186
|
+
serverByFoldedName.set(serverFold, serverByFoldedName.has(serverFold) ? null : server);
|
|
172
187
|
for (const tool of server.tools) {
|
|
173
188
|
if (tool.embedding.length !== dims) {
|
|
174
189
|
throw internalError(`Tool "${tool.name}" embedding has ${tool.embedding.length} dims; expected ${dims}.`);
|
|
175
190
|
}
|
|
176
191
|
toolVectors.set(tool.embedding, toolI * dims);
|
|
177
|
-
|
|
178
|
-
|
|
192
|
+
const entry = { ...tool, serverRecord: server };
|
|
193
|
+
toolByName.set(tool.name, entry);
|
|
194
|
+
const toolFold = tool.name.toLowerCase();
|
|
195
|
+
toolByFoldedName.set(toolFold, toolByFoldedName.has(toolFold) ? null : entry);
|
|
179
196
|
toolI++;
|
|
180
197
|
}
|
|
181
198
|
}
|
|
@@ -185,7 +202,8 @@ export class CatalogService {
|
|
|
185
202
|
toolVectors,
|
|
186
203
|
toolByName,
|
|
187
204
|
serverByName,
|
|
188
|
-
|
|
205
|
+
toolByFoldedName,
|
|
206
|
+
serverByFoldedName,
|
|
189
207
|
dims,
|
|
190
208
|
initializedAt: new Date().toISOString(),
|
|
191
209
|
};
|
|
@@ -206,7 +224,7 @@ export class CatalogService {
|
|
|
206
224
|
}
|
|
207
225
|
const next = this._buildIndex(payload);
|
|
208
226
|
this._index = next;
|
|
209
|
-
logger.info(`Catalog refreshed: ${payload.servers.length} servers, ${next.
|
|
227
|
+
logger.info(`Catalog refreshed: ${payload.servers.length} servers, ${next.toolVectors.length / next.dims} tools (generatedAt=${payload.generatedAt})`);
|
|
210
228
|
}
|
|
211
229
|
catch (err) {
|
|
212
230
|
logger.warning(`Catalog refresh failed; keeping last-known state. ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -214,8 +232,15 @@ export class CatalogService {
|
|
|
214
232
|
}
|
|
215
233
|
_assertInitialized() {
|
|
216
234
|
if (!this._index) {
|
|
235
|
+
/**
|
|
236
|
+
* `retryable` rides the error data, not just the tools' declared
|
|
237
|
+
* `errors[]` entry: the framework renders `data.retryable` into the
|
|
238
|
+
* `content[]` trailer and clients branch on it there. Both tools
|
|
239
|
+
* advertise this reason as retryable, so the throw has to say so.
|
|
240
|
+
*/
|
|
217
241
|
throw serviceUnavailable('CatalogService not initialized — call initialize() in setup()', {
|
|
218
242
|
reason: 'catalog_empty',
|
|
243
|
+
retryable: true,
|
|
219
244
|
});
|
|
220
245
|
}
|
|
221
246
|
return this._index;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-service.js","sourceRoot":"","sources":["../../../src/services/catalog/catalog-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtD,OAAO,EAA2B,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACjG,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAqC1D,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,OAAO,cAAc;IACjB,MAAM,GAAwB,IAAI,CAAC;IAC1B,SAAS,CAA4B;IACrC,WAAW,CAAqB;IAChC,OAAO,CAAuB;IACvC,aAAa,GAA0C,IAAI,CAAC;IAEpE,YAAY,MAA4B,EAAE,UAA+B;QACvE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,IAAI,6BAA6B,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC9F,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAE5C,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAExC,MAAM,CAAC,IAAI,CACT,yBAAyB,OAAO,CAAC,OAAO,CAAC,MAAM,aAAa,IAAI,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"catalog-service.js","sourceRoot":"","sources":["../../../src/services/catalog/catalog-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview RemoteJsonCatalogProvider — fetches and validates the fleet.json
|
|
3
|
-
* payload (schema v2, with baked embeddings) from a configurable URL.
|
|
4
|
-
*
|
|
3
|
+
* payload (schema v2, with baked embeddings) from a configurable URL. Normalizes
|
|
4
|
+
* duplicate identities before CatalogService builds and caches the index.
|
|
5
5
|
* @module services/catalog/remote-catalog-provider
|
|
6
6
|
*/
|
|
7
7
|
import type { ServerConfig } from '../../config/server-config.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-catalog-provider.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/remote-catalog-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"remote-catalog-provider.d.ts","sourceRoot":"","sources":["../../../src/services/catalog/remote-catalog-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0C/C,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YAAY,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,YAAY,GAAG,uBAAuB,CAAC,EAG7E;IAED;;;;OAIG;IACG,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CA4DtD;CACF"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview RemoteJsonCatalogProvider — fetches and validates the fleet.json
|
|
3
|
-
* payload (schema v2, with baked embeddings) from a configurable URL.
|
|
4
|
-
*
|
|
3
|
+
* payload (schema v2, with baked embeddings) from a configurable URL. Normalizes
|
|
4
|
+
* duplicate identities before CatalogService builds and caches the index.
|
|
5
5
|
* @module services/catalog/remote-catalog-provider
|
|
6
6
|
*/
|
|
7
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
7
8
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
8
9
|
import { internalError, McpError } from '@cyanheads/mcp-ts-core/errors';
|
|
9
|
-
import { fetchWithTimeout, requestContextService } from '@cyanheads/mcp-ts-core/utils';
|
|
10
|
+
import { fetchWithTimeout, logger, requestContextService } from '@cyanheads/mcp-ts-core/utils';
|
|
10
11
|
// ---------------------------------------------------------------------------
|
|
11
12
|
// Validation schema (v2)
|
|
12
13
|
// ---------------------------------------------------------------------------
|
|
@@ -36,7 +37,7 @@ const FleetPayloadSchema = z.object({
|
|
|
36
37
|
embeddingModel: z.string(),
|
|
37
38
|
embeddingDims: z.number().int().positive(),
|
|
38
39
|
embeddingQueryPrefix: z.string(),
|
|
39
|
-
servers: z.array(CatalogRecordSchema),
|
|
40
|
+
servers: z.array(CatalogRecordSchema).min(1),
|
|
40
41
|
});
|
|
41
42
|
// ---------------------------------------------------------------------------
|
|
42
43
|
// Provider
|
|
@@ -77,7 +78,35 @@ export class RemoteJsonCatalogProvider {
|
|
|
77
78
|
issues: parsed.error.issues.slice(0, 5),
|
|
78
79
|
});
|
|
79
80
|
}
|
|
80
|
-
|
|
81
|
+
const payload = parsed.data;
|
|
82
|
+
let collapsed = 0;
|
|
83
|
+
const identities = [];
|
|
84
|
+
function unique(records, owner) {
|
|
85
|
+
const byName = new Map();
|
|
86
|
+
for (const record of records) {
|
|
87
|
+
const previous = byName.get(record.name);
|
|
88
|
+
if (!previous) {
|
|
89
|
+
byName.set(record.name, record);
|
|
90
|
+
}
|
|
91
|
+
else if (!isDeepStrictEqual(previous, record)) {
|
|
92
|
+
throw internalError(`Conflicting catalog records for ${owner}/${record.name}.`);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
collapsed++;
|
|
96
|
+
if (identities.length < 10)
|
|
97
|
+
identities.push(`${owner}/${record.name}`.slice(0, 160));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return [...byName.values()];
|
|
101
|
+
}
|
|
102
|
+
const servers = unique(payload.servers.map((server) => ({
|
|
103
|
+
...server,
|
|
104
|
+
tools: unique(server.tools, server.name),
|
|
105
|
+
})), 'servers');
|
|
106
|
+
if (collapsed) {
|
|
107
|
+
logger.warning(`Collapsed ${collapsed} identical catalog records: ${JSON.stringify(identities)}`);
|
|
108
|
+
}
|
|
109
|
+
return { ...payload, servers };
|
|
81
110
|
}
|
|
82
111
|
}
|
|
83
112
|
//# sourceMappingURL=remote-catalog-provider.js.map
|
|
@@ -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,aAAa,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"remote-catalog-provider.js","sourceRoot":"","sources":["../../../src/services/catalog/remote-catalog-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,11 +37,11 @@ function readSelfPackage() {
|
|
|
37
37
|
* `embedding: []` is deliberate and safe. The vector index is built solely from
|
|
38
38
|
* `FleetPayload.servers` in `CatalogService._buildIndex`, which sizes its packed
|
|
39
39
|
* Float32Arrays from that payload and dimension-checks every vector it packs.
|
|
40
|
-
* This record is never a member of that payload — it is consulted only after
|
|
41
|
-
*
|
|
40
|
+
* This record is never a member of that payload — it is consulted only after a
|
|
41
|
+
* remote-name miss in `getServer()` / `getTool()` — so its embedding is never
|
|
42
42
|
* packed, never dot-producted, and never dimension-checked. The tradeoff is that
|
|
43
43
|
* `cyanheads_search_catalog` will not surface this server as a semantic match;
|
|
44
|
-
* only
|
|
44
|
+
* only name resolution (exact or unique case-insensitive) reaches it.
|
|
45
45
|
*/
|
|
46
46
|
function selfTools() {
|
|
47
47
|
return [searchCatalogTool, describeEntryTool].map((definition) => ({
|
|
@@ -16,7 +16,7 @@ export function setCatalogService(service) {
|
|
|
16
16
|
}
|
|
17
17
|
export function getCatalogService() {
|
|
18
18
|
if (!_service) {
|
|
19
|
-
throw serviceUnavailable('CatalogService not initialized — call initCatalogService() in setup()', { reason: 'catalog_empty' });
|
|
19
|
+
throw serviceUnavailable('CatalogService not initialized — call initCatalogService() in setup()', { reason: 'catalog_empty', retryable: true });
|
|
20
20
|
}
|
|
21
21
|
return _service;
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-instance.js","sourceRoot":"","sources":["../../../src/services/catalog/service-instance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,IAAI,QAAqC,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACxD,QAAQ,GAAG,OAAO,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,kBAAkB,CACtB,uEAAuE,EACvE,EAAE,MAAM,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"service-instance.js","sourceRoot":"","sources":["../../../src/services/catalog/service-instance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,IAAI,QAAqC,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,OAAwB;IACxD,QAAQ,GAAG,OAAO,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,kBAAkB,CACtB,uEAAuE,EACvE,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,CAC7C,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,uBAAuB;AACvB,MAAM,UAAU,2BAA2B;IACzC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,QAAQ,GAAG,SAAS,CAAC;AACvB,CAAC"}
|
|
@@ -116,9 +116,9 @@ export interface CatalogSearchResult {
|
|
|
116
116
|
}
|
|
117
117
|
/** Service interface. */
|
|
118
118
|
export interface ICatalogService {
|
|
119
|
-
/**
|
|
119
|
+
/** Exact remote name, then unique case-insensitive remote name, then self fallback. Ambiguous folds return null. */
|
|
120
120
|
getServer(name: string): CatalogRecord | null;
|
|
121
|
-
/**
|
|
121
|
+
/** Exact remote name, then unique case-insensitive remote name, then self fallback. Ambiguous folds return null. */
|
|
122
122
|
getTool(name: string): (CatalogTool & {
|
|
123
123
|
serverRecord: CatalogRecord;
|
|
124
124
|
}) | null;
|
|
@@ -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,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,
|
|
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,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": "0.3",
|
|
3
3
|
"name": "cyanheads-mcp-server",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.3",
|
|
5
5
|
"description": "Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.",
|
|
6
6
|
"author": {
|
|
7
|
-
"name": "
|
|
7
|
+
"name": "cyanheads",
|
|
8
8
|
"email": "casey@caseyjhand.com",
|
|
9
9
|
"url": "https://caseyjhand.com"
|
|
10
10
|
},
|
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.
|
|
4
|
+
"version": "0.4.3",
|
|
5
5
|
"description": "Fleet discovery for the cyanheads MCP ecosystem — semantic search + install snippets.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
"files": [
|
|
13
13
|
"changelog/",
|
|
14
14
|
"dist/",
|
|
15
|
+
"!dist/*.mcpb",
|
|
15
16
|
"README.md",
|
|
16
17
|
"LICENSE",
|
|
17
18
|
"CLAUDE.md",
|
|
@@ -21,6 +22,16 @@
|
|
|
21
22
|
"server.json"
|
|
22
23
|
],
|
|
23
24
|
"author": "Casey Hand <casey@caseyjhand.com> (https://caseyjhand.com)",
|
|
25
|
+
"funding": [
|
|
26
|
+
{
|
|
27
|
+
"type": "github",
|
|
28
|
+
"url": "https://github.com/sponsors/cyanheads"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "buy_me_a_coffee",
|
|
32
|
+
"url": "https://www.buymeacoffee.com/cyanheads"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
24
35
|
"homepage": "https://github.com/cyanheads/cyanheads-mcp-server#readme",
|
|
25
36
|
"bugs": {
|
|
26
37
|
"url": "https://github.com/cyanheads/cyanheads-mcp-server/issues"
|
|
@@ -30,6 +41,7 @@
|
|
|
30
41
|
"rebuild": "bun run scripts/clean.ts && bun run scripts/build.ts",
|
|
31
42
|
"clean": "bun run scripts/clean.ts",
|
|
32
43
|
"devcheck": "bun run scripts/devcheck.ts",
|
|
44
|
+
"audit:fix": "bun audit fix",
|
|
33
45
|
"audit:refresh": "rm -f bun.lock && bun install && bun audit",
|
|
34
46
|
"tree": "bun run scripts/tree.ts",
|
|
35
47
|
"list-skills": "bun run scripts/list-skills.ts",
|
|
@@ -68,30 +80,30 @@
|
|
|
68
80
|
"url": "git+https://github.com/cyanheads/cyanheads-mcp-server.git"
|
|
69
81
|
},
|
|
70
82
|
"license": "Apache-2.0",
|
|
71
|
-
"packageManager": "bun@1.4.
|
|
83
|
+
"packageManager": "bun@1.4.2",
|
|
72
84
|
"engines": {
|
|
73
|
-
"bun": ">=1.
|
|
85
|
+
"bun": ">=1.4.0",
|
|
74
86
|
"node": ">=24.0.0"
|
|
75
87
|
},
|
|
76
88
|
"publishConfig": {
|
|
77
89
|
"access": "public"
|
|
78
90
|
},
|
|
79
91
|
"dependencies": {
|
|
80
|
-
"@cyanheads/mcp-ts-core": "^0.
|
|
81
|
-
"@huggingface/transformers": "4.
|
|
92
|
+
"@cyanheads/mcp-ts-core": "^0.13.10",
|
|
93
|
+
"@huggingface/transformers": "4.3.0",
|
|
82
94
|
"pino-pretty": "^13.1.3",
|
|
83
|
-
"zod": "^4.
|
|
95
|
+
"zod": "^4.6.5"
|
|
84
96
|
},
|
|
85
97
|
"devDependencies": {
|
|
86
|
-
"@biomejs/biome": "^2.5.
|
|
87
|
-
"@socketsecurity/bun-security-scanner": "^1.1.
|
|
88
|
-
"@types/node": "^26.
|
|
89
|
-
"@vitest/coverage-istanbul": "
|
|
98
|
+
"@biomejs/biome": "^2.5.14",
|
|
99
|
+
"@socketsecurity/bun-security-scanner": "^1.1.3",
|
|
100
|
+
"@types/node": "^26.6.3",
|
|
101
|
+
"@vitest/coverage-istanbul": "5.0.2",
|
|
90
102
|
"depcheck": "^1.4.7",
|
|
91
|
-
"fast-check": "4.
|
|
92
|
-
"ignore": "^7.0.
|
|
93
|
-
"tsc-alias": "^1.9.
|
|
103
|
+
"fast-check": "4.10.2",
|
|
104
|
+
"ignore": "^7.0.10",
|
|
105
|
+
"tsc-alias": "^1.9.5",
|
|
94
106
|
"typescript": "^7.0.2",
|
|
95
|
-
"vitest": "^
|
|
107
|
+
"vitest": "^5.0.2"
|
|
96
108
|
}
|
|
97
109
|
}
|
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.4.
|
|
9
|
+
"version": "0.4.3",
|
|
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.4.
|
|
22
|
+
"version": "0.4.3",
|
|
23
23
|
"packageArguments": [
|
|
24
24
|
{ "type": "positional", "value": "run" },
|
|
25
25
|
{ "type": "positional", "value": "start:stdio" }
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
76
76
|
"identifier": "@cyanheads/cyanheads-mcp-server",
|
|
77
77
|
"runtimeHint": "node",
|
|
78
|
-
"version": "0.4.
|
|
78
|
+
"version": "0.4.3",
|
|
79
79
|
"packageArguments": [
|
|
80
80
|
{ "type": "positional", "value": "run" },
|
|
81
81
|
{ "type": "positional", "value": "start:http" }
|