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.