pulsemcp-cms-admin-mcp-server 0.9.1 → 0.9.2
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/build/shared/src/pulsemcp-admin-client/lib/create-mcp-implementation.js +3 -0
- package/build/shared/src/pulsemcp-admin-client/lib/save-mcp-implementation.js +3 -0
- package/build/shared/src/pulsemcp-admin-client/lib/unified-mcp-server-mapper.js +1 -0
- package/build/shared/src/pulsemcp-admin-client/lib/update-unified-mcp-server.js +2 -0
- package/build/shared/src/tools/get-mcp-server.js +3 -0
- package/build/shared/src/tools/save-mcp-implementation.js +12 -0
- package/build/shared/src/tools/update-mcp-server.js +12 -0
- package/package.json +1 -1
- package/shared/pulsemcp-admin-client/lib/create-mcp-implementation.js +3 -0
- package/shared/pulsemcp-admin-client/lib/save-mcp-implementation.js +3 -0
- package/shared/pulsemcp-admin-client/lib/unified-mcp-server-mapper.d.ts +2 -0
- package/shared/pulsemcp-admin-client/lib/unified-mcp-server-mapper.js +1 -0
- package/shared/pulsemcp-admin-client/lib/update-unified-mcp-server.js +2 -0
- package/shared/tools/get-mcp-server.js +3 -0
- package/shared/tools/save-mcp-implementation.d.ts +4 -0
- package/shared/tools/save-mcp-implementation.js +12 -0
- package/shared/tools/update-mcp-server.d.ts +4 -0
- package/shared/tools/update-mcp-server.js +12 -0
- package/shared/types.d.ts +6 -0
|
@@ -64,6 +64,9 @@ export async function createMCPImplementation(apiKey, baseUrl, params) {
|
|
|
64
64
|
if (params.recommended !== undefined) {
|
|
65
65
|
formData.append('mcp_implementation[recommended]', params.recommended.toString());
|
|
66
66
|
}
|
|
67
|
+
if (params.verified_no_remote_canonicals !== undefined) {
|
|
68
|
+
formData.append('mcp_implementation[verified_no_remote_canonicals]', params.verified_no_remote_canonicals.toString());
|
|
69
|
+
}
|
|
67
70
|
// Date overrides
|
|
68
71
|
if (params.created_on_override !== undefined) {
|
|
69
72
|
formData.append('mcp_implementation[created_on_override]', params.created_on_override);
|
|
@@ -74,6 +74,9 @@ export async function saveMCPImplementation(apiKey, baseUrl, id, params) {
|
|
|
74
74
|
if (params.recommended !== undefined) {
|
|
75
75
|
formData.append('mcp_implementation[recommended]', params.recommended.toString());
|
|
76
76
|
}
|
|
77
|
+
if (params.verified_no_remote_canonicals !== undefined) {
|
|
78
|
+
formData.append('mcp_implementation[verified_no_remote_canonicals]', params.verified_no_remote_canonicals.toString());
|
|
79
|
+
}
|
|
77
80
|
// Date overrides
|
|
78
81
|
if (params.created_on_override !== undefined) {
|
|
79
82
|
formData.append('mcp_implementation[created_on_override]', params.created_on_override);
|
|
@@ -47,6 +47,7 @@ export function mapToUnifiedServer(impl) {
|
|
|
47
47
|
package_name: impl.package_name,
|
|
48
48
|
// Flags
|
|
49
49
|
recommended: impl.recommended,
|
|
50
|
+
verified_no_remote_canonicals: mcpServer.verified_no_remote_canonicals,
|
|
50
51
|
// Canonical URLs
|
|
51
52
|
canonical_urls: impl.canonical,
|
|
52
53
|
// Remote endpoints
|
|
@@ -49,6 +49,8 @@ export async function updateUnifiedMCPServer(apiKey, baseUrl, implementationId,
|
|
|
49
49
|
// Flags
|
|
50
50
|
if (params.recommended !== undefined)
|
|
51
51
|
implParams.recommended = params.recommended;
|
|
52
|
+
if (params.verified_no_remote_canonicals !== undefined)
|
|
53
|
+
implParams.verified_no_remote_canonicals = params.verified_no_remote_canonicals;
|
|
52
54
|
// Date overrides
|
|
53
55
|
if (params.created_on_override !== undefined)
|
|
54
56
|
implParams.created_on_override = params.created_on_override;
|
|
@@ -102,6 +102,9 @@ Example response:
|
|
|
102
102
|
if (server.recommended !== undefined) {
|
|
103
103
|
content += `**Recommended:** ${server.recommended ? 'Yes' : 'No'}\n`;
|
|
104
104
|
}
|
|
105
|
+
if (server.verified_no_remote_canonicals !== undefined) {
|
|
106
|
+
content += `**Verified No Remote Canonicals:** ${server.verified_no_remote_canonicals ? 'Yes' : 'No'}\n`;
|
|
107
|
+
}
|
|
105
108
|
if (server.short_description) {
|
|
106
109
|
content += `\n**Short Description:**\n${server.short_description}\n`;
|
|
107
110
|
}
|
|
@@ -27,6 +27,8 @@ const PARAM_DESCRIPTIONS = {
|
|
|
27
27
|
remote: 'Array of remote endpoint configurations for MCP servers. Each remote can have: id (existing remote ID or blank for new), url_direct, url_setup, transport (e.g., "sse"), host_platform (e.g., "smithery"), host_infrastructure (e.g., "cloudflare"), authentication_method (e.g., "open"), cost (e.g., "free"), status (defaults to "live"), display_name, and internal_notes.',
|
|
28
28
|
// Canonical URLs
|
|
29
29
|
canonical: 'Array of canonical URL configurations. Each entry must have: url (the canonical URL), scope (one of "domain", "subdomain", or "url"), and optional note for additional context.',
|
|
30
|
+
// Flags
|
|
31
|
+
verified_no_remote_canonicals: 'Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)',
|
|
30
32
|
// Other fields
|
|
31
33
|
internal_notes: 'Admin-only notes. Not displayed publicly. Used for tracking submission sources, reviewer comments, etc.',
|
|
32
34
|
};
|
|
@@ -88,6 +90,11 @@ const SaveMCPImplementationSchema = z.object({
|
|
|
88
90
|
}))
|
|
89
91
|
.optional()
|
|
90
92
|
.describe(PARAM_DESCRIPTIONS.canonical),
|
|
93
|
+
// Flags
|
|
94
|
+
verified_no_remote_canonicals: z
|
|
95
|
+
.boolean()
|
|
96
|
+
.optional()
|
|
97
|
+
.describe(PARAM_DESCRIPTIONS.verified_no_remote_canonicals),
|
|
91
98
|
// Other fields
|
|
92
99
|
internal_notes: z.string().optional().describe(PARAM_DESCRIPTIONS.internal_notes),
|
|
93
100
|
});
|
|
@@ -301,6 +308,11 @@ Use cases:
|
|
|
301
308
|
},
|
|
302
309
|
description: PARAM_DESCRIPTIONS.canonical,
|
|
303
310
|
},
|
|
311
|
+
// Flags
|
|
312
|
+
verified_no_remote_canonicals: {
|
|
313
|
+
type: 'boolean',
|
|
314
|
+
description: PARAM_DESCRIPTIONS.verified_no_remote_canonicals,
|
|
315
|
+
},
|
|
304
316
|
// Other fields
|
|
305
317
|
internal_notes: {
|
|
306
318
|
type: 'string',
|
|
@@ -16,6 +16,7 @@ const PARAM_DESCRIPTIONS = {
|
|
|
16
16
|
package_registry: 'Package registry: npm, pypi, cargo, etc.',
|
|
17
17
|
package_name: 'Package name on the registry (e.g., "@modelcontextprotocol/server-filesystem")',
|
|
18
18
|
recommended: 'Mark this server as recommended by PulseMCP',
|
|
19
|
+
verified_no_remote_canonicals: 'Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)',
|
|
19
20
|
created_on_override: 'Override the automatically derived created date (ISO date string, e.g., "2025-01-15")',
|
|
20
21
|
tags: 'Tags for the server. Replaces all existing tags when provided. Use tag slugs.',
|
|
21
22
|
canonical_urls: 'Authoritative URLs for the server. Replaces all existing canonical URLs when provided.',
|
|
@@ -82,6 +83,10 @@ const UpdateMCPServerSchema = z.object({
|
|
|
82
83
|
package_registry: z.string().optional().describe(PARAM_DESCRIPTIONS.package_registry),
|
|
83
84
|
package_name: z.string().optional().describe(PARAM_DESCRIPTIONS.package_name),
|
|
84
85
|
recommended: z.boolean().optional().describe(PARAM_DESCRIPTIONS.recommended),
|
|
86
|
+
verified_no_remote_canonicals: z
|
|
87
|
+
.boolean()
|
|
88
|
+
.optional()
|
|
89
|
+
.describe(PARAM_DESCRIPTIONS.verified_no_remote_canonicals),
|
|
85
90
|
created_on_override: z.string().optional().describe(PARAM_DESCRIPTIONS.created_on_override),
|
|
86
91
|
tags: z.array(z.string()).optional().describe(PARAM_DESCRIPTIONS.tags),
|
|
87
92
|
canonical_urls: z
|
|
@@ -220,6 +225,10 @@ Create new provider:
|
|
|
220
225
|
package_registry: { type: 'string', description: PARAM_DESCRIPTIONS.package_registry },
|
|
221
226
|
package_name: { type: 'string', description: PARAM_DESCRIPTIONS.package_name },
|
|
222
227
|
recommended: { type: 'boolean', description: PARAM_DESCRIPTIONS.recommended },
|
|
228
|
+
verified_no_remote_canonicals: {
|
|
229
|
+
type: 'boolean',
|
|
230
|
+
description: PARAM_DESCRIPTIONS.verified_no_remote_canonicals,
|
|
231
|
+
},
|
|
223
232
|
created_on_override: {
|
|
224
233
|
type: 'string',
|
|
225
234
|
description: PARAM_DESCRIPTIONS.created_on_override,
|
|
@@ -318,6 +327,9 @@ Create new provider:
|
|
|
318
327
|
if (server.recommended !== undefined) {
|
|
319
328
|
content += `**Recommended:** ${server.recommended ? 'Yes' : 'No'}\n`;
|
|
320
329
|
}
|
|
330
|
+
if (server.verified_no_remote_canonicals !== undefined) {
|
|
331
|
+
content += `**Verified No Remote Canonicals:** ${server.verified_no_remote_canonicals ? 'Yes' : 'No'}\n`;
|
|
332
|
+
}
|
|
321
333
|
if (server.updated_at) {
|
|
322
334
|
content += `**Updated:** ${server.updated_at}\n`;
|
|
323
335
|
}
|
package/package.json
CHANGED
|
@@ -64,6 +64,9 @@ export async function createMCPImplementation(apiKey, baseUrl, params) {
|
|
|
64
64
|
if (params.recommended !== undefined) {
|
|
65
65
|
formData.append('mcp_implementation[recommended]', params.recommended.toString());
|
|
66
66
|
}
|
|
67
|
+
if (params.verified_no_remote_canonicals !== undefined) {
|
|
68
|
+
formData.append('mcp_implementation[verified_no_remote_canonicals]', params.verified_no_remote_canonicals.toString());
|
|
69
|
+
}
|
|
67
70
|
// Date overrides
|
|
68
71
|
if (params.created_on_override !== undefined) {
|
|
69
72
|
formData.append('mcp_implementation[created_on_override]', params.created_on_override);
|
|
@@ -74,6 +74,9 @@ export async function saveMCPImplementation(apiKey, baseUrl, id, params) {
|
|
|
74
74
|
if (params.recommended !== undefined) {
|
|
75
75
|
formData.append('mcp_implementation[recommended]', params.recommended.toString());
|
|
76
76
|
}
|
|
77
|
+
if (params.verified_no_remote_canonicals !== undefined) {
|
|
78
|
+
formData.append('mcp_implementation[verified_no_remote_canonicals]', params.verified_no_remote_canonicals.toString());
|
|
79
|
+
}
|
|
77
80
|
// Date overrides
|
|
78
81
|
if (params.created_on_override !== undefined) {
|
|
79
82
|
formData.append('mcp_implementation[created_on_override]', params.created_on_override);
|
|
@@ -45,6 +45,8 @@ export interface RailsImplementation {
|
|
|
45
45
|
downloads_estimate_last_30_days?: number;
|
|
46
46
|
downloads_estimate_total?: number;
|
|
47
47
|
mcp_server_remotes_count?: number;
|
|
48
|
+
recommended?: boolean;
|
|
49
|
+
verified_no_remote_canonicals?: boolean;
|
|
48
50
|
tags?: MCPServerTag[];
|
|
49
51
|
remotes?: MCPServerRemote[];
|
|
50
52
|
created_at?: string;
|
|
@@ -47,6 +47,7 @@ export function mapToUnifiedServer(impl) {
|
|
|
47
47
|
package_name: impl.package_name,
|
|
48
48
|
// Flags
|
|
49
49
|
recommended: impl.recommended,
|
|
50
|
+
verified_no_remote_canonicals: mcpServer.verified_no_remote_canonicals,
|
|
50
51
|
// Canonical URLs
|
|
51
52
|
canonical_urls: impl.canonical,
|
|
52
53
|
// Remote endpoints
|
|
@@ -49,6 +49,8 @@ export async function updateUnifiedMCPServer(apiKey, baseUrl, implementationId,
|
|
|
49
49
|
// Flags
|
|
50
50
|
if (params.recommended !== undefined)
|
|
51
51
|
implParams.recommended = params.recommended;
|
|
52
|
+
if (params.verified_no_remote_canonicals !== undefined)
|
|
53
|
+
implParams.verified_no_remote_canonicals = params.verified_no_remote_canonicals;
|
|
52
54
|
// Date overrides
|
|
53
55
|
if (params.created_on_override !== undefined)
|
|
54
56
|
implParams.created_on_override = params.created_on_override;
|
|
@@ -102,6 +102,9 @@ Example response:
|
|
|
102
102
|
if (server.recommended !== undefined) {
|
|
103
103
|
content += `**Recommended:** ${server.recommended ? 'Yes' : 'No'}\n`;
|
|
104
104
|
}
|
|
105
|
+
if (server.verified_no_remote_canonicals !== undefined) {
|
|
106
|
+
content += `**Verified No Remote Canonicals:** ${server.verified_no_remote_canonicals ? 'Yes' : 'No'}\n`;
|
|
107
|
+
}
|
|
105
108
|
if (server.short_description) {
|
|
106
109
|
content += `\n**Short Description:**\n${server.short_description}\n`;
|
|
107
110
|
}
|
|
@@ -151,6 +151,10 @@ export declare function saveMCPImplementation(_server: Server, clientFactory: Cl
|
|
|
151
151
|
};
|
|
152
152
|
description: "Array of canonical URL configurations. Each entry must have: url (the canonical URL), scope (one of \"domain\", \"subdomain\", or \"url\"), and optional note for additional context.";
|
|
153
153
|
};
|
|
154
|
+
verified_no_remote_canonicals: {
|
|
155
|
+
type: string;
|
|
156
|
+
description: "Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)";
|
|
157
|
+
};
|
|
154
158
|
internal_notes: {
|
|
155
159
|
type: string;
|
|
156
160
|
description: "Admin-only notes. Not displayed publicly. Used for tracking submission sources, reviewer comments, etc.";
|
|
@@ -27,6 +27,8 @@ const PARAM_DESCRIPTIONS = {
|
|
|
27
27
|
remote: 'Array of remote endpoint configurations for MCP servers. Each remote can have: id (existing remote ID or blank for new), url_direct, url_setup, transport (e.g., "sse"), host_platform (e.g., "smithery"), host_infrastructure (e.g., "cloudflare"), authentication_method (e.g., "open"), cost (e.g., "free"), status (defaults to "live"), display_name, and internal_notes.',
|
|
28
28
|
// Canonical URLs
|
|
29
29
|
canonical: 'Array of canonical URL configurations. Each entry must have: url (the canonical URL), scope (one of "domain", "subdomain", or "url"), and optional note for additional context.',
|
|
30
|
+
// Flags
|
|
31
|
+
verified_no_remote_canonicals: 'Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)',
|
|
30
32
|
// Other fields
|
|
31
33
|
internal_notes: 'Admin-only notes. Not displayed publicly. Used for tracking submission sources, reviewer comments, etc.',
|
|
32
34
|
};
|
|
@@ -88,6 +90,11 @@ const SaveMCPImplementationSchema = z.object({
|
|
|
88
90
|
}))
|
|
89
91
|
.optional()
|
|
90
92
|
.describe(PARAM_DESCRIPTIONS.canonical),
|
|
93
|
+
// Flags
|
|
94
|
+
verified_no_remote_canonicals: z
|
|
95
|
+
.boolean()
|
|
96
|
+
.optional()
|
|
97
|
+
.describe(PARAM_DESCRIPTIONS.verified_no_remote_canonicals),
|
|
91
98
|
// Other fields
|
|
92
99
|
internal_notes: z.string().optional().describe(PARAM_DESCRIPTIONS.internal_notes),
|
|
93
100
|
});
|
|
@@ -301,6 +308,11 @@ Use cases:
|
|
|
301
308
|
},
|
|
302
309
|
description: PARAM_DESCRIPTIONS.canonical,
|
|
303
310
|
},
|
|
311
|
+
// Flags
|
|
312
|
+
verified_no_remote_canonicals: {
|
|
313
|
+
type: 'boolean',
|
|
314
|
+
description: PARAM_DESCRIPTIONS.verified_no_remote_canonicals,
|
|
315
|
+
},
|
|
304
316
|
// Other fields
|
|
305
317
|
internal_notes: {
|
|
306
318
|
type: 'string',
|
|
@@ -88,6 +88,10 @@ export declare function updateMCPServer(_server: Server, clientFactory: ClientFa
|
|
|
88
88
|
type: string;
|
|
89
89
|
description: "Mark this server as recommended by PulseMCP";
|
|
90
90
|
};
|
|
91
|
+
verified_no_remote_canonicals: {
|
|
92
|
+
type: string;
|
|
93
|
+
description: "Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)";
|
|
94
|
+
};
|
|
91
95
|
created_on_override: {
|
|
92
96
|
type: string;
|
|
93
97
|
description: "Override the automatically derived created date (ISO date string, e.g., \"2025-01-15\")";
|
|
@@ -16,6 +16,7 @@ const PARAM_DESCRIPTIONS = {
|
|
|
16
16
|
package_registry: 'Package registry: npm, pypi, cargo, etc.',
|
|
17
17
|
package_name: 'Package name on the registry (e.g., "@modelcontextprotocol/server-filesystem")',
|
|
18
18
|
recommended: 'Mark this server as recommended by PulseMCP',
|
|
19
|
+
verified_no_remote_canonicals: 'Mark that this server has been verified to have no remote canonical URLs (true = verified no remote canonicals exist, false = reset/canonicals found)',
|
|
19
20
|
created_on_override: 'Override the automatically derived created date (ISO date string, e.g., "2025-01-15")',
|
|
20
21
|
tags: 'Tags for the server. Replaces all existing tags when provided. Use tag slugs.',
|
|
21
22
|
canonical_urls: 'Authoritative URLs for the server. Replaces all existing canonical URLs when provided.',
|
|
@@ -82,6 +83,10 @@ const UpdateMCPServerSchema = z.object({
|
|
|
82
83
|
package_registry: z.string().optional().describe(PARAM_DESCRIPTIONS.package_registry),
|
|
83
84
|
package_name: z.string().optional().describe(PARAM_DESCRIPTIONS.package_name),
|
|
84
85
|
recommended: z.boolean().optional().describe(PARAM_DESCRIPTIONS.recommended),
|
|
86
|
+
verified_no_remote_canonicals: z
|
|
87
|
+
.boolean()
|
|
88
|
+
.optional()
|
|
89
|
+
.describe(PARAM_DESCRIPTIONS.verified_no_remote_canonicals),
|
|
85
90
|
created_on_override: z.string().optional().describe(PARAM_DESCRIPTIONS.created_on_override),
|
|
86
91
|
tags: z.array(z.string()).optional().describe(PARAM_DESCRIPTIONS.tags),
|
|
87
92
|
canonical_urls: z
|
|
@@ -220,6 +225,10 @@ Create new provider:
|
|
|
220
225
|
package_registry: { type: 'string', description: PARAM_DESCRIPTIONS.package_registry },
|
|
221
226
|
package_name: { type: 'string', description: PARAM_DESCRIPTIONS.package_name },
|
|
222
227
|
recommended: { type: 'boolean', description: PARAM_DESCRIPTIONS.recommended },
|
|
228
|
+
verified_no_remote_canonicals: {
|
|
229
|
+
type: 'boolean',
|
|
230
|
+
description: PARAM_DESCRIPTIONS.verified_no_remote_canonicals,
|
|
231
|
+
},
|
|
223
232
|
created_on_override: {
|
|
224
233
|
type: 'string',
|
|
225
234
|
description: PARAM_DESCRIPTIONS.created_on_override,
|
|
@@ -318,6 +327,9 @@ Create new provider:
|
|
|
318
327
|
if (server.recommended !== undefined) {
|
|
319
328
|
content += `**Recommended:** ${server.recommended ? 'Yes' : 'No'}\n`;
|
|
320
329
|
}
|
|
330
|
+
if (server.verified_no_remote_canonicals !== undefined) {
|
|
331
|
+
content += `**Verified No Remote Canonicals:** ${server.verified_no_remote_canonicals ? 'Yes' : 'No'}\n`;
|
|
332
|
+
}
|
|
321
333
|
if (server.updated_at) {
|
|
322
334
|
content += `**Updated:** ${server.updated_at}\n`;
|
|
323
335
|
}
|
package/shared/types.d.ts
CHANGED
|
@@ -124,6 +124,8 @@ export interface MCPServer {
|
|
|
124
124
|
downloads_estimate_last_four_weeks?: number;
|
|
125
125
|
visitors_estimate_total?: number;
|
|
126
126
|
mcp_server_remotes_count?: number;
|
|
127
|
+
recommended?: boolean;
|
|
128
|
+
verified_no_remote_canonicals?: boolean;
|
|
127
129
|
tags?: MCPServerTag[];
|
|
128
130
|
remotes?: MCPServerRemote[];
|
|
129
131
|
}
|
|
@@ -203,6 +205,7 @@ export interface SaveMCPImplementationParams {
|
|
|
203
205
|
package_registry?: string;
|
|
204
206
|
package_name?: string;
|
|
205
207
|
recommended?: boolean;
|
|
208
|
+
verified_no_remote_canonicals?: boolean;
|
|
206
209
|
created_on_override?: string;
|
|
207
210
|
tags?: string[];
|
|
208
211
|
remote?: RemoteEndpointParams[];
|
|
@@ -238,6 +241,7 @@ export interface CreateMCPImplementationParams {
|
|
|
238
241
|
package_registry?: string;
|
|
239
242
|
package_name?: string;
|
|
240
243
|
recommended?: boolean;
|
|
244
|
+
verified_no_remote_canonicals?: boolean;
|
|
241
245
|
created_on_override?: string;
|
|
242
246
|
tags?: string[];
|
|
243
247
|
remote?: RemoteEndpointParams[];
|
|
@@ -515,6 +519,7 @@ export interface UnifiedMCPServer {
|
|
|
515
519
|
package_registry?: string;
|
|
516
520
|
package_name?: string;
|
|
517
521
|
recommended?: boolean;
|
|
522
|
+
verified_no_remote_canonicals?: boolean;
|
|
518
523
|
canonical_urls?: CanonicalUrl[];
|
|
519
524
|
remotes?: RemoteEndpoint[];
|
|
520
525
|
tags?: MCPServerTag[];
|
|
@@ -564,6 +569,7 @@ export interface UpdateUnifiedMCPServerParams {
|
|
|
564
569
|
package_registry?: string;
|
|
565
570
|
package_name?: string;
|
|
566
571
|
recommended?: boolean;
|
|
572
|
+
verified_no_remote_canonicals?: boolean;
|
|
567
573
|
created_on_override?: string;
|
|
568
574
|
tags?: string[];
|
|
569
575
|
canonical_urls?: CanonicalUrl[];
|