一个基于Bun + TypeScript的快速原型设计平台,用于模型上下文协议(MCP)服务器。
通过一个YAML文件描述你的模拟服务器,运行CLI,服务器(标准I/O或HTTP)将以模拟数据响应。目标是帮助在不构建完整后端的情况下迭代工具形状和响应。
examples/basic/mock.yaml)加载到类型化的表示中,并带有清晰的错误信息。transport: stdio(默认)通过stdin/stdout连接以支持代理集成。transport: http 启动一个由StreamableHTTPServerTransport支持的Express服务器。response作为文本(以及适用的结构化内容)。一旦该包发布到npm,你可以安装或立即运行它:
npm install -g mcpmock
# 或者无需安装直接运行
npx mcpmock ./examples/basic/mock.yaml
指向CLI任意项目的YAML文件:
npx mcpmock path/to/server.yaml
transport: stdio(默认)通过stdin/stdout连接以支持代理集成。transport: http 启动一个由StreamableHTTPServerTransport支持的Express服务器。Mcp-Session-Id),因此浏览器如MCP Inspector可以直接连接。如果配置中有错误,CLI会打印可读的错误消息并标注路径,以便编码代理(和人类)可以快速修复它们。
要在本地工作于CLI:
bun install
bun run build
node dist/index.js examples/basic/mock.yaml
构建步骤会生成Node可用的捆绑包(dist/index.js)和TypeScript声明,这些在发布到npm时会被使用。
所有配置都位于一个YAML文件中。示例(examples/basic/mock.yaml):
server:
name: demo-mock
transport: stdio
description: 最小的模拟MCP服务器示例
tools:
- name: echo
description: 返回提供的消息
input_schema:
type: object
properties:
message:
type: string
required:
- message
response:
message: 默认回声
在response值中,你可以使用{{ args.* }}表达式引用工具参数。字符串会在调用时进行插值,并且可以在嵌套对象和数组中使用。例如:
tools:
- name: echo
response:
message: "你说的是:{{ args.message }}"
如果引用的参数缺失,工具调用会引发错误,以便更容易调试。
关键规则:
name。input_schema遵循JSON Schema规范(目前专注于对象、字符串、数字、布尔值和数组的子集)。response可以是任何JSON值(如果你想使用Markdown,纯字符串也有效)。bun build --compile。欢迎贡献、想法和反馈!请随意在examples/中绘制新格式并迭代CLI。***