Build and ship MCP servers with the code you already know. Give AI applications access to your tools, data, and workflows. Write TypeScript functions; xmcp handles the protocol, validation, and transport.
Create a new xmcp app:
npx create-xmcp-app@latestOr add xmcp to an existing project:
npx init-xmcp@latestA tool is a file. Export a schema, metadata, and a function, and xmcp registers it:
// 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"),
};
export const metadata = {
name: "greet",
description: "Greet the user",
};
export default async function greet({ name }: InferSchema<typeof schema>) {
return `Hello, ${name}!`;
}⊹ File system routing - Tools, prompts, and resources register automatically from their directories, with zero configuration
⊹ Middlewares - Add authentication, logging, rate limits, or custom logic to every request
⊹ Transports - Serve over HTTP or STDIO from the same code
⊹ Integrations - Authentication with Better Auth, Clerk, Auth0, WorkOS, Descope, Scalekit and Supabase; monetization with Polar, Commet and x402
⊹ Adapters - Run inside Next.js, Express, NestJS, Fastify, Hono, TanStack Start, Nuxt, SvelteKit, React Router or Astro
⊹ MCP Apps - Ship interactive React widgets alongside your tools
⊹ Deploy anywhere - Vercel, Cloudflare, Alpic, Replit, Railway, Render, or any Node.js host
⊹ Hot reloading - Instant feedback while you develop
⊹ Visit xmcp.dev to learn more about the project.
⊹ Read the documentation for guides and API reference.
⊹ Start from a template.
If you believe you have found a security vulnerability, we encourage you to let us know right away.
We will investigate all legitimate reports and do our best to quickly fix the problem.
Please report any vulnerabilities in our open source repositories to security@xmcp.dev.