loading…
Search for a command to run...
loading…
Runtime-agnostic SDK to create and deploy MCP servers anywhere TypeScript/JavaScript runs
Runtime-agnostic SDK to create and deploy MCP servers anywhere TypeScript/JavaScript runs
ModelFetch is a delightful TypeScript/JavaScript SDK for building and deploying MCP servers anywhere TypeScript/JavaScript runs.
Get started in seconds using our create-modelfetch CLI:
npx -y create-modelfetch@latest
ModelFetch works with any McpServer instance from the official MCP TypeScript SDK. Here's all it takes:
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
const server = new McpServer({
title: "My MCP Server",
name: "my-mcp-server",
version: "1.0.0",
});
server.registerTool(
"roll_dice",
{
title: "Roll Dice",
description: "Rolls an N-sided dice",
inputSchema: { sides: z.number().int().min(2) },
},
({ sides }) => ({
content: [
{
type: "text",
text: `🎲 You rolled a ${1 + Math.floor(Math.random() * sides)}!`,
},
],
}),
);
export default server;
import handle from "@modelfetch/node"; // Choose your runtime
import server from "./server"; // Import your server
handle(server); // That's it — ModelFetch handles all runtime-specific details
import handle from "@modelfetch/next"; // Choose your runtime
import server from "./server"; // Import your server
const handler = handle(server); // That's it — ModelFetch handles all runtime-specific details
export const GET = handler;
export const POST = handler;
export const DELETE = handler;
import handle from "@modelfetch/bun"; // Choose your runtime
import server from "./server.ts"; // Import your server
handle(server); // That's it — ModelFetch handles all runtime-specific details
import handle from "@modelfetch/deno"; // Choose your runtime
import server from "./server.ts"; // Import your server
handle(server); // That's it — ModelFetch handles all runtime-specific details
import handle from "@modelfetch/vercel"; // Choose your runtime
import server from "./server"; // Import your server
const handler = handle(server); // That's it — ModelFetch handles all runtime-specific details
export const GET = handler;
export const POST = handler;
export const DELETE = handler;
import handle from "@modelfetch/cloudflare"; // Choose your runtime
import server from "./server"; // Import your server
export default {
fetch: handle(server), // That's it — ModelFetch handles all runtime-specific details
} satisfies ExportedHandler<Env>;
import handle from "@modelfetch/netlify"; // Choose your runtime
import server from "../server.ts"; // Import your server
export default handle(server); // That's it — ModelFetch handles all runtime-specific details
import handle from "@modelfetch/fastly"; // Choose your runtime
import server from "./server"; // Import your server
handle(server); // That's it — ModelFetch handles all runtime-specific details
import handle from "@modelfetch/supabase"; // Choose your runtime
import server from "./server.ts"; // Import your server
handle("mcp-server", server); // That's it — ModelFetch handles all runtime-specific details
import handle from "@modelfetch/gcore"; // Choose your runtime
import server from "./server"; // Import your server
handle(server); // That's it — ModelFetch handles all runtime-specific details
import handle from "@modelfetch/aws-lambda"; // Choose your runtime
import server from "./server"; // Import your server
export const handler: AWSLambda.LambdaFunctionURLHandler = handle(server); // That's it — ModelFetch handles all runtime-specific details
import handle from "@modelfetch/azure-functions"; // Choose your runtime
import server from "./server.js"; // Import your server
handle(server); // That's it — ModelFetch handles all runtime-specific details
That's just a few lines of code to make your McpServer work across all supported platforms.
Every runtime package exports a default handle() function that takes an McpServer instance as its first parameter and handles all runtime-specific details:
import handle from "@modelfetch/node"; // Choose your runtime
import server from "./server"; // Import your server
handle(server); // That's it — ModelFetch handles all runtime-specific details
ModelFetch provides runtime-specific packages that handle tedious platform differences while you focus on building your MCP server capabilities. Each package maintains a consistent API across different runtimes.
| Package | Description | Status |
|---|---|---|
| @modelfetch/node | Run simple MCP servers with Node.js | ✅ Ready |
| @modelfetch/next | Run flexible MCP servers with Next.js | ✅ Ready |
| @modelfetch/bun | Run fast MCP servers with Bun | ✅ Ready |
| @modelfetch/deno | Run secure MCP servers with Deno | ✅ Ready |
| @modelfetch/vercel | Deploy MCP servers to Vercel | ✅ Ready |
| @modelfetch/cloudflare | Deploy MCP servers to Cloudflare | ✅ Ready |
| @modelfetch/netlify | Deploy MCP servers to Netlify | ✅ Ready |
| @modelfetch/fastly | Deploy MCP servers to Fastly | ✅ Ready |
| @modelfetch/supabase | Deploy MCP servers to Supabase | ✅ Ready |
| @modelfetch/gcore | Deploy MCP servers to Gcore | ✅ Ready |
| @modelfetch/aws-lambda | Deploy MCP servers to AWS Lambda | ✅ Ready |
| @modelfetch/azure-functions | Deploy MCP servers to Azure Functions | ✅ Ready |
Clone the repository:
git clone https://github.com/phuctm97/modelfetch.git
cd modelfetch
Install dependencies:
pnpm install
Type check, lint, and build all projects
pnpm exec nx run-many -t typecheck lint build
# Run development server for a project
pnpm exec nx dev modelfetch-website
# Type check all projects
pnpm exec nx run-many -t typecheck
# Lint and auto-fix all projects
pnpm exec nx run-many -t lint --args=--fix
# Build all projects
pnpm exec nx run-many -t build
# Format code
pnpm -w format
ModelFetch is MIT licensed.
Built with ❤️ by Minh-Phuc Tran
Add this to claude_desktop_config.json and restart Claude Desktop.
{
"mcpServers": {
"modelfetch": {
"command": "npx",
"args": []
}
}
}