Custom REST endpoint not working to retrieve single posts (“rest_no_route”)

To get your expected result, you have to create a second endpoint. Your endpoint doesn’t know what to do with the last part of the path (the ID).

register_rest_route('mytheme/v1/', 'my_cpt/(?P<id>[\d]+)', array(
    'methods' => WP_REST_SERVER::READABLE,
    'callback' => 'my_cpt_single_result',
));

Your CB function could be like this:

function my_cpt_single_result( $data ) {
   $cpt_id = $data['id'];
   // make your query with the $cpt_id
}

A little more validation should be done.
It is explained here in a longer version.