{"record":{"id":"6eb4d07d60ad0f52","repo":"Tencent/WeKnora","slug":"failed-to-get-mcp-client-w","errorCode":null,"errorMessage":"failed to get MCP client: %w","messagePattern":"failed to get MCP client: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/application/service/mcp_service.go","lineNumber":605,"sourceCode":"// GetMCPServiceResources retrieves the list of resources from an MCP service\nfunc (s *mcpServiceService) GetMCPServiceResources(\n\tctx context.Context,\n\ttenantID uint64,\n\tid string,\n) ([]*types.MCPResource, error) {\n\t// Get service\n\tservice, err := s.mcpServiceRepo.GetByID(ctx, tenantID, id)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get MCP service: %w\", err)\n\t}\n\tif service == nil {\n\t\treturn nil, fmt.Errorf(\"MCP service not found\")\n\t}\n\n\t// Get or create client\n\tclient, err := s.mcpManager.GetOrCreateClient(ctx, service)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get MCP client: %w\", err)\n\t}\n\n\t// List resources\n\tresources, err := client.ListResources(ctx)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to list resources: %w\", err)\n\t}\n\n\treturn resources, nil\n}\n","sourceCodeStart":587,"sourceCodeEnd":616,"githubUrl":"https://github.com/Tencent/WeKnora/blob/988cbb03305e055d8ebb7d46d9ac6cc0803cd074/internal/application/service/mcp_service.go#L587-L616","documentation":"GetMCPServiceResources could not obtain an MCP client for the configured service. The MCP manager's GetOrCreateClient failed while establishing a connection or session with the MCP server backing this service. The underlying cause is wrapped with %w so errors.As/Is can inspect it.","triggerScenarios":"Calling GetMCPServiceResources for an existing MCP service whose server is unreachable, misconfigured (bad URL/command), or whose connection handshake fails inside s.mcpManager.GetOrCreateClient.","commonSituations":"MCP server process not running or crashed; wrong server endpoint or stdio command configured for the tenant's MCP service; network/firewall blocking the MCP endpoint; server restarted with new credentials and client cache holds stale state.","solutions":["Check that the MCP server backing the service is running and reachable from this host","Verify the service's connection config (URL/command, auth) in the MCP service record","Inspect the wrapped cause with errors.Unwrap/As to see the exact transport error","Restart or recreate the MCP service connection to clear any stale cached client"],"exampleFix":"// before\nresources, err := svc.GetMCPServiceResources(ctx, tenantID, serviceID)\n// after\nresources, err := svc.GetMCPServiceResources(ctx, tenantID, serviceID)\nif err != nil {\n\tvar transportErr *net.OpError\n\tif errors.As(err, &transportErr) {\n\t\t// retry once after checking server health\n\t}\n}","handlingStrategy":"retry","validationCode":"// probe the service before calling\nsvc, err := mcpServiceClient.Get(ctx, tenantID, serviceID)\nif err != nil || svc == nil { return err }\n// optionally ping the MCP server endpoint first\nif err := pingMCPServer(svc.Endpoint); err != nil {\n\treturn fmt.Errorf(\"MCP server unreachable: %w\", err)\n}","typeGuard":"func isMCPClientErr(err error) bool {\n\treturn err != nil && strings.Contains(err.Error(), \"failed to get MCP client\")\n}","tryCatchPattern":"resources, err := svc.GetMCPServiceResources(ctx, tenantID, serviceID)\nif err != nil {\n\tif isMCPClientErr(err) {\n\t\t// backoff-retry; connection issues are often transient\n\t\treturn retryWithBackoff(ctx, 3, func() error {\n\t\t\t_, err = svc.GetMCPServiceResources(ctx, tenantID, serviceID)\n\t\t\treturn err\n\t\t})\n\t}\n\treturn err\n}","preventionTips":["Health-check the MCP server before invoking resource operations","Keep MCP server processes supervised (systemd/k8s) so crashes restart them","Pin and validate server endpoints/commands in service config","Clear stale cached clients after server restarts or credential rotation"],"tags":["mcp","client-connection","network"],"backgroundTag":"mcp-client-connection-failed","analyzedSha":"988cbb03305e055d8ebb7d46d9ac6cc0803cd074","analyzedAt":"2026-09-02T14:41:08.344Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}