I've been meaning to chime in here but have had limited time to be able to test/put together a comprehensive example, so let me just drop a few thoughts on what I think may be a feasible approach.
The 'Pagination' code example almost provides the functionality it appears you're looking for, which as I understand is to split a directory of say 100 MDX files into 10 pages of 10 MDX files-per-page.
However, instead of providing astronautPages as a JSON object, you need to dynamically glob your .MDX files like so:
---
import MyPostPreviewComponent from '../components/MyPostPreviewComponent.js';
import MyLayout from '../layouts/MyLayout.astro';
export async function getStaticPaths({ paginate }) {
const posts = await Astro.glob('../../posts/*.mdx');
return paginate(posts, { pageSize: 10 });
}
const { page } = Astro.props;
---
<!--Display the current page number. Astro.params.page can also be used!-->
<MyLayout>
<h1>Page {page.currentPage}</h1>
{page.data.map(({ post }) => <MyPostPreviewComponent post={post}/>)}
</MyLayout>
The getStaticPaths() and paginate() functions help you to gather and split up your files into chunks (pages) and to generate the necessary URLs for those individual pages, but it's up to you to decide how you then display that data. You could import and use an Astro Layout to style the page, and you'll probably want to use a custom component to handle the creation of post preview cards / links if you don't plan to embed the full text of your MDX files directly in the page.
You'll also need to build your own pagination component, or use an existing implementation like the accessible-astro-components library: https://github.com/markteekman/accessible-astro-components#example-using-astros-dynamic-page