Skip to content

phuctm97/modelfetch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ModelFetch

ModelFetch is a delightful TypeScript/JavaScript SDK for building and deploying MCP servers anywhere TypeScript/JavaScript runs.

Release License Documentation


🚀 Features

  • Multi-Runtime: Write once, run anywhere: Node.js, Next.js, Bun, Deno, Vercel, Cloudflare, Netlify, Fastly, Supabase, Gcore, AWS Lambda, and Azure Functions
  • Official SDK: Built on top of the official MCP TypeScript SDK to avoid lock-in, guarantee long-term support, and ensure up-to-date implementation
  • Live Reload: Development server with automatic reloading
  • MCP Inspector: Built-in integration for testing and debugging
  • Modular Design: Platform-specific package for optimal performance

🏁 Quick Start

Get started in seconds using our create-modelfetch CLI:

npx -y create-modelfetch@latest

🔧 How It Works

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;

Run it anywhere with ModelFetch's handle() function

Node.js

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

Next.js

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;

Bun

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

Deno

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

Vercel

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;

Cloudflare

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>;

Netlify

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

Fastly

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

Supabase

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

Gcore

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

AWS Lambda

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

Azure Functions

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.

⚡ The handle() Function

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

📦 Runtimes

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 lightning-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

🛠️ Development

Prerequisites

  • Node.js 22+
  • pnpm 10+

Initial Steps

  1. Clone the repository:

    git clone https://github.com/phuctm97/modelfetch.git
    cd modelfetch
  2. Install dependencies:

    pnpm install
  3. Type check, lint, and build all projects

    pnpm exec nx run-many -t typecheck lint build

Common Commands

# 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

📚 Documentation

📄 License

ModelFetch is MIT licensed.


Built with ❤️ by Minh-Phuc Tran