musistudio/claude-code-router · error · Error

MCP server must be saved before tool discovery.

Error message

MCP server must be saved before tool discovery.

What it means

Error "MCP server must be saved before tool discovery." thrown in musistudio/claude-code-router.

Source

Thrown at packages/core/src/web/management-server.ts:355

  getProxyCertificateStatus: () => proxyService.getCertificateStatus(),
  getProxyNetworkCaptures: () => proxyService.getNetworkCaptures(),
  getProxyStatus: () => proxyService.getStatus(),
  getRequestLogDetail: (request) => getRequestLogDetail(request as RequestLogDetailRequest),
  getRequestLogBodyChunk: (request) => getRequestLogBodyChunk(request as RequestLogBodyChunkRequest),
  getRequestLogs: (filter) => getRequestLogs(filter as RequestLogListFilter | undefined),
  getUpdateStatus: () => unsupportedUpdateStatus,
  getUsageStats: (range, filter) => getUsageStats(range as UsageStatsRange | undefined, filter as UsageStatsFilter | undefined),
  importLocalAgentProvider: (request) => importLocalAgentProvider(request as LocalAgentProviderImportRequest),
  installProxyCertificate: () => proxyService.installCertificate(),
  listMcpServerTools: async (serverName) => {
    const name = typeof serverName === "string" ? serverName.trim() : "";
    if (!name) {
      throw new Error("MCP server name is required.");
    }
    const config = await loadAppConfig();
    const server = config.agent.mcpServers.find((candidate) => candidate.name === name);
    if (!server) {
      throw new Error("MCP server must be saved before tool discovery.");
    }
    return listMcpServerTools(server);
  },
  openBotGatewayQrWindow: async (request) => {
    const qrRequest = request as BotGatewayQrWindowOpenRequest;
    await openSystemExternal(qrRequest.url);
    return {
      message: "Opened the QR login URL in your default browser.",
      observed: false,
      opened: true
    };
  },
  openBuiltInBrowser: async (url) => {
    const targetUrl = readString(url);
    if (targetUrl) {
      await openSystemExternal(targetUrl);
      return;
    }

View on GitHub (pinned to 99f24806c6)

When it happens

Trigger: Thrown at packages/core/src/web/management-server.ts:355 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of musistudio/claude-code-router@99f24806c6 (2026-08-27). Data as JSON: /api/errors/a22f43ea2b623657. Report an issue: GitHub.