跳到内容

MCP 服务器样板生成器

将 Anthropic 的 Model Context Protocol (MCP) Server 通过在结构化表单中定义 tools / resources / prompts,转换为 TypeScript / Python 脚手架代码。可在 Claude Desktop / Claude Code / Cursor 的 MCP 客户端中直接使用(stdio 传输格式)。

完全免费 无需注册 浏览器内完成 即刻下载 5 种语言 深色模式

⚠ MCP SDK 活跃更新。生成代码:TS SDK ^1.0 / Python SDK >=1.0 。最新规范: modelcontextprotocol.io

3 格式转换: JSON Schema → Tool Use →

⚡ 预设

🔧 Tools (LLM 调用的函数)

📚 Resources (只读数据)

💬 Prompts (可重用模板)


        

💡 设置步骤

  1. "全部 zip"
  2. 解压并执行「依赖安装」(npm install / pip install -r requirements.txt)
  3. 将「Claude config」添加到 ~/Library/Application Support/Claude/claude_desktop_config.json
  4. 重启 Claude 即可

📖 常见的坑

在表单里定义 tools / resources / prompts,即可输出 TypeScript 或 Python 版的 Model Context Protocol 服务器骨架(stdio transport),其形态可直接注册到 Claude Desktop、Claude Code、Cursor 等 MCP 客户端。处理全部在浏览器内完成。生成的只是骨架——每个工具的具体实现仍需你自己编写而在 MCP 上卡住的地方,往往不在代码内部,而在「客户端与服务器的边界」上:进程启动、标准输入输出、环境变量。下面讲的就是这三处。

情形 会发生什么 怎么处理
往标准输出多写一行就会崩 在 stdio transport 下,标准输出本身就是协议的通信通道——它假定其中只流动 JSON-RPC 消息。因此,只要写了一次 console.log()print(),异物就会混进帧的中间,客户端的解析器随即崩溃。麻烦之处在于报错信息与真正原因毫无关系——你会看到「服务器无法连接」「意外的 token」「已断开」这类完全指不出原因的提示而且未必只有你自己写的 console.log 才是元凶——依赖库启动时打印的警告、包管理器的更新通知、shell 初始化脚本的输出,统统会汇入同一条通道。 请把所有日志输出到标准错误。TypeScript 用 console.error(),Python 用 print(..., file=sys.stderr)logging.basicConfig(stream=sys.stderr)——协议不使用 stderr,因此写多少都安全,而且依然会出现在客户端日志里。团队开发时,请用 lint 禁掉 console.log(ESLint 的 no-console 配合 allow: ['error', 'warn'])——最常见的情形,就是有人调试时随手加了一句,忘了删就提交了记住排查步骤也能省时间在终端里直接启动服务器,用眼睛看标准输出上有没有出现非 JSON 的内容——那里出现的东西,就是原因本身
description 实质上就是提示词 模型判断要不要调用某个工具、传哪些参数所依据的材料,只有工具名、description 以及各参数的说明——它完全看不到你的实现代码。因此若把说明写成「获取数据」这种,模型就无从判断何时该调用,结果是该用时不用、不相干时乱用。第二个失败点是工具数量把二十个名字相近的工具排在一起,模型就容易选错。而且返回值同样是设计对象——把巨大的 JSON 原样返回,既烧光了上下文,又让模型找不到真正需要的那部分MCP 服务器的品质,取决于「措辞」多过取决于代码。 description 请按「何时使用、何时不用」来写,而不是「它做什么」。例如「当用户询问某个具体订单的配送状态时使用;仅在已知订单 ID 时使用;不要用于商品搜索」——边界写得越明确,选择的准确度就越高参数说明里请放上格式示例——只要写上「ISO 8601 日期(例:2025-03-04)」,格式错误几乎就消失了。工具要少,名字彼此不要混淆不要同时提供 get_userfetch_user返回值请做成摘要,只有确实需要细节时才让它发起第二次调用——一开始就内建分页与 limit,就不必日后返工重做
在终端里能跑,从客户端却启动不了 MCP 客户端会把你的服务器作为子进程启动,而那个进程的环境与你的终端并不相同。若由 GUI 应用启动,.bashrc.zshrc 不会被读取,PATH 是最小集。结果就是,nvm、pyenv、asdf、volta 等版本管理工具注入的 PATH 并不存在,连 nodepython 本身都找不到——报错只有 spawn ENOENT 一行。环境变量同样不会被继承,因此export 了 API 密钥后验证通过的服务器,由客户端启动时会认证失败当前工作目录也不是你以为的那个——用相对路径读取的配置文件将无法找到 请在客户端配置里写解释器的绝对路径。which node / which python3 的结果原样填进 command——如果你在用版本管理工具,这基本上是必需的环境变量请通过客户端配置的 env 键显式传入"env": {"API_KEY": "..."} )——若服务器端设计为读取 .env,那个路径也请写成绝对路径读取文件时,请以 __dirname(TypeScript)或 Path(__file__).parent(Python)为基点,不要依赖当前工作目录。另外,一出问题请先打开客户端的日志——你写到 stderr 的内容都汇集在那里,原因通常就在第一行

MCP 服务器是一个以你的权限运行的程序。它能读写文件、访问网络、执行命令——而决定要不要调用它的,是一个正在读取外部文本的模型也就是说,「模型读到的内容」有可能间接诱导工具调用(提示注入)。破坏性操作请不要作为工具公开——删除、发送、支付、部署这类不可逆的操作,原则上应设计为需要人工确认把只读工具与写入工具拆成不同的服务器同样有效。在实现层面,路径参数必须归一化,并验证其解析结果落在允许的目录之内(防止用连串 ../ 逃逸出去),执行命令时请以数组形式传递参数。最后,MCP SDK 更新活跃——生成的代码只是起点,实际 API 请以 modelcontextprotocol.io 的最新版本为准。

📖 使用方法

  1. 1
    选预设 / 从零
    预设或手动
  2. 2
    语言 / 设置
    TS / Python
  3. 3
    zip 下载并运行
    下载 → 安装 → 配置

❓ 常见问题

MCP 是什么?
Anthropic 的 MCP
stdio 与 HTTP?
stdio = 本地, HTTP = 远程
区别?
Tools/Resources/Prompts
🐛 此工具出现问题了吗?

免费、无需注册。仅提供复现步骤也有帮助。报告将直接发送给运营者并用于改进。

※ 为复现问题,浏览器信息 (UA / 屏幕 / 语言 / URL) 将自动发送