Deploying the Docs
How to build and deploy this Fumadocs documentation site.
This documentation site is a Fumadocs app built on
Next.js. It lives in apps/docs/ and is independent of the MCP server package.
Local preview
cd apps/docs
npm install
npm run devOpen http://localhost:3000. The docs are under /docs.
Production build
cd apps/docs
npm run build
npm run startnpm run build runs next build, which also runs fumadocs-mdx (via the
postinstall script and the Next.js plugin) to generate the content source.
Deploy to Vercel (recommended)
Fumadocs is a Next.js app, so Vercel is the smoothest host.
- Push the repository to GitHub.
- In the Vercel dashboard, import the repository.
- Set Root Directory to
apps/docs(this is the key step for a monorepo). - Vercel auto-detects Next.js — leave build command and output as defaults:
- Build command:
next build - Install command:
npm install
- Build command:
- Click Deploy.
Every push to main then triggers a production deploy; pull requests get preview
URLs automatically.
Via the Vercel CLI
npm i -g vercel
cd apps/docs
vercel # first run links/creates the project
vercel --prod # promote to productionDeploy to Netlify
- In Netlify, Add new site → Import an existing project.
- Set Base directory to
apps/docs. - Build command:
npm run build. Publish directory:apps/docs/.next. - Add the official
@netlify/plugin-nextjsplugin (Netlify usually adds it automatically for Next.js sites).
Deploy as a static export
If you prefer static hosting (GitHub Pages, S3, Cloudflare Pages, any CDN), export the site to plain HTML.
-
Enable static output in
next.config.mjs:const config = { reactStrictMode: true, output: 'export', }; -
Build:
cd apps/docs npm run build -
Serve the generated
apps/docs/out/directory from any static host.
Static export disables server-only features. The built-in search still works because Fumadocs uses a static search index by default, but if you later add server routes (dynamic OG images, server-side search), keep the standard server build and host on Vercel or Netlify instead.
Deploy with Docker
# apps/docs/Dockerfile
FROM node:20-alpine AS base
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "run", "start"]cd apps/docs
docker build -t stellar-mcp-docs .
docker run -p 3000:3000 stellar-mcp-docs