Add Custom Post Type as top level menu item for a custom page

You don’t need to add the admin menu yourself, when registering your post type just make sure you set the public argument to true. If the post type isn’t public, then make sure at least show_ui is true. Then the menus will be created for you.

register_post_type( 'my_cpt', array(
    'public'  => true,
    'show_ui' => true,
) );

Refer to the documentation for the arguments that determine where in the menu it appears and what icon is used.