@1mcp/agent 0.25.5 → 0.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/auth/sdkOAuthClientProvider.d.ts.map +1 -1
- package/build/auth/sdkOAuthClientProvider.js +3 -5
- package/build/auth/sdkOAuthClientProvider.js.map +1 -1
- package/build/auth/sessionTypes.d.ts +10 -0
- package/build/auth/sessionTypes.d.ts.map +1 -1
- package/build/auth/storage/fileStorageService.d.ts +25 -1
- package/build/auth/storage/fileStorageService.d.ts.map +1 -1
- package/build/auth/storage/fileStorageService.js +155 -27
- package/build/auth/storage/fileStorageService.js.map +1 -1
- package/build/auth/storage/oauthStorageService.js +1 -1
- package/build/auth/storage/oauthStorageService.js.map +1 -1
- package/build/commands/mcp/index.d.ts.map +1 -1
- package/build/commands/mcp/index.js +3 -2
- package/build/commands/mcp/index.js.map +1 -1
- package/build/commands/registry/index.d.ts +6 -0
- package/build/commands/registry/index.d.ts.map +1 -0
- package/build/commands/registry/index.js +67 -0
- package/build/commands/registry/index.js.map +1 -0
- package/build/commands/registry/options.d.ts +47 -0
- package/build/commands/registry/options.d.ts.map +1 -0
- package/build/commands/registry/options.js +39 -0
- package/build/commands/registry/options.js.map +1 -0
- package/build/commands/registry/search.d.ts +21 -0
- package/build/commands/registry/search.d.ts.map +1 -0
- package/build/commands/registry/search.js +186 -0
- package/build/commands/registry/search.js.map +1 -0
- package/build/commands/registry/show.d.ts +25 -0
- package/build/commands/registry/show.d.ts.map +1 -0
- package/build/commands/registry/show.js +87 -0
- package/build/commands/registry/show.js.map +1 -0
- package/build/commands/registry/status.d.ts +16 -0
- package/build/commands/registry/status.d.ts.map +1 -0
- package/build/commands/registry/status.js +86 -0
- package/build/commands/registry/status.js.map +1 -0
- package/build/commands/registry/versions.d.ts +21 -0
- package/build/commands/registry/versions.d.ts.map +1 -0
- package/build/commands/registry/versions.js +76 -0
- package/build/commands/registry/versions.js.map +1 -0
- package/build/constants/auth.d.ts +27 -0
- package/build/constants/auth.d.ts.map +1 -1
- package/build/constants/auth.js +31 -0
- package/build/constants/auth.js.map +1 -1
- package/build/constants/mcp.d.ts +1 -1
- package/build/constants/mcp.js +1 -1
- package/build/core/tools/handlers/registryHandler.d.ts +11 -0
- package/build/core/tools/handlers/registryHandler.d.ts.map +1 -0
- package/build/core/tools/handlers/registryHandler.js +49 -0
- package/build/core/tools/handlers/registryHandler.js.map +1 -0
- package/build/core/tools/handlers/searchHandler.d.ts +19 -0
- package/build/core/tools/handlers/searchHandler.d.ts.map +1 -0
- package/build/core/tools/handlers/searchHandler.js +104 -0
- package/build/core/tools/handlers/searchHandler.js.map +1 -0
- package/build/core/tools/handlers/showHandler.d.ts +10 -0
- package/build/core/tools/handlers/showHandler.d.ts.map +1 -0
- package/build/core/tools/handlers/showHandler.js +44 -0
- package/build/core/tools/handlers/showHandler.js.map +1 -0
- package/build/core/tools/handlers/versionsHandler.d.ts +10 -0
- package/build/core/tools/handlers/versionsHandler.d.ts.map +1 -0
- package/build/core/tools/handlers/versionsHandler.js +44 -0
- package/build/core/tools/handlers/versionsHandler.js.map +1 -0
- package/build/domains/preset/manager/presetManager.d.ts.map +1 -1
- package/build/domains/preset/manager/presetManager.js +2 -2
- package/build/domains/preset/manager/presetManager.js.map +1 -1
- package/build/domains/registry/cacheManager.d.ts +61 -0
- package/build/domains/registry/cacheManager.d.ts.map +1 -0
- package/build/domains/registry/cacheManager.js +158 -0
- package/build/domains/registry/cacheManager.js.map +1 -0
- package/build/domains/registry/formatters/commonFormatters.d.ts +34 -0
- package/build/domains/registry/formatters/commonFormatters.d.ts.map +1 -0
- package/build/domains/registry/formatters/commonFormatters.js +154 -0
- package/build/domains/registry/formatters/commonFormatters.js.map +1 -0
- package/build/domains/registry/formatters/serverDetailFormatter.d.ts +6 -0
- package/build/domains/registry/formatters/serverDetailFormatter.d.ts.map +1 -0
- package/build/domains/registry/formatters/serverDetailFormatter.js +310 -0
- package/build/domains/registry/formatters/serverDetailFormatter.js.map +1 -0
- package/build/domains/registry/formatters/versionsFormatter.d.ts +6 -0
- package/build/domains/registry/formatters/versionsFormatter.d.ts.map +1 -0
- package/build/domains/registry/formatters/versionsFormatter.js +84 -0
- package/build/domains/registry/formatters/versionsFormatter.js.map +1 -0
- package/build/domains/registry/mcpRegistryClient.d.ts +101 -0
- package/build/domains/registry/mcpRegistryClient.d.ts.map +1 -0
- package/build/domains/registry/mcpRegistryClient.js +464 -0
- package/build/domains/registry/mcpRegistryClient.js.map +1 -0
- package/build/domains/registry/mcpToolSchemas.d.ts +63 -0
- package/build/domains/registry/mcpToolSchemas.d.ts.map +1 -0
- package/build/domains/registry/mcpToolSchemas.js +52 -0
- package/build/domains/registry/mcpToolSchemas.js.map +1 -0
- package/build/domains/registry/searchFiltering.d.ts +48 -0
- package/build/domains/registry/searchFiltering.d.ts.map +1 -0
- package/build/domains/registry/searchFiltering.js +201 -0
- package/build/domains/registry/searchFiltering.js.map +1 -0
- package/build/domains/registry/types.d.ts +204 -0
- package/build/domains/registry/types.d.ts.map +1 -0
- package/build/domains/registry/types.js +5 -0
- package/build/domains/registry/types.js.map +1 -0
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/transport/http/restorableStreamableTransport.d.ts +52 -0
- package/build/transport/http/restorableStreamableTransport.d.ts.map +1 -0
- package/build/transport/http/restorableStreamableTransport.js +68 -0
- package/build/transport/http/restorableStreamableTransport.js.map +1 -0
- package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -1
- package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.js +113 -30
- package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
- package/build/transport/http/server.d.ts +2 -0
- package/build/transport/http/server.d.ts.map +1 -1
- package/build/transport/http/server.js +10 -2
- package/build/transport/http/server.js.map +1 -1
- package/build/transport/http/storage/streamableSessionRepository.d.ts +57 -0
- package/build/transport/http/storage/streamableSessionRepository.d.ts.map +1 -0
- package/build/transport/http/storage/streamableSessionRepository.js +156 -0
- package/build/transport/http/storage/streamableSessionRepository.js.map +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// Registry-specific options
|
|
2
|
+
export const registryOptions = {
|
|
3
|
+
url: {
|
|
4
|
+
describe: 'MCP registry base URL (env: ONE_MCP_REGISTRY_URL)',
|
|
5
|
+
type: 'string',
|
|
6
|
+
default: undefined,
|
|
7
|
+
},
|
|
8
|
+
timeout: {
|
|
9
|
+
describe: 'Registry request timeout in milliseconds (env: ONE_MCP_REGISTRY_TIMEOUT)',
|
|
10
|
+
type: 'number',
|
|
11
|
+
default: undefined,
|
|
12
|
+
},
|
|
13
|
+
'cache-ttl': {
|
|
14
|
+
describe: 'Registry cache TTL in seconds (env: ONE_MCP_REGISTRY_CACHE_TTL)',
|
|
15
|
+
type: 'number',
|
|
16
|
+
default: undefined,
|
|
17
|
+
},
|
|
18
|
+
'cache-max-size': {
|
|
19
|
+
describe: 'Registry cache maximum size (env: ONE_MCP_REGISTRY_CACHE_MAX_SIZE)',
|
|
20
|
+
type: 'number',
|
|
21
|
+
default: undefined,
|
|
22
|
+
},
|
|
23
|
+
'cache-cleanup-interval': {
|
|
24
|
+
describe: 'Registry cache cleanup interval in milliseconds (env: ONE_MCP_REGISTRY_CACHE_CLEANUP_INTERVAL)',
|
|
25
|
+
type: 'number',
|
|
26
|
+
default: undefined,
|
|
27
|
+
},
|
|
28
|
+
proxy: {
|
|
29
|
+
describe: 'Registry HTTP proxy URL (env: ONE_MCP_REGISTRY_PROXY)',
|
|
30
|
+
type: 'string',
|
|
31
|
+
default: undefined,
|
|
32
|
+
},
|
|
33
|
+
'proxy-auth': {
|
|
34
|
+
describe: 'Registry proxy authentication (username:password) (env: ONE_MCP_REGISTRY_PROXY_AUTH)',
|
|
35
|
+
type: 'string',
|
|
36
|
+
default: undefined,
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/commands/registry/options.ts"],"names":[],"mappings":"AAUA,4BAA4B;AAC5B,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,GAAG,EAAE;QACH,QAAQ,EAAE,mDAAmD;QAC7D,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,SAAS;KACnB;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,0EAA0E;QACpF,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,SAAS;KACnB;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,iEAAiE;QAC3E,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,SAAS;KACnB;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,oEAAoE;QAC9E,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,SAAS;KACnB;IACD,wBAAwB,EAAE;QACxB,QAAQ,EAAE,gGAAgG;QAC1G,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,SAAS;KACnB;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,uDAAuD;QACjE,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,SAAS;KACnB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,sFAAsF;QAChG,IAAI,EAAE,QAAiB;QACvB,OAAO,EAAE,SAAS;KACnB;CACO,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GlobalOptions } from '../../globalOptions.js';
|
|
2
|
+
import type { Arguments, Argv } from 'yargs';
|
|
3
|
+
import { RegistryYargsOptions } from './options.js';
|
|
4
|
+
export interface SearchCommandArgs extends Arguments, GlobalOptions, RegistryYargsOptions {
|
|
5
|
+
query?: string;
|
|
6
|
+
status?: 'active' | 'archived' | 'deprecated' | 'all';
|
|
7
|
+
type?: 'npm' | 'pypi' | 'docker';
|
|
8
|
+
transport?: 'stdio' | 'sse' | 'webhook';
|
|
9
|
+
limit?: number;
|
|
10
|
+
cursor?: string;
|
|
11
|
+
format?: 'table' | 'list' | 'json';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Build search command with options
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildSearchCommand(searchYargs: Argv): Argv;
|
|
17
|
+
/**
|
|
18
|
+
* Search MCP servers in the registry
|
|
19
|
+
*/
|
|
20
|
+
export declare function searchCommand(argv: SearchCommandArgs): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/registry/search.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,iBAAkB,SAAQ,SAAS,EAAE,aAAa,EAAE,oBAAoB;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,KAAK,CAAC;IACtD,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAgD1D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwD1E"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { cleanupSearchHandler, handleSearchMCPServers, } from '../../core/tools/handlers/searchHandler.js';
|
|
2
|
+
import { formatDate, formatRegistryTypesPlain, formatStatus, formatTransportTypesPlain, truncateString, } from '../../domains/registry/formatters/commonFormatters.js';
|
|
3
|
+
import { OFFICIAL_REGISTRY_KEY } from '../../domains/registry/types.js';
|
|
4
|
+
import logger from '../../logger/logger.js';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
/**
|
|
7
|
+
* Build search command with options
|
|
8
|
+
*/
|
|
9
|
+
export function buildSearchCommand(searchYargs) {
|
|
10
|
+
return searchYargs
|
|
11
|
+
.positional('query', {
|
|
12
|
+
describe: 'Search query to match against server names and descriptions',
|
|
13
|
+
type: 'string',
|
|
14
|
+
})
|
|
15
|
+
.options({
|
|
16
|
+
status: {
|
|
17
|
+
describe: 'Filter by server status',
|
|
18
|
+
type: 'string',
|
|
19
|
+
choices: ['active', 'archived', 'deprecated', 'all'],
|
|
20
|
+
default: 'active',
|
|
21
|
+
},
|
|
22
|
+
type: {
|
|
23
|
+
describe: 'Filter by package registry type',
|
|
24
|
+
type: 'string',
|
|
25
|
+
choices: ['npm', 'pypi', 'docker'],
|
|
26
|
+
},
|
|
27
|
+
transport: {
|
|
28
|
+
describe: 'Filter by transport method',
|
|
29
|
+
type: 'string',
|
|
30
|
+
choices: ['stdio', 'sse', 'webhook'],
|
|
31
|
+
},
|
|
32
|
+
limit: {
|
|
33
|
+
describe: 'Maximum number of results to return',
|
|
34
|
+
type: 'number',
|
|
35
|
+
default: 20,
|
|
36
|
+
},
|
|
37
|
+
cursor: {
|
|
38
|
+
describe: 'Pagination cursor for retrieving next page of results',
|
|
39
|
+
type: 'string',
|
|
40
|
+
},
|
|
41
|
+
format: {
|
|
42
|
+
describe: 'Output format for search results',
|
|
43
|
+
type: 'string',
|
|
44
|
+
choices: ['table', 'list', 'json'],
|
|
45
|
+
default: 'table',
|
|
46
|
+
},
|
|
47
|
+
})
|
|
48
|
+
.example('$0 registry search', 'List all active MCP servers (table format)')
|
|
49
|
+
.example('$0 registry search "file system"', 'Search for file system related servers')
|
|
50
|
+
.example('$0 registry search --format=list', 'Display results in list format with colors')
|
|
51
|
+
.example('$0 registry search --type=npm --transport=stdio', 'Find npm packages with stdio transport')
|
|
52
|
+
.example('$0 registry search database --limit=5 --format=json', 'Search for database servers, limit to 5, output JSON')
|
|
53
|
+
.example('$0 registry search --cursor=next-page-cursor', 'Get next page of results using cursor');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Search MCP servers in the registry
|
|
57
|
+
*/
|
|
58
|
+
export async function searchCommand(argv) {
|
|
59
|
+
try {
|
|
60
|
+
const searchArgs = {
|
|
61
|
+
query: argv.query,
|
|
62
|
+
status: argv.status || 'active',
|
|
63
|
+
registry_type: argv.type,
|
|
64
|
+
transport: argv.transport,
|
|
65
|
+
limit: Math.min(argv.limit || 20, 100),
|
|
66
|
+
cursor: argv.cursor,
|
|
67
|
+
};
|
|
68
|
+
// Extract registry configuration from CLI options
|
|
69
|
+
const registryOptions = {
|
|
70
|
+
url: argv['url'],
|
|
71
|
+
timeout: argv['timeout'],
|
|
72
|
+
cacheTtl: argv['cache-ttl'],
|
|
73
|
+
cacheMaxSize: argv['cache-max-size'],
|
|
74
|
+
cacheCleanupInterval: argv['cache-cleanup-interval'],
|
|
75
|
+
proxy: argv['proxy'],
|
|
76
|
+
proxyAuth: argv['proxy-auth'],
|
|
77
|
+
};
|
|
78
|
+
logger.info('Searching MCP registry...', searchArgs);
|
|
79
|
+
const results = await handleSearchMCPServers(searchArgs, registryOptions);
|
|
80
|
+
// Determine output format
|
|
81
|
+
const outputFormat = argv.format || 'table';
|
|
82
|
+
if (outputFormat === 'json') {
|
|
83
|
+
console.log(JSON.stringify(results, null, 2));
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (results.servers.length === 0) {
|
|
87
|
+
console.log(chalk.yellow('🔍 No MCP servers found matching your criteria.'));
|
|
88
|
+
console.log(chalk.gray(' Try a different search query or remove filters.'));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// Display results based on format
|
|
92
|
+
if (outputFormat === 'table') {
|
|
93
|
+
displayTableFormat(results, searchArgs);
|
|
94
|
+
}
|
|
95
|
+
else if (outputFormat === 'list') {
|
|
96
|
+
displayListFormat(results, searchArgs);
|
|
97
|
+
}
|
|
98
|
+
// Show common footer
|
|
99
|
+
displayFooter(results, searchArgs);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
logger.error('Search command failed:', error);
|
|
103
|
+
console.error(`Error searching MCP registry: ${error instanceof Error ? error.message : String(error)}`);
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
// Cleanup resources to ensure process exits
|
|
108
|
+
cleanupSearchHandler();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Display results in table format
|
|
113
|
+
*/
|
|
114
|
+
function displayTableFormat(results, searchArgs) {
|
|
115
|
+
// Enhanced header with colors
|
|
116
|
+
const resultsCount = results.servers.length;
|
|
117
|
+
const plural = resultsCount === 1 ? '' : 's';
|
|
118
|
+
console.log(chalk.green(`\n✅ Found ${chalk.bold(resultsCount)} MCP server${plural}:`));
|
|
119
|
+
if (searchArgs.query) {
|
|
120
|
+
console.log(chalk.gray(` Query: "${searchArgs.query}"`));
|
|
121
|
+
}
|
|
122
|
+
console.log(); // Empty line for spacing
|
|
123
|
+
// Create table data
|
|
124
|
+
const tableData = results.servers.map((server) => ({
|
|
125
|
+
Name: server.name,
|
|
126
|
+
Description: truncateString(server.description, 45),
|
|
127
|
+
Status: (server._meta?.[OFFICIAL_REGISTRY_KEY]?.status || server.status || 'unknown').toUpperCase(),
|
|
128
|
+
Version: server.version,
|
|
129
|
+
'Server ID': server._meta?.[OFFICIAL_REGISTRY_KEY]?.serverId || server.name,
|
|
130
|
+
'Registry Type': formatRegistryTypesPlain(server.packages),
|
|
131
|
+
Transport: formatTransportTypesPlain(server.packages),
|
|
132
|
+
'Last Updated': formatDate(server._meta?.[OFFICIAL_REGISTRY_KEY]?.updatedAt),
|
|
133
|
+
}));
|
|
134
|
+
console.table(tableData);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Display results in list format
|
|
138
|
+
*/
|
|
139
|
+
function displayListFormat(results, searchArgs) {
|
|
140
|
+
// Enhanced header with colors
|
|
141
|
+
const resultsCount = results.servers.length;
|
|
142
|
+
const plural = resultsCount === 1 ? '' : 's';
|
|
143
|
+
console.log(chalk.green(`\n✅ Found ${chalk.bold(resultsCount)} MCP server${plural}:`));
|
|
144
|
+
if (searchArgs.query) {
|
|
145
|
+
console.log(chalk.gray(` Query: "${searchArgs.query}"`));
|
|
146
|
+
}
|
|
147
|
+
console.log(); // Empty line for spacing
|
|
148
|
+
// Display results in a clean list format
|
|
149
|
+
results.servers.forEach((server, index) => {
|
|
150
|
+
const meta = server._meta[OFFICIAL_REGISTRY_KEY];
|
|
151
|
+
console.log(`${chalk.gray((index + 1).toString().padStart(2))}. ${chalk.cyan.bold(server.name)}`);
|
|
152
|
+
console.log(` ${chalk.white(truncateString(server.description, 70))}`);
|
|
153
|
+
console.log(` ${chalk.green('Status:')} ${formatStatus(server._meta?.[OFFICIAL_REGISTRY_KEY]?.status || server.status || 'unknown')} ${chalk.blue('Version:')} ${server.version}`);
|
|
154
|
+
console.log(` ${chalk.yellow('ID:')} ${chalk.gray(meta?.serverId || server.name)}`);
|
|
155
|
+
console.log(` ${chalk.magenta('Transport:')} ${formatTransportTypesPlain(server.packages)} • ${chalk.red('Type:')} ${formatRegistryTypesPlain(server.packages)}`);
|
|
156
|
+
console.log(` ${chalk.gray('Updated:')} ${formatDate(meta?.updatedAt)}`);
|
|
157
|
+
console.log(); // Empty line between entries
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Display common footer information
|
|
162
|
+
*/
|
|
163
|
+
function displayFooter(results, searchArgs) {
|
|
164
|
+
const resultsCount = results.servers.length;
|
|
165
|
+
// Enhanced usage instructions with colors
|
|
166
|
+
console.log(chalk.cyan.bold('\n💡 Next Steps:'));
|
|
167
|
+
console.log(chalk.white(' • View detailed information: ') + chalk.yellow('1mcp registry show <server-id>'));
|
|
168
|
+
console.log(chalk.white(' • List all versions: ') + chalk.yellow('1mcp registry versions <server-id>'));
|
|
169
|
+
console.log(chalk.white(' • Get full Server IDs: ') + chalk.yellow('1mcp registry search --json'));
|
|
170
|
+
// Show search tips if results are limited
|
|
171
|
+
if (resultsCount >= 20) {
|
|
172
|
+
console.log(chalk.cyan.bold('\n🔍 Search Tips:'));
|
|
173
|
+
console.log(chalk.gray(' • Use specific keywords to narrow results'));
|
|
174
|
+
console.log(chalk.gray(' • Filter by --status, --type, or --transport'));
|
|
175
|
+
console.log(chalk.gray(' • Use --cursor for pagination'));
|
|
176
|
+
}
|
|
177
|
+
// Show pagination info if applicable
|
|
178
|
+
if (results.next_cursor) {
|
|
179
|
+
console.log(chalk.cyan.bold('\n📄 Pagination:'));
|
|
180
|
+
console.log(chalk.gray(' • Next page: ') + chalk.yellow(`1mcp registry search --cursor=${results.next_cursor}`));
|
|
181
|
+
}
|
|
182
|
+
if (searchArgs.limit && results.servers.length === searchArgs.limit) {
|
|
183
|
+
console.log(`Showing ${searchArgs.limit} results. Use --cursor for pagination.`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/registry/search.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GAEvB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,UAAU,EACV,wBAAwB,EACxB,YAAY,EACZ,yBAAyB,EACzB,cAAc,GACf,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,qBAAqB,EAAmB,MAAM,gCAAgC,CAAC;AAExF,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAE3C,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAiB;IAClD,OAAO,WAAW;SACf,UAAU,CAAC,OAAO,EAAE;QACnB,QAAQ,EAAE,6DAA6D;QACvE,IAAI,EAAE,QAAQ;KACf,CAAC;SACD,OAAO,CAAC;QACP,MAAM,EAAE;YACN,QAAQ,EAAE,yBAAyB;YACnC,IAAI,EAAE,QAAiB;YACvB,OAAO,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,CAAU;YAC7D,OAAO,EAAE,QAAiB;SAC3B;QACD,IAAI,EAAE;YACJ,QAAQ,EAAE,iCAAiC;YAC3C,IAAI,EAAE,QAAiB;YACvB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAU;SAC5C;QACD,SAAS,EAAE;YACT,QAAQ,EAAE,4BAA4B;YACtC,IAAI,EAAE,QAAiB;YACvB,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAU;SAC9C;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,qCAAqC;YAC/C,IAAI,EAAE,QAAiB;YACvB,OAAO,EAAE,EAAE;SACZ;QACD,MAAM,EAAE;YACN,QAAQ,EAAE,uDAAuD;YACjE,IAAI,EAAE,QAAiB;SACxB;QACD,MAAM,EAAE;YACN,QAAQ,EAAE,kCAAkC;YAC5C,IAAI,EAAE,QAAiB;YACvB,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAU;YAC3C,OAAO,EAAE,OAAgB;SAC1B;KACF,CAAC;SACD,OAAO,CAAC,oBAAoB,EAAE,4CAA4C,CAAC;SAC3E,OAAO,CAAC,kCAAkC,EAAE,wCAAwC,CAAC;SACrF,OAAO,CAAC,kCAAkC,EAAE,4CAA4C,CAAC;SACzF,OAAO,CAAC,iDAAiD,EAAE,wCAAwC,CAAC;SACpG,OAAO,CACN,qDAAqD,EACrD,sDAAsD,CACvD;SACA,OAAO,CAAC,8CAA8C,EAAE,uCAAuC,CAAC,CAAC;AACtG,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAuB;IACzD,IAAI,CAAC;QACH,MAAM,UAAU,GAAyB;YACvC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,QAAQ;YAC/B,aAAa,EAAE,IAAI,CAAC,IAAI;YACxB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC;YACtC,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;QAEF,kDAAkD;QAClD,MAAM,eAAe,GAAoB;YACvC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC;YAChB,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;YACxB,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;YAC3B,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC;YACpC,oBAAoB,EAAE,IAAI,CAAC,wBAAwB,CAAC;YACpD,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;YACpB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC;SAC9B,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAE1E,0BAA0B;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC;QAE5C,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAC9E,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;YAC7B,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;YACnC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACzC,CAAC;QAED,qBAAqB;QACrB,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,4CAA4C;QAC5C,oBAAoB,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAA+B,EAAE,UAAgC;IAC3F,8BAA8B;IAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5C,MAAM,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,MAAM,GAAG,CAAC,CAAC,CAAC;IAEvF,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,yBAAyB;IAExC,oBAAoB;IACpB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QACnD,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,qBAAqB,CAAC,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC,WAAW,EAAE;QACnG,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,qBAAqB,CAAC,EAAE,QAAQ,IAAI,MAAM,CAAC,IAAI;QAC3E,eAAe,EAAE,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC1D,SAAS,EAAE,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC;QACrD,cAAc,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,qBAAqB,CAAC,EAAE,SAAS,CAAC;KAC7E,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,OAA+B,EAAE,UAAgC;IAC1F,8BAA8B;IAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;IAC5C,MAAM,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,MAAM,GAAG,CAAC,CAAC,CAAC;IAEvF,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,yBAAyB;IAExC,yCAAyC;IACzC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClG,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CACT,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,qBAAqB,CAAC,EAAE,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAC1K,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CACT,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,yBAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CACxJ,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,6BAA6B;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,OAA+B,EAAE,UAAgC;IACtF,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;IAE5C,0CAA0C;IAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAC9G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;IAC1G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAErG,0CAA0C;IAC1C,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED,qCAAqC;IACrC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,iCAAiC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACrH,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,KAAK,EAAE,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,CAAC,KAAK,wCAAwC,CAAC,CAAC;IACnF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { OutputFormat } from '../../domains/registry/types.js';
|
|
2
|
+
import { GlobalOptions } from '../../globalOptions.js';
|
|
3
|
+
import type { Arguments, Argv } from 'yargs';
|
|
4
|
+
import { RegistryYargsOptions } from './options.js';
|
|
5
|
+
export interface ShowCommandCliArgs extends Arguments, GlobalOptions, RegistryYargsOptions {
|
|
6
|
+
serverId: string;
|
|
7
|
+
ver?: string;
|
|
8
|
+
v?: string;
|
|
9
|
+
format?: OutputFormat;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Build the show command configuration
|
|
13
|
+
*/
|
|
14
|
+
export declare function buildShowCommand(yargs: Argv): Argv<{
|
|
15
|
+
"server-id": string;
|
|
16
|
+
} & {
|
|
17
|
+
ver: string | undefined;
|
|
18
|
+
} & {
|
|
19
|
+
format: string;
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* Show detailed information about a specific MCP server
|
|
23
|
+
*/
|
|
24
|
+
export declare function showCommand(argv: ShowCommandCliArgs): Promise<void>;
|
|
25
|
+
//# sourceMappingURL=show.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/registry/show.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAoC,MAAM,gCAAgC,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,kBAAmB,SAAQ,SAAS,EAAE,aAAa,EAAE,oBAAoB;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI;;;;;;GA0B3C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsDzE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { cleanupShowHandler, handleShowMCPServer } from '../../core/tools/handlers/showHandler.js';
|
|
2
|
+
import { formatServerDetails } from '../../domains/registry/formatters/serverDetailFormatter.js';
|
|
3
|
+
import logger from '../../logger/logger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Build the show command configuration
|
|
6
|
+
*/
|
|
7
|
+
export function buildShowCommand(yargs) {
|
|
8
|
+
return yargs
|
|
9
|
+
.positional('server-id', {
|
|
10
|
+
describe: 'MCP server identifier (e.g., io.github.containers/kubernetes-mcp-server)',
|
|
11
|
+
type: 'string',
|
|
12
|
+
demandOption: true,
|
|
13
|
+
})
|
|
14
|
+
.option('ver', {
|
|
15
|
+
describe: 'Show specific version of the server',
|
|
16
|
+
type: 'string',
|
|
17
|
+
alias: 'v',
|
|
18
|
+
})
|
|
19
|
+
.option('format', {
|
|
20
|
+
describe: 'Output format',
|
|
21
|
+
type: 'string',
|
|
22
|
+
choices: ['table', 'json', 'detailed'],
|
|
23
|
+
default: 'detailed',
|
|
24
|
+
})
|
|
25
|
+
.example('$0 registry show bcee55b5-2316-4f92-8b66-db907496714b', 'Show server details (detailed format by default)')
|
|
26
|
+
.example('$0 registry show bcee55b5-2316-4f92-8b66-db907496714b --ver 1.0.0', 'Show specific version')
|
|
27
|
+
.example('$0 registry show bcee55b5-2316-4f92-8b66-db907496714b -v 1.0.0', 'Show specific version (short alias)')
|
|
28
|
+
.example('$0 registry show bcee55b5-2316-4f92-8b66-db907496714b --format table', 'Show in compact table format')
|
|
29
|
+
.example('$0 registry show bcee55b5-2316-4f92-8b66-db907496714b --format json', 'Output JSON for scripting');
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Show detailed information about a specific MCP server
|
|
33
|
+
*/
|
|
34
|
+
export async function showCommand(argv) {
|
|
35
|
+
try {
|
|
36
|
+
const showArgs = {
|
|
37
|
+
serverId: argv.serverId,
|
|
38
|
+
version: argv.ver || argv.v,
|
|
39
|
+
format: argv.format || 'detailed',
|
|
40
|
+
};
|
|
41
|
+
// Extract registry configuration from CLI options
|
|
42
|
+
const registryOptions = {
|
|
43
|
+
url: argv['url'],
|
|
44
|
+
timeout: argv['timeout'],
|
|
45
|
+
cacheTtl: argv['cache-ttl'],
|
|
46
|
+
cacheMaxSize: argv['cache-max-size'],
|
|
47
|
+
cacheCleanupInterval: argv['cache-cleanup-interval'],
|
|
48
|
+
proxy: argv['proxy'],
|
|
49
|
+
proxyAuth: argv['proxy-auth'],
|
|
50
|
+
};
|
|
51
|
+
logger.info(`Fetching MCP server details: ${showArgs.serverId}${showArgs.version ? ` (v${showArgs.version})` : ''}`);
|
|
52
|
+
const server = await handleShowMCPServer(showArgs, registryOptions);
|
|
53
|
+
// Format and display the server details
|
|
54
|
+
const output = formatServerDetails(server, showArgs.format);
|
|
55
|
+
if (showArgs.format === 'json') {
|
|
56
|
+
console.log(output);
|
|
57
|
+
}
|
|
58
|
+
else if (showArgs.format === 'detailed') {
|
|
59
|
+
console.log(output);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
// For table format, the formatServerDetails handles console.table calls internally
|
|
63
|
+
// Just ensure we have proper spacing
|
|
64
|
+
console.log(output);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
logger.error('Show command failed:', error);
|
|
69
|
+
// Check if it's a 404 error and provide helpful message
|
|
70
|
+
if (error instanceof Error && error.message.includes('404')) {
|
|
71
|
+
console.error(`❌ Server not found: ${argv.serverId}`);
|
|
72
|
+
console.error(' Make sure the server ID is correct and the server exists in the registry.');
|
|
73
|
+
if (argv.version) {
|
|
74
|
+
console.error(` Also check if version "${argv.version}" exists for this server.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
console.error(`❌ Error fetching MCP server details: ${error instanceof Error ? error.message : String(error)}`);
|
|
79
|
+
}
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
// Cleanup resources to ensure process exits
|
|
84
|
+
cleanupShowHandler();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/registry/show.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { GlobalOptions } from '../../globalOptions.js';
|
|
2
|
+
import type { Arguments, Argv } from 'yargs';
|
|
3
|
+
import { RegistryYargsOptions } from './options.js';
|
|
4
|
+
export interface RegistryStatusCommandArgs extends Arguments, GlobalOptions, RegistryYargsOptions {
|
|
5
|
+
stats?: boolean;
|
|
6
|
+
json?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Build status command with options
|
|
10
|
+
*/
|
|
11
|
+
export declare function buildStatusCommand(statusYargs: Argv): Argv;
|
|
12
|
+
/**
|
|
13
|
+
* Get MCP registry status and statistics
|
|
14
|
+
*/
|
|
15
|
+
export declare function registryStatusCommand(argv: RegistryStatusCommandArgs): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/registry/status.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,yBAA0B,SAAQ,SAAS,EAAE,aAAa,EAAE,oBAAoB;IAC/F,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAiB1D;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE1F"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { cleanupRegistryHandler, handleGetRegistryStatus } from '../../core/tools/handlers/registryHandler.js';
|
|
2
|
+
import { formatTimestamp } from '../../domains/registry/formatters/commonFormatters.js';
|
|
3
|
+
import logger from '../../logger/logger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Build status command with options
|
|
6
|
+
*/
|
|
7
|
+
export function buildStatusCommand(statusYargs) {
|
|
8
|
+
return statusYargs
|
|
9
|
+
.options({
|
|
10
|
+
stats: {
|
|
11
|
+
describe: 'Include detailed server count statistics',
|
|
12
|
+
type: 'boolean',
|
|
13
|
+
default: false,
|
|
14
|
+
},
|
|
15
|
+
json: {
|
|
16
|
+
describe: 'Output results in JSON format',
|
|
17
|
+
type: 'boolean',
|
|
18
|
+
default: false,
|
|
19
|
+
},
|
|
20
|
+
})
|
|
21
|
+
.example('$0 registry status', 'Check registry availability')
|
|
22
|
+
.example('$0 registry status --stats', 'Show registry status with statistics')
|
|
23
|
+
.example('$0 registry status --stats --json', 'Output detailed status in JSON format');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get MCP registry status and statistics
|
|
27
|
+
*/
|
|
28
|
+
export async function registryStatusCommand(argv) {
|
|
29
|
+
try {
|
|
30
|
+
const statusArgs = {
|
|
31
|
+
include_stats: argv.stats || false,
|
|
32
|
+
};
|
|
33
|
+
// Extract registry configuration from CLI options
|
|
34
|
+
const registryOptions = {
|
|
35
|
+
url: argv['url'],
|
|
36
|
+
timeout: argv['timeout'],
|
|
37
|
+
cacheTtl: argv['cache-ttl'],
|
|
38
|
+
cacheMaxSize: argv['cache-max-size'],
|
|
39
|
+
cacheCleanupInterval: argv['cache-cleanup-interval'],
|
|
40
|
+
proxy: argv['proxy'],
|
|
41
|
+
proxyAuth: argv['proxy-auth'],
|
|
42
|
+
};
|
|
43
|
+
logger.info('Getting MCP registry status...');
|
|
44
|
+
const result = await handleGetRegistryStatus(statusArgs, registryOptions);
|
|
45
|
+
if (argv.json) {
|
|
46
|
+
console.log(JSON.stringify(result, null, 2));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Format status display
|
|
50
|
+
console.log('\n📊 MCP Registry Status\n');
|
|
51
|
+
const statusIcon = result.available ? '✅' : '❌';
|
|
52
|
+
const statusText = result.available ? 'Available' : 'Unavailable';
|
|
53
|
+
console.log(`Status: ${statusIcon} ${statusText}`);
|
|
54
|
+
console.log(`URL: ${result.url}`);
|
|
55
|
+
console.log(`Response Time: ${result.response_time_ms}ms`);
|
|
56
|
+
console.log(`Last Checked: ${formatTimestamp(result.last_updated)}`);
|
|
57
|
+
if (result.stats) {
|
|
58
|
+
console.log('\n📈 Registry Statistics\n');
|
|
59
|
+
console.log(`Total Servers: ${result.stats.total_servers}`);
|
|
60
|
+
console.log(`Active Servers: ${result.stats.active_servers}`);
|
|
61
|
+
console.log(`Deprecated Servers: ${result.stats.deprecated_servers}`);
|
|
62
|
+
if (Object.keys(result.stats.by_registry_type).length > 0) {
|
|
63
|
+
console.log('\nBy Registry Type:');
|
|
64
|
+
Object.entries(result.stats.by_registry_type).forEach(([type, count]) => {
|
|
65
|
+
console.log(` ${type}: ${count}`);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (Object.keys(result.stats.by_transport).length > 0) {
|
|
69
|
+
console.log('\nBy Transport:');
|
|
70
|
+
Object.entries(result.stats.by_transport).forEach(([transport, count]) => {
|
|
71
|
+
console.log(` ${transport}: ${count}`);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
logger.error('Registry status command failed:', error);
|
|
78
|
+
console.error(`Error getting registry status: ${error instanceof Error ? error.message : String(error)}`);
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
// Cleanup resources to ensure process exits
|
|
83
|
+
cleanupRegistryHandler();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/registry/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { OutputFormat } from '../../domains/registry/types.js';
|
|
2
|
+
import { GlobalOptions } from '../../globalOptions.js';
|
|
3
|
+
import type { Arguments, Argv } from 'yargs';
|
|
4
|
+
import { RegistryYargsOptions } from './options.js';
|
|
5
|
+
export interface VersionsCommandCliArgs extends Arguments, GlobalOptions, RegistryYargsOptions {
|
|
6
|
+
serverId: string;
|
|
7
|
+
format?: OutputFormat;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Build the versions command configuration
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildVersionsCommand(yargs: Argv): Argv<{
|
|
13
|
+
"server-id": string;
|
|
14
|
+
} & {
|
|
15
|
+
format: string;
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* List all versions for a specific MCP server
|
|
19
|
+
*/
|
|
20
|
+
export declare function versionsCommand(argv: VersionsCommandCliArgs): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=versions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../../src/commands/registry/versions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAwC,MAAM,gCAAgC,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGtD,OAAO,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,WAAW,sBAAuB,SAAQ,SAAS,EAAE,aAAa,EAAE,oBAAoB;IAC5F,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI;;;;GAsB/C;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDjF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { cleanupVersionsHandler, handleListMCPServerVersions } from '../../core/tools/handlers/versionsHandler.js';
|
|
2
|
+
import { formatServerVersions } from '../../domains/registry/formatters/versionsFormatter.js';
|
|
3
|
+
import logger from '../../logger/logger.js';
|
|
4
|
+
/**
|
|
5
|
+
* Build the versions command configuration
|
|
6
|
+
*/
|
|
7
|
+
export function buildVersionsCommand(yargs) {
|
|
8
|
+
return yargs
|
|
9
|
+
.positional('server-id', {
|
|
10
|
+
describe: 'MCP server identifier (e.g., io.github.containers/kubernetes-mcp-server)',
|
|
11
|
+
type: 'string',
|
|
12
|
+
demandOption: true,
|
|
13
|
+
})
|
|
14
|
+
.option('format', {
|
|
15
|
+
describe: 'Output format',
|
|
16
|
+
type: 'string',
|
|
17
|
+
choices: ['table', 'json', 'detailed'],
|
|
18
|
+
default: 'table',
|
|
19
|
+
})
|
|
20
|
+
.example('$0 registry versions io.github.containers/kubernetes-mcp-server', 'List all versions in table format')
|
|
21
|
+
.example('$0 registry versions io.github.containers/kubernetes-mcp-server --format detailed', 'Show enhanced version details')
|
|
22
|
+
.example('$0 registry versions io.github.containers/kubernetes-mcp-server --format json', 'Output JSON for automation');
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* List all versions for a specific MCP server
|
|
26
|
+
*/
|
|
27
|
+
export async function versionsCommand(argv) {
|
|
28
|
+
try {
|
|
29
|
+
const versionsArgs = {
|
|
30
|
+
serverId: argv.serverId,
|
|
31
|
+
format: argv.format || 'table',
|
|
32
|
+
};
|
|
33
|
+
// Extract registry configuration from CLI options
|
|
34
|
+
const registryOptions = {
|
|
35
|
+
url: argv['url'],
|
|
36
|
+
timeout: argv['timeout'],
|
|
37
|
+
cacheTtl: argv['cache-ttl'],
|
|
38
|
+
cacheMaxSize: argv['cache-max-size'],
|
|
39
|
+
cacheCleanupInterval: argv['cache-cleanup-interval'],
|
|
40
|
+
proxy: argv['proxy'],
|
|
41
|
+
proxyAuth: argv['proxy-auth'],
|
|
42
|
+
};
|
|
43
|
+
logger.info(`Fetching versions for MCP server: ${versionsArgs.serverId}`);
|
|
44
|
+
const versionsResponse = await handleListMCPServerVersions(versionsArgs, registryOptions);
|
|
45
|
+
// Format and display the versions
|
|
46
|
+
const output = formatServerVersions(versionsResponse, versionsArgs.format);
|
|
47
|
+
if (versionsArgs.format === 'json') {
|
|
48
|
+
console.log(output);
|
|
49
|
+
}
|
|
50
|
+
else if (versionsArgs.format === 'detailed') {
|
|
51
|
+
console.log(output);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
// For table format, the formatServerVersions handles console.table calls internally
|
|
55
|
+
console.log(output);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
logger.error('Versions command failed:', error);
|
|
60
|
+
// Check if it's a 404 error and provide helpful message
|
|
61
|
+
if (error instanceof Error && error.message.includes('404')) {
|
|
62
|
+
console.error(`❌ Server not found: ${argv.serverId}`);
|
|
63
|
+
console.error(' Make sure the server ID is correct and the server exists in the registry.');
|
|
64
|
+
console.error(' Use "registry search" to find available servers.');
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
console.error(`❌ Error fetching MCP server versions: ${error instanceof Error ? error.message : String(error)}`);
|
|
68
|
+
}
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
// Cleanup resources to ensure process exits
|
|
73
|
+
cleanupVersionsHandler();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/commands/registry/versions.ts"],"names":[],"mappings":"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"}
|