@daniel.stefan/metalink 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +160 -0
- package/package.json +96 -0
- package/packages/cli/dist/bin/cli.d.ts +3 -0
- package/packages/cli/dist/bin/cli.d.ts.map +1 -0
- package/packages/cli/dist/bin/cli.js +4 -0
- package/packages/cli/dist/bin/cli.js.map +1 -0
- package/packages/cli/dist/commands/config/init.d.ts +9 -0
- package/packages/cli/dist/commands/config/init.d.ts.map +1 -0
- package/packages/cli/dist/commands/config/init.js +38 -0
- package/packages/cli/dist/commands/config/init.js.map +1 -0
- package/packages/cli/dist/commands/config/validate.d.ts +9 -0
- package/packages/cli/dist/commands/config/validate.d.ts.map +1 -0
- package/packages/cli/dist/commands/config/validate.js +34 -0
- package/packages/cli/dist/commands/config/validate.js.map +1 -0
- package/packages/cli/dist/commands/daemon/restart.d.ts +15 -0
- package/packages/cli/dist/commands/daemon/restart.d.ts.map +1 -0
- package/packages/cli/dist/commands/daemon/restart.js +184 -0
- package/packages/cli/dist/commands/daemon/restart.js.map +1 -0
- package/packages/cli/dist/commands/daemon/start.d.ts +7 -0
- package/packages/cli/dist/commands/daemon/start.d.ts.map +1 -0
- package/packages/cli/dist/commands/daemon/start.js +85 -0
- package/packages/cli/dist/commands/daemon/start.js.map +1 -0
- package/packages/cli/dist/commands/daemon/status.d.ts +7 -0
- package/packages/cli/dist/commands/daemon/status.d.ts.map +1 -0
- package/packages/cli/dist/commands/daemon/status.js +69 -0
- package/packages/cli/dist/commands/daemon/status.js.map +1 -0
- package/packages/cli/dist/commands/daemon/stop.d.ts +8 -0
- package/packages/cli/dist/commands/daemon/stop.d.ts.map +1 -0
- package/packages/cli/dist/commands/daemon/stop.js +77 -0
- package/packages/cli/dist/commands/daemon/stop.js.map +1 -0
- package/packages/cli/dist/commands/import/mcpm.d.ts +10 -0
- package/packages/cli/dist/commands/import/mcpm.d.ts.map +1 -0
- package/packages/cli/dist/commands/import/mcpm.js +58 -0
- package/packages/cli/dist/commands/import/mcpm.js.map +1 -0
- package/packages/cli/dist/commands/safety/add-risky-pattern.d.ts +16 -0
- package/packages/cli/dist/commands/safety/add-risky-pattern.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/add-risky-pattern.js +72 -0
- package/packages/cli/dist/commands/safety/add-risky-pattern.js.map +1 -0
- package/packages/cli/dist/commands/safety/add-risky.d.ts +12 -0
- package/packages/cli/dist/commands/safety/add-risky.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/add-risky.js +52 -0
- package/packages/cli/dist/commands/safety/add-risky.js.map +1 -0
- package/packages/cli/dist/commands/safety/add-safe-pattern.d.ts +16 -0
- package/packages/cli/dist/commands/safety/add-safe-pattern.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/add-safe-pattern.js +72 -0
- package/packages/cli/dist/commands/safety/add-safe-pattern.js.map +1 -0
- package/packages/cli/dist/commands/safety/add-safe.d.ts +12 -0
- package/packages/cli/dist/commands/safety/add-safe.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/add-safe.js +52 -0
- package/packages/cli/dist/commands/safety/add-safe.js.map +1 -0
- package/packages/cli/dist/commands/safety/check.d.ts +9 -0
- package/packages/cli/dist/commands/safety/check.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/check.js +36 -0
- package/packages/cli/dist/commands/safety/check.js.map +1 -0
- package/packages/cli/dist/commands/safety/export.d.ts +10 -0
- package/packages/cli/dist/commands/safety/export.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/export.js +48 -0
- package/packages/cli/dist/commands/safety/export.js.map +1 -0
- package/packages/cli/dist/commands/safety/import.d.ts +12 -0
- package/packages/cli/dist/commands/safety/import.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/import.js +78 -0
- package/packages/cli/dist/commands/safety/import.js.map +1 -0
- package/packages/cli/dist/commands/safety/index.d.ts +8 -0
- package/packages/cli/dist/commands/safety/index.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/index.js +46 -0
- package/packages/cli/dist/commands/safety/index.js.map +1 -0
- package/packages/cli/dist/commands/safety/list.d.ts +6 -0
- package/packages/cli/dist/commands/safety/list.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/list.js +77 -0
- package/packages/cli/dist/commands/safety/list.js.map +1 -0
- package/packages/cli/dist/commands/safety/remove.d.ts +9 -0
- package/packages/cli/dist/commands/safety/remove.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/remove.js +46 -0
- package/packages/cli/dist/commands/safety/remove.js.map +1 -0
- package/packages/cli/dist/commands/safety/reset.d.ts +9 -0
- package/packages/cli/dist/commands/safety/reset.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/reset.js +46 -0
- package/packages/cli/dist/commands/safety/reset.js.map +1 -0
- package/packages/cli/dist/commands/safety/validate.d.ts +9 -0
- package/packages/cli/dist/commands/safety/validate.d.ts.map +1 -0
- package/packages/cli/dist/commands/safety/validate.js +51 -0
- package/packages/cli/dist/commands/safety/validate.js.map +1 -0
- package/packages/cli/dist/commands/secret/get.d.ts +9 -0
- package/packages/cli/dist/commands/secret/get.d.ts.map +1 -0
- package/packages/cli/dist/commands/secret/get.js +26 -0
- package/packages/cli/dist/commands/secret/get.js.map +1 -0
- package/packages/cli/dist/commands/secret/set.d.ts +10 -0
- package/packages/cli/dist/commands/secret/set.d.ts.map +1 -0
- package/packages/cli/dist/commands/secret/set.js +22 -0
- package/packages/cli/dist/commands/secret/set.js.map +1 -0
- package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.d.ts +2 -0
- package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.js +234 -0
- package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.js.map +1 -0
- package/packages/cli/dist/commands/server/add.d.ts +14 -0
- package/packages/cli/dist/commands/server/add.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/add.js +86 -0
- package/packages/cli/dist/commands/server/add.js.map +1 -0
- package/packages/cli/dist/commands/server/available.d.ts +10 -0
- package/packages/cli/dist/commands/server/available.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/available.js +62 -0
- package/packages/cli/dist/commands/server/available.js.map +1 -0
- package/packages/cli/dist/commands/server/debug.d.ts +18 -0
- package/packages/cli/dist/commands/server/debug.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/debug.js +165 -0
- package/packages/cli/dist/commands/server/debug.js.map +1 -0
- package/packages/cli/dist/commands/server/info.d.ts +13 -0
- package/packages/cli/dist/commands/server/info.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/info.js +62 -0
- package/packages/cli/dist/commands/server/info.js.map +1 -0
- package/packages/cli/dist/commands/server/list.d.ts +10 -0
- package/packages/cli/dist/commands/server/list.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/list.js +105 -0
- package/packages/cli/dist/commands/server/list.js.map +1 -0
- package/packages/cli/dist/commands/server/refresh-tools.d.ts +13 -0
- package/packages/cli/dist/commands/server/refresh-tools.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/refresh-tools.js +46 -0
- package/packages/cli/dist/commands/server/refresh-tools.js.map +1 -0
- package/packages/cli/dist/commands/server/remove.d.ts +12 -0
- package/packages/cli/dist/commands/server/remove.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/remove.js +39 -0
- package/packages/cli/dist/commands/server/remove.js.map +1 -0
- package/packages/cli/dist/commands/server/restart.d.ts +9 -0
- package/packages/cli/dist/commands/server/restart.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/restart.js +30 -0
- package/packages/cli/dist/commands/server/restart.js.map +1 -0
- package/packages/cli/dist/commands/server/start.d.ts +9 -0
- package/packages/cli/dist/commands/server/start.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/start.js +37 -0
- package/packages/cli/dist/commands/server/start.js.map +1 -0
- package/packages/cli/dist/commands/server/status.d.ts +9 -0
- package/packages/cli/dist/commands/server/status.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/status.js +30 -0
- package/packages/cli/dist/commands/server/status.js.map +1 -0
- package/packages/cli/dist/commands/server/stop.d.ts +9 -0
- package/packages/cli/dist/commands/server/stop.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/stop.js +31 -0
- package/packages/cli/dist/commands/server/stop.js.map +1 -0
- package/packages/cli/dist/commands/server/validate.d.ts +15 -0
- package/packages/cli/dist/commands/server/validate.d.ts.map +1 -0
- package/packages/cli/dist/commands/server/validate.js +87 -0
- package/packages/cli/dist/commands/server/validate.js.map +1 -0
- package/packages/cli/dist/commands/stdio.d.ts +36 -0
- package/packages/cli/dist/commands/stdio.d.ts.map +1 -0
- package/packages/cli/dist/commands/stdio.js +85 -0
- package/packages/cli/dist/commands/stdio.js.map +1 -0
- package/packages/cli/dist/commands/tool/execute-confirm.d.ts +12 -0
- package/packages/cli/dist/commands/tool/execute-confirm.d.ts.map +1 -0
- package/packages/cli/dist/commands/tool/execute-confirm.js +98 -0
- package/packages/cli/dist/commands/tool/execute-confirm.js.map +1 -0
- package/packages/cli/dist/commands/tool/execute.d.ts +12 -0
- package/packages/cli/dist/commands/tool/execute.d.ts.map +1 -0
- package/packages/cli/dist/commands/tool/execute.js +55 -0
- package/packages/cli/dist/commands/tool/execute.js.map +1 -0
- package/packages/cli/dist/commands/tool/list.d.ts +13 -0
- package/packages/cli/dist/commands/tool/list.d.ts.map +1 -0
- package/packages/cli/dist/commands/tool/list.js +91 -0
- package/packages/cli/dist/commands/tool/list.js.map +1 -0
- package/packages/cli/dist/commands/tool/search.d.ts +12 -0
- package/packages/cli/dist/commands/tool/search.d.ts.map +1 -0
- package/packages/cli/dist/commands/tool/search.js +87 -0
- package/packages/cli/dist/commands/tool/search.js.map +1 -0
- package/packages/cli/dist/index.d.ts +2 -0
- package/packages/cli/dist/index.d.ts.map +1 -0
- package/packages/cli/dist/index.js +9 -0
- package/packages/cli/dist/index.js.map +1 -0
- package/packages/cli/dist/utils/daemon-checker.d.ts +18 -0
- package/packages/cli/dist/utils/daemon-checker.d.ts.map +1 -0
- package/packages/cli/dist/utils/daemon-checker.js +69 -0
- package/packages/cli/dist/utils/daemon-checker.js.map +1 -0
- package/packages/cli/dist/utils/daemon-endpoint.d.ts +7 -0
- package/packages/cli/dist/utils/daemon-endpoint.d.ts.map +1 -0
- package/packages/cli/dist/utils/daemon-endpoint.js +13 -0
- package/packages/cli/dist/utils/daemon-endpoint.js.map +1 -0
- package/packages/cli/dist/utils/get-configured-port.d.ts +43 -0
- package/packages/cli/dist/utils/get-configured-port.d.ts.map +1 -0
- package/packages/cli/dist/utils/get-configured-port.js +141 -0
- package/packages/cli/dist/utils/get-configured-port.js.map +1 -0
- package/packages/cli/dist/utils/stdio-bridge.d.ts +48 -0
- package/packages/cli/dist/utils/stdio-bridge.d.ts.map +1 -0
- package/packages/cli/dist/utils/stdio-bridge.js +181 -0
- package/packages/cli/dist/utils/stdio-bridge.js.map +1 -0
- package/packages/cli/package.json +48 -0
- package/packages/core/dist/config/defaults.d.ts +36 -0
- package/packages/core/dist/config/defaults.d.ts.map +1 -0
- package/packages/core/dist/config/defaults.js +324 -0
- package/packages/core/dist/config/defaults.js.map +1 -0
- package/packages/core/dist/config/index.d.ts +9 -0
- package/packages/core/dist/config/index.d.ts.map +1 -0
- package/packages/core/dist/config/index.js +14 -0
- package/packages/core/dist/config/index.js.map +1 -0
- package/packages/core/dist/config/loader.d.ts +269 -0
- package/packages/core/dist/config/loader.d.ts.map +1 -0
- package/packages/core/dist/config/loader.js +777 -0
- package/packages/core/dist/config/loader.js.map +1 -0
- package/packages/core/dist/config/registry.d.ts +212 -0
- package/packages/core/dist/config/registry.d.ts.map +1 -0
- package/packages/core/dist/config/registry.js +754 -0
- package/packages/core/dist/config/registry.js.map +1 -0
- package/packages/core/dist/config/schema.d.ts +4352 -0
- package/packages/core/dist/config/schema.d.ts.map +1 -0
- package/packages/core/dist/config/schema.js +267 -0
- package/packages/core/dist/config/schema.js.map +1 -0
- package/packages/core/dist/daemon.d.ts +7 -0
- package/packages/core/dist/daemon.d.ts.map +1 -0
- package/packages/core/dist/daemon.js +116 -0
- package/packages/core/dist/daemon.js.map +1 -0
- package/packages/core/dist/http-client-retry.d.ts +67 -0
- package/packages/core/dist/http-client-retry.d.ts.map +1 -0
- package/packages/core/dist/http-client-retry.js +133 -0
- package/packages/core/dist/http-client-retry.js.map +1 -0
- package/packages/core/dist/http-client-updated.d.ts +147 -0
- package/packages/core/dist/http-client-updated.d.ts.map +1 -0
- package/packages/core/dist/http-client-updated.js +452 -0
- package/packages/core/dist/http-client-updated.js.map +1 -0
- package/packages/core/dist/http-client.d.ts +207 -0
- package/packages/core/dist/http-client.d.ts.map +1 -0
- package/packages/core/dist/http-client.js +704 -0
- package/packages/core/dist/http-client.js.map +1 -0
- package/packages/core/dist/index.d.ts +13 -0
- package/packages/core/dist/index.d.ts.map +1 -0
- package/packages/core/dist/index.js +23 -0
- package/packages/core/dist/index.js.map +1 -0
- package/packages/core/dist/logging/index.d.ts +46 -0
- package/packages/core/dist/logging/index.d.ts.map +1 -0
- package/packages/core/dist/logging/index.js +74 -0
- package/packages/core/dist/logging/index.js.map +1 -0
- package/packages/core/dist/metrics/index.d.ts +339 -0
- package/packages/core/dist/metrics/index.d.ts.map +1 -0
- package/packages/core/dist/metrics/index.js +792 -0
- package/packages/core/dist/metrics/index.js.map +1 -0
- package/packages/core/dist/plugins/index.d.ts +49 -0
- package/packages/core/dist/plugins/index.d.ts.map +1 -0
- package/packages/core/dist/plugins/index.js +82 -0
- package/packages/core/dist/plugins/index.js.map +1 -0
- package/packages/core/dist/secrets/index.d.ts +6 -0
- package/packages/core/dist/secrets/index.d.ts.map +1 -0
- package/packages/core/dist/secrets/index.js +5 -0
- package/packages/core/dist/secrets/index.js.map +1 -0
- package/packages/core/dist/secrets/keyring.d.ts +54 -0
- package/packages/core/dist/secrets/keyring.d.ts.map +1 -0
- package/packages/core/dist/secrets/keyring.js +141 -0
- package/packages/core/dist/secrets/keyring.js.map +1 -0
- package/packages/core/dist/server/batch-executor.d.ts +83 -0
- package/packages/core/dist/server/batch-executor.d.ts.map +1 -0
- package/packages/core/dist/server/batch-executor.js +291 -0
- package/packages/core/dist/server/batch-executor.js.map +1 -0
- package/packages/core/dist/server/circuit-breaker.d.ts +215 -0
- package/packages/core/dist/server/circuit-breaker.d.ts.map +1 -0
- package/packages/core/dist/server/circuit-breaker.js +330 -0
- package/packages/core/dist/server/circuit-breaker.js.map +1 -0
- package/packages/core/dist/server/client-detection.d.ts +40 -0
- package/packages/core/dist/server/client-detection.d.ts.map +1 -0
- package/packages/core/dist/server/client-detection.js +242 -0
- package/packages/core/dist/server/client-detection.js.map +1 -0
- package/packages/core/dist/server/client-profiles.d.ts +102 -0
- package/packages/core/dist/server/client-profiles.d.ts.map +1 -0
- package/packages/core/dist/server/client-profiles.js +254 -0
- package/packages/core/dist/server/client-profiles.js.map +1 -0
- package/packages/core/dist/server/http.d.ts +386 -0
- package/packages/core/dist/server/http.d.ts.map +1 -0
- package/packages/core/dist/server/http.js +4253 -0
- package/packages/core/dist/server/http.js.map +1 -0
- package/packages/core/dist/server/index.d.ts +7 -0
- package/packages/core/dist/server/index.d.ts.map +1 -0
- package/packages/core/dist/server/index.js +6 -0
- package/packages/core/dist/server/index.js.map +1 -0
- package/packages/core/dist/server/manager.d.ts +458 -0
- package/packages/core/dist/server/manager.d.ts.map +1 -0
- package/packages/core/dist/server/manager.js +3255 -0
- package/packages/core/dist/server/manager.js.map +1 -0
- package/packages/core/dist/server/managers/HttpConnectionManager.d.ts +69 -0
- package/packages/core/dist/server/managers/HttpConnectionManager.d.ts.map +1 -0
- package/packages/core/dist/server/managers/HttpConnectionManager.js +214 -0
- package/packages/core/dist/server/managers/HttpConnectionManager.js.map +1 -0
- package/packages/core/dist/server/managers/ProcessManager.d.ts +128 -0
- package/packages/core/dist/server/managers/ProcessManager.d.ts.map +1 -0
- package/packages/core/dist/server/managers/ProcessManager.js +443 -0
- package/packages/core/dist/server/managers/ProcessManager.js.map +1 -0
- package/packages/core/dist/server/managers/SchemaCacheManager.d.ts +152 -0
- package/packages/core/dist/server/managers/SchemaCacheManager.d.ts.map +1 -0
- package/packages/core/dist/server/managers/SchemaCacheManager.js +426 -0
- package/packages/core/dist/server/managers/SchemaCacheManager.js.map +1 -0
- package/packages/core/dist/server/managers/index.d.ts +9 -0
- package/packages/core/dist/server/managers/index.d.ts.map +1 -0
- package/packages/core/dist/server/managers/index.js +9 -0
- package/packages/core/dist/server/managers/index.js.map +1 -0
- package/packages/core/dist/server/metrics.d.ts +134 -0
- package/packages/core/dist/server/metrics.d.ts.map +1 -0
- package/packages/core/dist/server/metrics.js +273 -0
- package/packages/core/dist/server/metrics.js.map +1 -0
- package/packages/core/dist/server/prompts.d.ts +58 -0
- package/packages/core/dist/server/prompts.d.ts.map +1 -0
- package/packages/core/dist/server/prompts.js +405 -0
- package/packages/core/dist/server/prompts.js.map +1 -0
- package/packages/core/dist/server/protocol-versions.d.ts +49 -0
- package/packages/core/dist/server/protocol-versions.d.ts.map +1 -0
- package/packages/core/dist/server/protocol-versions.js +173 -0
- package/packages/core/dist/server/protocol-versions.js.map +1 -0
- package/packages/core/dist/server/resources.d.ts +64 -0
- package/packages/core/dist/server/resources.d.ts.map +1 -0
- package/packages/core/dist/server/resources.js +243 -0
- package/packages/core/dist/server/resources.js.map +1 -0
- package/packages/core/dist/server/schema-store.d.ts +84 -0
- package/packages/core/dist/server/schema-store.d.ts.map +1 -0
- package/packages/core/dist/server/schema-store.js +234 -0
- package/packages/core/dist/server/schema-store.js.map +1 -0
- package/packages/core/dist/server/schema-validator.d.ts +51 -0
- package/packages/core/dist/server/schema-validator.d.ts.map +1 -0
- package/packages/core/dist/server/schema-validator.js +208 -0
- package/packages/core/dist/server/schema-validator.js.map +1 -0
- package/packages/core/dist/server/token-calculator.d.ts +44 -0
- package/packages/core/dist/server/token-calculator.d.ts.map +1 -0
- package/packages/core/dist/server/token-calculator.js +53 -0
- package/packages/core/dist/server/token-calculator.js.map +1 -0
- package/packages/core/dist/server/types.d.ts +45 -0
- package/packages/core/dist/server/types.d.ts.map +1 -0
- package/packages/core/dist/server/types.js +5 -0
- package/packages/core/dist/server/types.js.map +1 -0
- package/packages/core/dist/utils/file-lock.d.ts +73 -0
- package/packages/core/dist/utils/file-lock.d.ts.map +1 -0
- package/packages/core/dist/utils/file-lock.js +235 -0
- package/packages/core/dist/utils/file-lock.js.map +1 -0
- package/packages/core/package.json +36 -0
- package/packages/dashboard/dist/assets/index-B7hvkCMu.css +1 -0
- package/packages/dashboard/dist/assets/index-yZhLPpzr.js +1 -0
- package/packages/dashboard/dist/index.html +14 -0
- package/packages/dashboard/package.json +24 -0
- package/packages/shared/dist/version.d.ts +2 -0
- package/packages/shared/dist/version.d.ts.map +1 -0
- package/packages/shared/dist/version.js +2 -0
- package/packages/shared/dist/version.js.map +1 -0
- package/packages/shared/package.json +18 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { Command, Flags, Args } from '@oclif/core';
|
|
2
|
+
import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
|
|
3
|
+
/**
|
|
4
|
+
* Debug MCP protocol communication with a server
|
|
5
|
+
* v1.3.58: New command to inspect raw MCP messages and server health
|
|
6
|
+
*/
|
|
7
|
+
class ServerDebug extends Command {
|
|
8
|
+
async run() {
|
|
9
|
+
const { args, flags } = await this.parse(ServerDebug);
|
|
10
|
+
const baseUrl = getDaemonEndpoint();
|
|
11
|
+
const serverName = args.server;
|
|
12
|
+
this.log(`\n🔍 Debugging server: ${serverName}`);
|
|
13
|
+
this.log(` Verbose: ${flags.verbose}`);
|
|
14
|
+
this.log('');
|
|
15
|
+
try {
|
|
16
|
+
// Step 1: Get server info
|
|
17
|
+
this.log('Step 1: Server Info');
|
|
18
|
+
this.log('─'.repeat(50));
|
|
19
|
+
const infoResponse = await fetch(`${baseUrl}/api/v1/servers/${encodeURIComponent(serverName)}/info`);
|
|
20
|
+
if (!infoResponse.ok) {
|
|
21
|
+
this.error(`Failed to get server info: ${infoResponse.statusText}`);
|
|
22
|
+
}
|
|
23
|
+
const serverInfo = await infoResponse.json();
|
|
24
|
+
this.log(` Name: ${serverInfo.name}`);
|
|
25
|
+
this.log(` Status: ${serverInfo.status}`);
|
|
26
|
+
this.log(` Command: ${serverInfo.command}`);
|
|
27
|
+
if (serverInfo.args && serverInfo.args.length > 0) {
|
|
28
|
+
this.log(` Args: ${JSON.stringify(serverInfo.args)}`);
|
|
29
|
+
}
|
|
30
|
+
if (serverInfo.env && Object.keys(serverInfo.env).length > 0) {
|
|
31
|
+
this.log(` Environment variables: ${Object.keys(serverInfo.env).length} set`);
|
|
32
|
+
if (flags.verbose) {
|
|
33
|
+
for (const [key, value] of Object.entries(serverInfo.env)) {
|
|
34
|
+
// Mask sensitive values
|
|
35
|
+
const displayValue = key.toLowerCase().includes('key') || key.toLowerCase().includes('pass') || key.toLowerCase().includes('secret')
|
|
36
|
+
? '***MASKED***'
|
|
37
|
+
: value;
|
|
38
|
+
this.log(` ${key}: ${displayValue}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
this.log('');
|
|
43
|
+
// Step 2: Test tools/list
|
|
44
|
+
if (flags['test-tools']) {
|
|
45
|
+
this.log('Step 2: Tools Discovery');
|
|
46
|
+
this.log('─'.repeat(50));
|
|
47
|
+
const startTime = Date.now();
|
|
48
|
+
try {
|
|
49
|
+
const toolsResponse = await fetch(`${baseUrl}/api/v1/servers/${encodeURIComponent(serverName)}/tools`, {
|
|
50
|
+
signal: AbortSignal.timeout(35000), // Allow 35s for server startup
|
|
51
|
+
});
|
|
52
|
+
const elapsed = Date.now() - startTime;
|
|
53
|
+
if (!toolsResponse.ok) {
|
|
54
|
+
throw new Error(`HTTP ${toolsResponse.status}: ${toolsResponse.statusText}`);
|
|
55
|
+
}
|
|
56
|
+
const toolsData = await toolsResponse.json();
|
|
57
|
+
const tools = toolsData.tools || [];
|
|
58
|
+
this.log(` Status: ✅ Success (${elapsed}ms)`);
|
|
59
|
+
this.log(` Tools found: ${tools.length}`);
|
|
60
|
+
if (tools.length === 0) {
|
|
61
|
+
this.log('');
|
|
62
|
+
this.log(' ⚠️ WARNING: Server returned 0 tools!');
|
|
63
|
+
this.log(' This could indicate:');
|
|
64
|
+
this.log(' • Server is still initializing (wait and retry)');
|
|
65
|
+
this.log(' • Server failed to connect to backend service');
|
|
66
|
+
this.log(' • Environment variables (API keys, URLs) are incorrect');
|
|
67
|
+
this.log(' • Server does not implement tools/list correctly');
|
|
68
|
+
this.log('');
|
|
69
|
+
this.log(' Try:');
|
|
70
|
+
this.log(` 1. metalink server restart ${serverName}`);
|
|
71
|
+
this.log(' 2. Check server logs (if available)');
|
|
72
|
+
this.log(` 3. Verify environment variables with --verbose flag`);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.log('');
|
|
76
|
+
this.log(' Available tools:');
|
|
77
|
+
for (const tool of tools.slice(0, 10)) {
|
|
78
|
+
this.log(` • ${tool.name}`);
|
|
79
|
+
if (flags.verbose && tool.description) {
|
|
80
|
+
this.log(` ${tool.description}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (tools.length > 10) {
|
|
84
|
+
this.log(` ... and ${tools.length - 10} more`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (flags.verbose && tools.length > 0) {
|
|
88
|
+
this.log('');
|
|
89
|
+
this.log(' Full tool schemas:');
|
|
90
|
+
this.log(JSON.stringify(tools, null, 2));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
const elapsed = Date.now() - startTime;
|
|
95
|
+
this.log(` Status: ❌ Failed (${elapsed}ms)`);
|
|
96
|
+
this.log(` Error: ${error.message}`);
|
|
97
|
+
if (error.name === 'TypeError' && error.message.includes('fetch')) {
|
|
98
|
+
this.log('');
|
|
99
|
+
this.log(' ❌ MetaLink daemon not running or not accessible');
|
|
100
|
+
this.log(' Start it with: metalink daemon start');
|
|
101
|
+
}
|
|
102
|
+
else if (error.name === 'AbortError' || error.message.includes('timeout')) {
|
|
103
|
+
this.log('');
|
|
104
|
+
this.log(' ⏱️ Server startup timeout (>35s)');
|
|
105
|
+
this.log(' This server may be slow to initialize.');
|
|
106
|
+
this.log(' Try again in a few seconds.');
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
this.log('');
|
|
111
|
+
this.log('Step 3: Health Summary');
|
|
112
|
+
this.log('─'.repeat(50));
|
|
113
|
+
// Determine health status
|
|
114
|
+
const isRunning = serverInfo.status === 'running';
|
|
115
|
+
const hasTools = flags['test-tools']; // We tested tools above
|
|
116
|
+
if (isRunning) {
|
|
117
|
+
this.log(' ✅ Server process is running');
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.log(' ❌ Server is not running');
|
|
121
|
+
this.log(` Current status: ${serverInfo.status}`);
|
|
122
|
+
this.log(` Start with: metalink server start ${serverName}`);
|
|
123
|
+
}
|
|
124
|
+
this.log('');
|
|
125
|
+
this.log('💡 Tips:');
|
|
126
|
+
this.log(' • Use --verbose to see full details');
|
|
127
|
+
this.log(' • Use --no-test-tools to skip tool discovery test');
|
|
128
|
+
this.log(` • Check logs at: ~/mcp/metalink/logs/metalink-daemon.log`);
|
|
129
|
+
this.log('');
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
if (error.message?.includes('404')) {
|
|
133
|
+
this.error(`Server '${serverName}' not found in registry`);
|
|
134
|
+
}
|
|
135
|
+
else if (error.name === 'TypeError' && error.message.includes('fetch')) {
|
|
136
|
+
this.error(`MetaLink daemon not running or not accessible`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
this.error(`Failed to debug server: ${error.message}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
ServerDebug.description = 'Debug MCP protocol communication with a server (shows raw messages, health checks)';
|
|
145
|
+
ServerDebug.examples = [
|
|
146
|
+
'<%= config.bin %> <%= command.id %> memory',
|
|
147
|
+
'<%= config.bin %> <%= command.id %> meta-localhost --verbose',
|
|
148
|
+
'<%= config.bin %> <%= command.id %> jira-basic-auth --test-tools',
|
|
149
|
+
];
|
|
150
|
+
ServerDebug.flags = {
|
|
151
|
+
verbose: Flags.boolean({
|
|
152
|
+
char: 'v',
|
|
153
|
+
description: 'Show detailed MCP protocol messages',
|
|
154
|
+
default: false,
|
|
155
|
+
}),
|
|
156
|
+
'test-tools': Flags.boolean({
|
|
157
|
+
description: 'Test tools/list call and show results',
|
|
158
|
+
default: true,
|
|
159
|
+
}),
|
|
160
|
+
};
|
|
161
|
+
ServerDebug.args = {
|
|
162
|
+
server: Args.string({ description: 'Server name to debug', required: true }),
|
|
163
|
+
};
|
|
164
|
+
export default ServerDebug;
|
|
165
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/commands/server/debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class ServerInfo extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
name: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
static flags: {
|
|
8
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
9
|
+
'force-discovery': import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../../src/commands/server/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAGnD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAAkD;IACpE,MAAM,CAAC,IAAI;;MAET;IACF,MAAM,CAAC,KAAK;;;MASV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqD3B"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Command, Args, Flags } from '@oclif/core';
|
|
2
|
+
import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
|
|
3
|
+
class ServerInfo extends Command {
|
|
4
|
+
async run() {
|
|
5
|
+
const { args, flags } = await this.parse(ServerInfo);
|
|
6
|
+
try {
|
|
7
|
+
const url = `${getDaemonEndpoint()}/api/v1/servers/${encodeURIComponent(args.name)}/info${flags['force-discovery'] ? '?forceDiscovery=true' : ''}`;
|
|
8
|
+
const response = await fetch(url);
|
|
9
|
+
if (!response.ok) {
|
|
10
|
+
const data = await response.json();
|
|
11
|
+
this.error(`Failed to get server info: ${data.error || 'Unknown error'}`);
|
|
12
|
+
}
|
|
13
|
+
const data = await response.json();
|
|
14
|
+
if (flags.json) {
|
|
15
|
+
this.log(JSON.stringify(data, null, 2));
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.log(`Server '${args.name}' Info:`);
|
|
19
|
+
if (data.status) {
|
|
20
|
+
this.log(` Status: ${data.status}`);
|
|
21
|
+
}
|
|
22
|
+
if (data.toolCount !== undefined) {
|
|
23
|
+
this.log(` Tools: ${data.toolCount}`);
|
|
24
|
+
if (data.tools && data.tools.length > 0) {
|
|
25
|
+
for (const tool of data.tools) {
|
|
26
|
+
this.log(` - ${tool}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (data.command) {
|
|
31
|
+
this.log(` Command: ${data.command}`);
|
|
32
|
+
if (data.args && data.args.length > 0) {
|
|
33
|
+
this.log(` Args: ${data.args.join(' ')}`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else if (data.url) {
|
|
37
|
+
this.log(` Transport: ${data.transport}`);
|
|
38
|
+
this.log(` URL: ${data.url}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
this.error(`Failed to get server info: ${error instanceof Error ? error.message : String(error)}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
ServerInfo.description = 'Get detailed information about an MCP server';
|
|
48
|
+
ServerInfo.args = {
|
|
49
|
+
name: Args.string({ description: 'Server name', required: true }),
|
|
50
|
+
};
|
|
51
|
+
ServerInfo.flags = {
|
|
52
|
+
json: Flags.boolean({
|
|
53
|
+
description: 'Output as JSON',
|
|
54
|
+
default: false,
|
|
55
|
+
}),
|
|
56
|
+
'force-discovery': Flags.boolean({
|
|
57
|
+
description: 'Force rediscovery of tools',
|
|
58
|
+
default: false,
|
|
59
|
+
}),
|
|
60
|
+
};
|
|
61
|
+
export default ServerInfo;
|
|
62
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/server/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class ServerList extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
7
|
+
};
|
|
8
|
+
run(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/server/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAI7C,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAAoD;IAEtE,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,KAAK;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmH3B"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Command, Flags } from '@oclif/core';
|
|
2
|
+
import Table from 'cli-table3';
|
|
3
|
+
import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
|
|
4
|
+
class ServerList extends Command {
|
|
5
|
+
async run() {
|
|
6
|
+
const { flags } = await this.parse(ServerList);
|
|
7
|
+
try {
|
|
8
|
+
const response = await fetch(`${getDaemonEndpoint()}/api/v1/servers/available/list`);
|
|
9
|
+
if (!response.ok) {
|
|
10
|
+
const data = await response.json();
|
|
11
|
+
this.error(`Failed to list available servers: ${data.error || 'Unknown error'}`);
|
|
12
|
+
}
|
|
13
|
+
const { servers } = await response.json();
|
|
14
|
+
if (flags.json) {
|
|
15
|
+
this.log(JSON.stringify(servers, null, 2));
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
if (servers.length === 0) {
|
|
19
|
+
this.log('No servers available in registry.');
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// Sort servers: running first, then stopped, then crashed
|
|
23
|
+
// Within each status group, sort by tools DESC, then tokens DESC
|
|
24
|
+
const statusOrder = { running: 0, stopped: 1, crashed: 2 };
|
|
25
|
+
const sortedServers = [...servers].sort((a, b) => {
|
|
26
|
+
const statusA = statusOrder[a.status] ?? 99;
|
|
27
|
+
const statusB = statusOrder[b.status] ?? 99;
|
|
28
|
+
if (statusA !== statusB) {
|
|
29
|
+
// running < stopped < crashed
|
|
30
|
+
return statusA - statusB;
|
|
31
|
+
}
|
|
32
|
+
// Same status: sort by tools DESC
|
|
33
|
+
if (a.toolCount !== b.toolCount) {
|
|
34
|
+
return b.toolCount - a.toolCount;
|
|
35
|
+
}
|
|
36
|
+
// Same tools: sort by tokens DESC
|
|
37
|
+
return b.tokenEstimate - a.tokenEstimate;
|
|
38
|
+
});
|
|
39
|
+
const table = new Table({
|
|
40
|
+
head: ['Name', 'Type', 'Status', 'PID', 'Enabled', 'Tools', 'Tokens'],
|
|
41
|
+
style: { head: [] },
|
|
42
|
+
colAligns: ['left', 'left', 'left', 'right', 'left', 'right', 'right'],
|
|
43
|
+
});
|
|
44
|
+
// Track running vs offline stats separately
|
|
45
|
+
let runningCount = 0;
|
|
46
|
+
let runningTools = 0;
|
|
47
|
+
let runningTokens = 0;
|
|
48
|
+
let offlineCount = 0;
|
|
49
|
+
let offlineTools = 0;
|
|
50
|
+
let offlineTokens = 0;
|
|
51
|
+
for (const server of sortedServers) {
|
|
52
|
+
const pid = server.process?.pid?.toString() || '-';
|
|
53
|
+
const enabled = server.enabled ? 'yes' : 'no';
|
|
54
|
+
// Show cached tool counts even for stopped servers
|
|
55
|
+
const tools = server.toolCount > 0 ? server.toolCount.toString() : '0';
|
|
56
|
+
const tokens = server.tokenEstimate > 0 ? server.tokenEstimate.toLocaleString('en-US') : '0';
|
|
57
|
+
// Track stats by status
|
|
58
|
+
if (server.status === 'running') {
|
|
59
|
+
runningCount++;
|
|
60
|
+
runningTools += server.toolCount;
|
|
61
|
+
runningTokens += server.tokenEstimate;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
offlineCount++;
|
|
65
|
+
offlineTools += server.toolCount;
|
|
66
|
+
offlineTokens += server.tokenEstimate;
|
|
67
|
+
}
|
|
68
|
+
table.push([server.name, server.type, server.status, pid, enabled, tools, tokens]);
|
|
69
|
+
}
|
|
70
|
+
this.log(table.toString());
|
|
71
|
+
// Summary with breakdown
|
|
72
|
+
this.log('');
|
|
73
|
+
const totalServers = runningCount + offlineCount;
|
|
74
|
+
const totalTools = runningTools + offlineTools;
|
|
75
|
+
const totalTokens = runningTokens + offlineTokens;
|
|
76
|
+
this.log(`Running: ${runningCount} servers, ${runningTools} tools, ${runningTokens.toLocaleString('en-US')} tokens`);
|
|
77
|
+
if (offlineTools > 0) {
|
|
78
|
+
this.log(`Offline: ${offlineCount} servers, ${offlineTools} tools, ${offlineTokens.toLocaleString('en-US')} tokens (cached)`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.log(`Offline: ${offlineCount} servers (no cached schemas yet)`);
|
|
82
|
+
}
|
|
83
|
+
this.log(`Total: ${totalServers} servers, ${totalTools} tools, ${totalTokens.toLocaleString('en-US')} tokens`);
|
|
84
|
+
this.log('');
|
|
85
|
+
this.log('Note: Use "metalink server info <name>" for detailed configuration.');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
this.error(`Failed to list available servers: ${error instanceof Error ? error.message : String(error)}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
ServerList.description = 'List all available MCP servers in the registry';
|
|
94
|
+
ServerList.examples = [
|
|
95
|
+
'<%= config.bin %> <%= command.id %>',
|
|
96
|
+
'<%= config.bin %> <%= command.id %> --json',
|
|
97
|
+
];
|
|
98
|
+
ServerList.flags = {
|
|
99
|
+
json: Flags.boolean({
|
|
100
|
+
description: 'Output as JSON',
|
|
101
|
+
default: false,
|
|
102
|
+
}),
|
|
103
|
+
};
|
|
104
|
+
export default ServerList;
|
|
105
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/server/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class ServerRefreshTools extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static args: {
|
|
6
|
+
name: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
verbose: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=refresh-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-tools.d.ts","sourceRoot":"","sources":["../../../src/commands/server/refresh-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAWnD,MAAM,CAAC,OAAO,OAAO,kBAAmB,SAAQ,OAAO;IACrD,MAAM,CAAC,WAAW,SAAgD;IAElE,MAAM,CAAC,QAAQ,WAGb;IAEF,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;MAMV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiC3B"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Command, Args, Flags } from '@oclif/core';
|
|
2
|
+
import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
|
|
3
|
+
class ServerRefreshTools extends Command {
|
|
4
|
+
async run() {
|
|
5
|
+
const { args, flags } = await this.parse(ServerRefreshTools);
|
|
6
|
+
try {
|
|
7
|
+
this.log(`Refreshing tools for '${args.name}'...`);
|
|
8
|
+
const response = await fetch(`${getDaemonEndpoint()}/api/v1/servers/${encodeURIComponent(args.name)}/refresh-tools`, { method: 'POST' });
|
|
9
|
+
if (!response.ok) {
|
|
10
|
+
const data = (await response.json());
|
|
11
|
+
this.error(`Failed to refresh tools: ${data.error || 'Unknown error'}`);
|
|
12
|
+
}
|
|
13
|
+
const data = (await response.json());
|
|
14
|
+
this.log(`✓ Refreshed '${args.name}': ${data.toolCount} tools discovered`);
|
|
15
|
+
if (flags.verbose && data.tools && data.tools.length > 0) {
|
|
16
|
+
this.log('\nTools:');
|
|
17
|
+
for (const tool of data.tools) {
|
|
18
|
+
this.log(` - ${tool}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error instanceof Error && error.message.includes('ECONNREFUSED')) {
|
|
24
|
+
this.error('Daemon not running. Start it with: metalink daemon start');
|
|
25
|
+
}
|
|
26
|
+
this.error(`Failed to refresh tools: ${error instanceof Error ? error.message : String(error)}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
ServerRefreshTools.description = 'Force refresh tool cache for an MCP server';
|
|
31
|
+
ServerRefreshTools.examples = [
|
|
32
|
+
'<%= config.bin %> server refresh-tools memory',
|
|
33
|
+
'<%= config.bin %> server refresh-tools codegraph --verbose',
|
|
34
|
+
];
|
|
35
|
+
ServerRefreshTools.args = {
|
|
36
|
+
name: Args.string({ description: 'Server name', required: true }),
|
|
37
|
+
};
|
|
38
|
+
ServerRefreshTools.flags = {
|
|
39
|
+
verbose: Flags.boolean({
|
|
40
|
+
char: 'v',
|
|
41
|
+
description: 'Show list of discovered tools',
|
|
42
|
+
default: false,
|
|
43
|
+
}),
|
|
44
|
+
};
|
|
45
|
+
export default ServerRefreshTools;
|
|
46
|
+
//# sourceMappingURL=refresh-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-tools.js","sourceRoot":"","sources":["../../../src/commands/server/refresh-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAUnE,MAAqB,kBAAmB,SAAQ,OAAO;IAoBrD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC;YAEnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,iBAAiB,EAAE,mBAAmB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EACtF,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;gBAC3D,IAAI,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC;YAExD,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,SAAS,mBAAmB,CAAC,CAAC;YAE3E,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC9B,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;;AAnDM,8BAAW,GAAG,4CAA4C,CAAC;AAE3D,2BAAQ,GAAG;IAChB,+CAA+C;IAC/C,4DAA4D;CAC7D,CAAC;AAEK,uBAAI,GAAG;IACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAClE,CAAC;AAEK,wBAAK,GAAG;IACb,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;QACrB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAC;eAlBiB,kBAAkB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class ServerRemove extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
name: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
static flags: {
|
|
8
|
+
force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
9
|
+
};
|
|
10
|
+
run(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=remove.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/commands/server/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAGnD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,MAAM,CAAC,WAAW,SAA4C;IAE9D,MAAM,CAAC,IAAI;;MAET;IAEF,MAAM,CAAC,KAAK;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8B3B"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Command, Args, Flags } from '@oclif/core';
|
|
2
|
+
import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
|
|
3
|
+
class ServerRemove extends Command {
|
|
4
|
+
async run() {
|
|
5
|
+
const { args, flags } = await this.parse(ServerRemove);
|
|
6
|
+
try {
|
|
7
|
+
// Build query string for force flag
|
|
8
|
+
const queryString = flags.force ? '?force=true' : '';
|
|
9
|
+
// Make API request
|
|
10
|
+
const response = await fetch(`${getDaemonEndpoint()}/api/v1/registry/servers/${encodeURIComponent(args.name)}${queryString}`, {
|
|
11
|
+
method: 'DELETE',
|
|
12
|
+
});
|
|
13
|
+
if (!response.ok) {
|
|
14
|
+
const data = await response.json();
|
|
15
|
+
// Check if server is running and user didn't force
|
|
16
|
+
if (response.status === 409) {
|
|
17
|
+
this.error(`${data.error}\nUse --force flag to remove running servers`);
|
|
18
|
+
}
|
|
19
|
+
this.error(`Failed to remove server: ${data.error || 'Unknown error'}`);
|
|
20
|
+
}
|
|
21
|
+
this.log(`✓ Server '${args.name}' removed from registry`);
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
this.error(`Failed to remove server: ${error instanceof Error ? error.message : String(error)}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
ServerRemove.description = 'Remove an MCP server from the registry';
|
|
29
|
+
ServerRemove.args = {
|
|
30
|
+
name: Args.string({ description: 'Server name to remove', required: true }),
|
|
31
|
+
};
|
|
32
|
+
ServerRemove.flags = {
|
|
33
|
+
force: Flags.boolean({
|
|
34
|
+
description: 'Force removal of running servers',
|
|
35
|
+
default: false,
|
|
36
|
+
}),
|
|
37
|
+
};
|
|
38
|
+
export default ServerRemove;
|
|
39
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/server/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAqB,YAAa,SAAQ,OAAO;IAc/C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEvD,IAAI,CAAC;YACH,oCAAoC;YACpC,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAErD,mBAAmB;YACnB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,iBAAiB,EAAE,4BAA4B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,EAAE,EAAE;gBAC5H,MAAM,EAAE,QAAQ;aACjB,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;gBAEzD,mDAAmD;gBACnD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC5B,IAAI,CAAC,KAAK,CACR,GAAG,IAAI,CAAC,KAAK,8CAA8C,CAC5D,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;;AA1CM,wBAAW,GAAG,wCAAwC,CAAC;AAEvD,iBAAI,GAAG;IACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC5E,CAAC;AAEK,kBAAK,GAAG;IACb,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACnB,WAAW,EAAE,kCAAkC;QAC/C,OAAO,EAAE,KAAK;KACf,CAAC;CACH,CAAC;eAZiB,YAAY"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class ServerRestart extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
name: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
run(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=restart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../../src/commands/server/restart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,aAAa,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,MAAM,CAAC,WAAW,SAA2B;IAC7C,MAAM,CAAC,IAAI;;MAET;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB3B"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Command, Args } from '@oclif/core';
|
|
2
|
+
import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
|
|
3
|
+
class ServerRestart extends Command {
|
|
4
|
+
async run() {
|
|
5
|
+
const { args } = await this.parse(ServerRestart);
|
|
6
|
+
try {
|
|
7
|
+
const response = await fetch(`${getDaemonEndpoint()}/api/v1/servers/${encodeURIComponent(args.name)}/restart`, {
|
|
8
|
+
method: 'POST',
|
|
9
|
+
});
|
|
10
|
+
if (!response.ok) {
|
|
11
|
+
const data = await response.json();
|
|
12
|
+
this.error(`Failed to restart server: ${data.error || 'Unknown error'}`);
|
|
13
|
+
}
|
|
14
|
+
const data = await response.json();
|
|
15
|
+
this.log(`✓ Server '${args.name}' restarted`);
|
|
16
|
+
if (data.process) {
|
|
17
|
+
this.log(` PID: ${data.process.pid}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
this.error(`Failed to restart server: ${error instanceof Error ? error.message : String(error)}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
ServerRestart.description = 'Restart an MCP server';
|
|
26
|
+
ServerRestart.args = {
|
|
27
|
+
name: Args.string({ description: 'Server name', required: true }),
|
|
28
|
+
};
|
|
29
|
+
export default ServerRestart;
|
|
30
|
+
//# sourceMappingURL=restart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restart.js","sourceRoot":"","sources":["../../../src/commands/server/restart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAqB,aAAc,SAAQ,OAAO;IAMhD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEjD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,iBAAiB,EAAE,mBAAmB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC7G,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YAC3E,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAmD,CAAC;YACpF,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;;AA1BM,yBAAW,GAAG,uBAAuB,CAAC;AACtC,kBAAI,GAAG;IACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAClE,CAAC;eAJiB,aAAa"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class ServerStart extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static args: {
|
|
5
|
+
name: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
|
|
6
|
+
};
|
|
7
|
+
run(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/server/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,aAAa,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,MAAM,CAAC,WAAW,SAAyB;IAC3C,MAAM,CAAC,IAAI;;MAET;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8B3B"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Command, Args } from '@oclif/core';
|
|
2
|
+
import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
|
|
3
|
+
class ServerStart extends Command {
|
|
4
|
+
async run() {
|
|
5
|
+
const { args } = await this.parse(ServerStart);
|
|
6
|
+
// Deprecation warning
|
|
7
|
+
this.warn('⚠️ DEPRECATED: metalink server start is not needed in v1.3.0+');
|
|
8
|
+
this.warn('Servers auto-start on first tool call. Use discovery mode instead:');
|
|
9
|
+
this.warn(' → metalink tool list <server> (discover tools, auto-starts if needed)');
|
|
10
|
+
this.warn(' → metalink tool discover (list all available servers)');
|
|
11
|
+
this.log('');
|
|
12
|
+
try {
|
|
13
|
+
const response = await fetch(`${getDaemonEndpoint()}/api/v1/servers/${encodeURIComponent(args.name)}/start`, {
|
|
14
|
+
method: 'POST',
|
|
15
|
+
});
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
const data = await response.json();
|
|
18
|
+
this.error(`Failed to start server: ${data.error || 'Unknown error'}`);
|
|
19
|
+
}
|
|
20
|
+
const data = await response.json();
|
|
21
|
+
this.log(`✓ Server '${args.name}' started`);
|
|
22
|
+
if (data.process) {
|
|
23
|
+
this.log(` PID: ${data.process.pid}`);
|
|
24
|
+
this.log(` Uptime: ${data.process.uptime}ms`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
this.error(`Failed to start server: ${error instanceof Error ? error.message : String(error)}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
ServerStart.description = 'Start an MCP server';
|
|
33
|
+
ServerStart.args = {
|
|
34
|
+
name: Args.string({ description: 'Server name', required: true }),
|
|
35
|
+
};
|
|
36
|
+
export default ServerStart;
|
|
37
|
+
//# sourceMappingURL=start.js.map
|