basementstudio/xmcp · 上手攻略
- 仓库:basementstudio/xmcp
- 链接:https://github.com/basementstudio/xmcp
- 分类:MCP 框架 / TypeScript
- 作者:Tom
- 更新:2026-10-10
一、是什么
xmcp 是 basement.studio 出品的 TypeScript 框架,专注于快速构建和部署 MCP(Model Context Protocol)服务器。MCP 是 Anthropic 提出的标准化协议,让 AI 助手(如 Claude、ChatGPT)能够调用外部工具和资源;xmcp 的目标是把这一过程变得极度友好——零配置注册、热重载开发、一行命令部署到 Vercel。
v1 于 2026 年发布(采用 MCP SDK v2 / spec 2026-07-28),当前版本 v1.6.0。架构上将编译器(@xmcp-dev/compiler)与运行时(xmcp)分离,开发依赖仅在本地需要,生产构建产物完全自包含。
核心定位:对比直接用 @modelcontextprotocol/typescript-sdk 手工注册所有 tool/prompt/resource,xmcp 用文件系统路由自动完成注册,开发者只需写业务代码。
二、解决什么问题
手动创建 MCP 服务器的痛点: - 每个 tool/prompt/resource 都要手工编写注册代码,文件多了难以维护 - 没有热重载,改一行要重启整个服务 - TypeScript 类型安全全靠自己写 Zod schema - 部署时需要自己处理 transport(HTTP/STDIO)
xmcp 解决以上全部:文件路由自动注册、热重载实时反馈、Zod 验证内置、支持 Next.js/Express 适配器、Vercel 零配置部署。
三、快速安装
前置要求
- Node.js ≥ 22
- macOS / Windows / Linux
方式一:从零脚手架(新项目)
npx create-xmcp-app@latest
交互式引导会依次询问:
1. 项目名称(生成目录)
2. 模板选择:Default(标准 MCP 服务器)或 MCP App(React 组件嵌入)
3. 包管理器:npm / yarn / pnpm / bun
4. Transport:HTTP(服务端)或 STDIO(本地)
5. 组件注册:Tools / Prompts / Resources(可多选)
方式二:初始化已有项目(Next.js)
cd your-nextjs-project
npx init-xmcp@latest
# 引导指定 tools/prompts/resources/route 目录路径
然后更新 package.json scripts:
{
"scripts": {
"dev": "xmcp dev & next dev",
"build": "xmcp build && next build"
}
}
Next.js 路由文件(app/mcp/route.ts):
import { xmcpHandler } from "@xmcp/adapter";
export { xmcpHandler as GET, xmcpHandler as POST };
方式三:初始化已有项目(Express)
// 初始化同上,然后添加路由
import { xmcpHandler } from "path/to/.xmcp/adapter";
app.get("/mcp", xmcpHandler);
app.post("/mcp", xmcpHandler);
手动安装(任意项目)
# npm
npm i xmcp zod@^3.25.76 && npm i -D @xmcp-dev/compiler
# pnpm
pnpm add xmcp zod@^3.25.76 && pnpm add -D @xmcp-dev/compiler
# bun
bun add xmcp zod@^3.25.76 && bun add -D @xmcp-dev/compiler
手动项目需手动配置 xmcp.config.ts 中的 http: true(HTTP transport)或 stdio: true(STDIO transport)。
四、核心用法
文件系统路由自动注册
项目创建后,目录结构如下(以 STDIO 模式为例):
my-xmcp-app/
├── tools/ # 自动注册为 MCP tools
│ └── hello.ts
├── prompts/ # 自动注册为 MCP prompts
│ └── greet.md
├── resources/ # 自动注册为 MCP resources
│ └── config.json
├── xmcp.config.ts
└── package.json
tools 示例(会自动从文件内容推断 schema):
// tools/hello.ts
import { tool } from "xmcp";
export const hello = tool(
"hello",
"Greet a user by name",
{
name: z.string().describe("Name of the person to greet"),
language: z.enum(["en", "zh", "es"]).default("en"),
},
async ({ name, language }) => {
const greetings = { en: `Hello, ${name}!`, zh: `你好,${name}!`, es: `¡Hola, ${name}!` };
return { message: greetings[language] };
}
);
⚠️ 注意:schema 必须使用 Zod 定义(v3.25.76+),版本不匹配会导致构建失败。
开发与构建
# 开发模式(热重载)
npm run dev
# 生产构建
npm run build
# STDIO 模式启动
node dist/stdio.js
# HTTP 模式启动
node dist/http.js
构建产物在 dist/ 目录,输出格式由 package.json 的 "type": "module" 决定——有该字段输出 ESM,否则输出 CommonJS。
Vercel 零配置部署
npm i -g vercel
vc deploy
xmcp 与 Vercel 无缝集成,一条命令完成构建和上线。
认证中间件(HTTP 模式)
import { xmcpHandler, withAuth, VerifyToken } from "@xmcp/adapter";
const verifyToken: VerifyToken = async (req, bearerToken) => {
if (!bearerToken) return undefined;
const isValid = bearerToken.startsWith("__TEST_VALUE__"); // 替换为真实验证
if (!isValid) return undefined;
return {
token: bearerToken,
scopes: ["read:messages", "write:messages"],
clientId: "example-client",
extra: { userId: "user-123" },
};
};
const handler = withAuth(xmcpHandler, {
verifyToken,
required: true,
requiredScopes: ["read:messages"],
resourceMetadataPath: "/.well-known/oauth-protected-resource",
});
export { handler as GET, handler as POST };
⚠️ 注意:
middleware.ts和xmcp/headers在 Next.js 适配器中不支持(Next.js 本身已有这些功能);Express 适配器不支持middleware.ts。
Next.js 的 tsconfig 路径映射
构建后需要手动配置路径映射(这是目前 DX 上的一个小坑):
// tsconfig.json
{
"compilerOptions": {
"paths": {
"@xmcp/*": ["./.xmcp/*"]
}
}
}
五、典型适用场景
| 场景 | 说明 |
|---|---|
| AI 助手工具扩展 | 为 Claude/ChatGPT 等 AI 提供自定义 MCP 工具,让 AI 能够调用内部 API、数据库、文件系统等 |
| 多工具 MCP 服务器 | 需要同时暴露数十个工具的场景,文件路由自动管理避免注册代码膨胀 |
| Next.js/Express 应用扩展 | 已有 Web 应用,想在其上叠加 MCP 接口,供 AI 调用 |
| Vercel 托管 MCP 服务 | 不想运维服务器,用 Vercel 零配置部署 MCP 服务 |
| 内部 AI 工作流 | 企业内部工具链(审批、查询、报表)通过 MCP 对接 AI 助手 |
六、坑与注意
- Node.js 版本:必须 ≥ 22,老版本不兼容 ESM 模块格式(xmcp 默认输出 ESM)。
- Zod 版本锁定:生产环境建议锁定
zod@^3.25.76,过高或过低版本可能出现 schema 解析差异。 - 编译器版本同步:
@xmcp-dev/compiler必须与xmcp主包版本一致;运行xmcp dev报 "compiler missing" 时执行npm i -D @xmcp-dev/compiler。 - Next.js 路径映射:初次集成 Next.js 时,
xmcp build生成.xmcp/adapter后,TypeScript 不会自动解析@xmcp/*路径,需手动添加 tsconfig 映射(如上节)。 - Transport 配置匹配:
xmcp.config.ts中配置的 transport 必须与package.json中start脚本的文件名一致(dist/stdio.jsvsdist/http.js)。 - 认证仅 HTTP 模式:STDIO 模式不支持
withAuth,因为 STDIO 是进程间通信而非 HTTP。 - 热重载不触发构建:修改
xmcp.config.ts等配置文件后需要手动xmcp build,仅重启 dev server 无效。
七、与同类对比
| 特性 | xmcp | @modelcontextprotocol/typescript-sdk | mcp-framework |
|---|---|---|---|
| 上手难度 | ⭐ 极低(脚手架+路由) | ⭐⭐⭐⭐(手写注册) | ⭐⭐⭐(类结构) |
| 文件系统路由 | ✅ 原生 | ❌ 手动 | ✅ 目录扫描 |
| 热重载 | ✅ 内置 | ❌ 需自己配 | 部分 |
| Next.js/Express 适配器 | ✅ 原生 | ❌ | ❌ |
| Vercel 零配置部署 | ✅ | ❌ | ❌ |
| MCP spec 版本 | 2026-07-28(SDK v2) | 跟随官方 | 2025-11-25 |
| 适合场景 | 快速原型/生产部署 | 深度定制/SDK 研究 | 中等复杂度 |
⚠️ 版本说明:xmcp 的 MCP spec 版本为"2026-07-28",来自 GitHub 搜索结果和官方文档(xmcp.dev 首页标注 v1 采用 MCP SDK v2);mcp-framework.com 标注 2025-11-25。两个框架各自引用的 spec 版本可能存在差异,建议以各自官方文档实时版本为准。
八、一句话推荐结论
如果你想快速把业务工具暴露为 MCP 服务,尤其已有 Next.js/Express 项目或打算部署到 Vercel,xmcp 是目前 TypeScript 生态里最低门槛的选择。
来源
- GitHub README:https://github.com/basementstudio/xmcp
- 官方文档(Getting Started):https://xmcp.dev/docs/getting-started/installation
- Next.js 适配器文档:https://xmcp.dev/docs/adapters/nextjs
- Express 适配器文档:https://xmcp.dev/docs/adapters/express
- xmcp.dev 首页(v1 发布信息):https://xmcp.dev
- 搜索补充:Tavily web search(xmcp v1 版本、mcp-framework 对比)