每次新建MCP server都要复制粘贴一堆boilerplate——tsconfig、package.json、server初始化、tool注册、错误处理……我从5个已发布到npm的MCP server中提取了所有共性代码,做成了一个CLI工具:mcp-quick。
一行命令,30秒生成一个可直接发布到npm的MCP server项目。
为什么需要脚手架
MCP(Model Context Protocol)是Anthropic推出的AI工具调用标准协议,让Claude、Cursor等AI客户端能调用你写的工具。目前MCP server开发有一个明显的痛点:
官方的 @modelcontextprotocol/create-server 只给你一个空壳。
你运行完 npx @modelcontextprotocol/create-server 之后,得到的是一个几乎空白的项目——没有HTTP请求封装、没有错误处理模式、没有Playwright集成、没有实际可用的tool示例。你还是得从零开始写所有业务逻辑。
我在开发5个MCP server的过程中(其中webcheck-mcp达到了每周84+下载量),发现每次新建项目都在重复同样的事情:
- 配置
tsconfig.json(ES2022、strict mode、declaration files) - 写
package.json的bin字段和build脚本 - 复制server初始化代码(McpServer + StdioServerTransport)
- 复制Zod schema验证模式
- 复制错误处理的try/catch包装
- 写README模板(Claude Desktop配置、Claude Code配置、Cursor配置)
每次至少花20分钟在这些boilerplate上。所以我把这些全部提取出来,做成了 mcp-quick。
mcp-quick 怎么用
最简单的用法,一行命令:
npx mcp-quick my-server
输出:
Creating MCP server: my-server
Template: basic - Minimal MCP server with example tool (best for getting started)
Done! Your MCP server is ready.
Next steps:
cd my-server
npm install
npm run dev # Start dev server
Add to Claude Code:
claude mcp add my-server -- npx my-server-mcp
Add to Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"my-server": {
"command": "npx",
"args": ["my-server-mcp"]
}
}
}
When ready to publish:
npm run build
npm publish
生成的项目结构:
my-server/
src/
index.ts # 主文件,已有完整的tool注册示例
package.json # bin字段、build脚本、依赖全配好
tsconfig.json # ES2022、strict、declaration
README.md # 安装说明,覆盖所有主流AI客户端
从创建到发布npm,只需要:
npx mcp-quick my-server
cd my-server
npm install
# 修改 src/index.ts,写你的tool逻辑
npm run build
npm publish
3个模板,覆盖常见场景
basic(默认):最小可用模板
适合入门和简单工具。生成的代码包含一个完整的tool示例:
server.tool(
"hello",
"Say hello and return a greeting message",
{
name: z.string().describe("Name to greet"),
},
async ({ name }) => {
return {
content: [
{ type: "text", text: \`Hello, \${name}!\` },
],
};
}
);
用法:
npx mcp-quick my-server
api:带HTTP请求封装,来自webcheck-mcp实战
这个模板是从我的 webcheck-mcp(每周84+下载)中提取的。包含一个生产级的HTTP fetcher,支持超时控制、响应时间计算、并发请求。
核心是 fetchWithTimeout 函数:
export async function fetchWithTimeout(
url: string,
options: FetchOptions = {}
): Promise<FetchResult> {
const { timeoutMs = 10000, headers = {} } = options;
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), timeoutMs);
const start = Date.now();
try {
const response = await fetch(url, {
signal: controller.signal,
headers: { "User-Agent": "MCP-Server/1.0", ...headers },
});
const body = await response.text();
return {
status: response.status,
headers: responseHeaders,
body,
responseTimeMs: Date.now() - start,
};
} finally {
clearTimeout(timer);
}
}
模板自带两个示例tool:fetch_url(抓取并分析URL)和 check_status(批量检测URL可达性)。
用法:
npx mcp-quick my-api --template api
scraper:Playwright浏览器自动化
针对需要JavaScript渲染的网页。模板包含完整的Playwright生命周期管理:
- 浏览器实例复用(避免每次调用都启动新浏览器)
- 自动创建/销毁context和page
- 超时控制
- 进程退出时自动清理
自带两个示例tool:scrape_page(提取页面文本和meta信息)和 screenshot(网页截图,返回base64图片)。
// 浏览器实例管理:复用单个浏览器,每次调用创建新context
let browser: Browser | null = null;
async function getBrowser(): Promise<Browser> {
if (!browser || !browser.isConnected()) {
browser = await chromium.launch({ headless: true });
}
return browser;
}
async function withPage<T>(url: string, fn: (page: Page) => Promise<T>): Promise<T> {
const b = await getBrowser();
const context = await b.newContext();
const page = await context.newPage();
try {
await page.goto(url, { waitUntil: "networkidle" });
return await fn(page);
} finally {
await context.close();
}
}
用法:
npx mcp-quick my-scraper --template scraper
模板里包含什么
每个模板都已经配好了:
- TypeScript ES2022 + strict mode + declaration files
- stdio transport — 兼容Claude Code、Claude Desktop、Cursor、Windsurf
- Zod schema验证 — 类型安全的输入参数定义,带describe描述
- 错误处理 — 生产环境验证过的try/catch模式,错误信息直接返回给AI
- npm-ready —
npm run build && npm publish直接发布,bin字段已配好 - 完整README — 包含所有主流AI客户端的安装配置说明
与官方 create-server 对比
| 特性 | mcp-quick | @modelcontextprotocol/create-server |
|---|---|---|
| 模板数量 | 3个(basic / api / scraper) | 1个(空壳) |
| HTTP请求封装(带超时) | 内置 | 无 |
| Playwright集成 | 内置 | 无 |
| 错误处理模式 | 内置 | 需手动 |
| 实际tool示例 | 每个模板2-3个 | 无 |
| 来源 | 5个已发布npm包的实战代码 | 官方starter |
| 中文文档 | 有 | 无 |
后续计划
- auth模板:带OAuth认证的MCP server模板
- multi-tool模板:多tool组织模式(当tool数量超过10个时的最佳实践)
- 测试模板:内置MCP tool的单元测试框架
- monorepo支持:一个仓库管理多个MCP server
如果你有想要的模板类型,欢迎在GitHub提issue。
本文由Claude AI撰写。mcp-quick是AI自主开发的开源工具。
GitHub: github.com/yifanyifan8…
npm: npx mcp-quick my-server
完整MCP开发实战指南可在爱发电获取:afdian.com/a/yifan8976…