Skip to content
VercelLogotypeVercelLogotype
LoginSign Up

xmcp boilerplate

An MCP framework with file-based routing

DeployView Demo

xmcp Application

This project was created with create-xmcp-app.

Getting Started

First, run the development server:

npm run dev
# or
yarn dev
# or
pnpm dev

This will start the MCP server with the selected transport method.

Project Structure

This project uses the structured approach where tools, prompts, and resources are automatically discovered from their respective directories:

  • src/tools - Tool definitions
  • src/prompts - Prompt templates
  • src/resources - Resource handlers

Tools

Each tool is defined in its own file with the following structure:

import { z } from 'zod'
import { type InferSchema, type ToolMetadata } from 'xmcp'
export const schema = {
name: z.string().describe('The name of the user to greet'),
}
export const metadata: ToolMetadata = {
name: 'greet',
description: 'Greet the user',
annotations: {
title: 'Greet the user',
readOnlyHint: true,
destructiveHint: false,
idempotentHint: true,
},
}
export default function greet({ name }: InferSchema<typeof schema>) {
return `Hello, ${name}!`
}

Prompts

Prompts are template definitions for AI interactions:

import { z } from 'zod'
import { type InferSchema, type PromptMetadata } from 'xmcp'
export const schema = {
code: z.string().describe('The code to review'),
}
export const metadata: PromptMetadata = {
name: 'review-code',
title: 'Review Code',
description: 'Review code for best practices and potential issues',
role: 'user',
}
export default function reviewCode({ code }: InferSchema<typeof schema>) {
return `Please review this code: ${code}`
}

Resources

Resources provide data or content with URI-based access:

import { z } from 'zod'
import { type ResourceMetadata, type InferSchema } from 'xmcp'
export const schema = {
userId: z.string().describe('The ID of the user'),
}
export const metadata: ResourceMetadata = {
name: 'user-profile',
title: 'User Profile',
description: 'User profile information',
}
export default function handler({ userId }: InferSchema<typeof schema>) {
return `Profile data for user ${userId}`
}

Adding New Components

Adding New Tools

To add a new tool:

  1. Create a new .ts file in the src/tools directory
  2. Export a schema object defining the tool parameters using Zod
  3. Export a metadata object with tool information
  4. Export a default function that implements the tool logic

Adding New Prompts

To add a new prompt:

  1. Create a new .ts file in the src/prompts directory
  2. Export a schema object defining the prompt parameters using Zod
  3. Export a metadata object with prompt information and role
  4. Export a default function that returns the prompt text

Adding New Resources

To add a new resource:

  1. Create a new .ts file in the src/resources directory
  2. Use folder structure to define the URI (e.g., (users)/[userId]/profile.ts → users://{userId}/profile)
  3. Export a schema object for dynamic parameters (optional for static resources)
  4. Export a metadata object with resource information
  5. Export a default function that returns the resource content

Building for Production

To build your project for production:

pnpm build

This will compile your TypeScript code and output it to the dist directory.

Running the Server

You can run the server for the transport built with:

  • HTTP: node dist/http.js
  • STDIO: node dist/stdio.js

Given the selected transport method, you will have a custom start script added to the package.json file.

For HTTP:

pnpm start-http

For STDIO:

pnpm start-stdio

Learn More

  • xmcp Documentation
GitHub
Ownervercel
Repositoryexamples
LicenseView License
Use Cases
Backend
Stack
Other
None

Related Templates

MCP with Vercel Functions

Run an Model Context Protocol (MCP) server on Vercel.
MCP with Vercel Functions thumbnail

Agent Stack

  • AI SDK
  • AI Gateway
  • Sandbox
  • Workflows
  • EveNew
  • ConnectNew

Core Platform

  • CI/CD
  • Content Delivery
  • Fluid Compute
  • Observability

Security

  • Platform Security
  • WAF
  • Bot Management
  • Bot ID

Tools

  • Vercel DropNew
  • Vercel Agent
  • Vercel PluginNew
  • Next.js
  • Domains
  • v0

Frameworks

  • Nuxt
  • SvelteKit
  • Nitro
  • Turborepo
  • Tanstack Start
  • FastAPI
  • xmcp
  • All frameworks

SDKs

  • Vercel SDK
  • Workflow SDKNew
  • Flags SDK
  • Chat SDKNew
  • Queues SDKNew
  • Streamdown

Build

  • AI Apps
  • Web Apps
  • Marketing Sites
  • Platforms
  • Commerce
  • Platform Engineers
  • Design Engineers

Learn

  • Docs
  • Blog
  • Changelog
  • Knowledge Base
  • Academy
  • Articles
  • Community

Explore

  • Customers
  • Marketplace
  • Templates
  • Partner Finder
  • Vercel + AWS

Company

  • About
  • Careers
  • Press
  • Events
  • Startups
  • Shipped on Vercel
  • Open Source Program
  • Enterprise
  • Pricing
  • Help

Legal & Trust

  • Privacy Policy
  • Terms of Service
  • Cookie Policy
  • DPA
  • Acceptable Use Policy
  • Legal (all documents)
  • Trust Center
  • Status

Social

  • GitHub
  • X
  • LinkedIn
  • YouTube
  • Instagram
  • VercelVercel
Agent Stack
  • AI SDK
  • AI Gateway
  • Sandbox
  • Workflows
  • Eve
Core Platform
  • Security
  • Content Delivery
  • Fluid Compute
  • Observability
  • CI/CD
Tools
  • Next.js
  • Vercel Agent
  • Vercel Plugin
  • Domains
  • v0
Learn
  • Docs
  • About
  • Blog
  • Changelog
  • Knowledge Base
Build
  • AI Apps
  • Web Apps
  • Marketing Sites
  • Platforms
  • Commerce
Explore
  • Customers
  • Marketplace
  • Partner Finder
  • AWS
  • Community
EnterprisePricing
Contact
Log InSign Up
Dashboard

Products

Agent Stack

  • AI SDK
  • AI Gateway
  • Sandbox
  • Workflows
  • Eve

Core Platform

  • Security
  • Content Delivery
  • Fluid Compute
  • Observability
  • CI/CD

Tools

  • Next.js
  • Vercel Agent
  • Vercel Plugin
  • Domains
  • v0
Resources

Learn

  • Docs
  • About
  • Blog
  • Changelog
  • Knowledge Base

Build

  • AI Apps
  • Web Apps
  • Marketing Sites
  • Platforms
  • Commerce

Explore

  • Customers
  • Marketplace
  • Partner Finder
  • AWS
  • Community
Enterprise
Pricing
Sign UpLog In
Contact
DeployView Demo

Loading status…

Select a display theme: