Vercel now supports xmcp , a framework for building and shipping MCP servers with TypeScript, with zero-configuration.
xmcp uses file-based routing to create tools for your MCP server.
my-project/
βββ src/
β βββ middleware.ts
β βββ tools/
β βββ greet.ts
β βββ search.ts
βββ package.json
βββ tsconfig.json
βββ xmcp.config.ts
File-based routing using xmcp
Once you've created a file for your tool, you can use a default export in a way that feels familiar to many other file-based routing frameworks. Below, we create a "greeting" tool.
// src/tools/greet.ts
import { z } from "zod" ;
import { type InferSchema } from "xmcp" ;
export const schema = {
name : z . string ( ) . describe ( "The name of the user to greet" ) ,
} ;
// Tool metadata
export const metadata = {
name : "greet" ,
description : "Greet the user" ,
} ;
export default async function greet ( { name } : InferSchema < typeof schema > ) {
const result = ` Hello, ${ name } !β¦