Static starter
Use starters/netlify-static-starter when you want bundled filesystem content and an instant /mcp endpoint.
How to install, initialize, build, and serve with static-mcpify.
Use starters/netlify-static-starter when you want bundled filesystem content and an instant /mcp endpoint.
Use starters/netlify-contentful-starter when you want bundled sample content now and Contentful-driven rebuilds later.
The deploy page has direct Netlify buttons for both starter directories so users do not need to wire netlify.toml, redirects, or function paths manually.
npm install static-mcpify
Set Contentful credentials in a .env file if you are using the Contentful adapter.
CONTENTFUL_API_TOKEN=your_token
SPACE_ID=your_space
npx smcp init --output my-mcp
The wizard lets you choose content types and define tool behavior for each type.
npx smcp build --output my-mcp
npx smcp build --output my-mcp --content-type blog
Build writes content into the static structure below:
my-mcp/
├── config.json
└── content/
├── assets/
└── entries/
└── <type>/<slug>/
├── data.json
└── tools/*.md
import { handleMcpRequest } from 'static-mcpify/web-handler';
export default async (req: Request) => {
if (req.method === 'GET') return new Response('{"status":"ok"}');
return handleMcpRequest('./my-mcp/content', req);
};
import express from 'express';
import { handleMcpRequest } from 'static-mcpify/handler';
const app = express();
app.use(express.json());
app.all('/mcp', (req, res) => handleMcpRequest('./my-mcp/content', req, res));
app.listen(3000);
For exhaustive technical details, see the project README on GitHub.