返回市场
MCP模拟器

MCP模拟器

作者:Dimirolz10 星标更新:2025-10-29

项目介绍

mcpmock

一个基于Bun + TypeScript的快速原型设计平台,用于模型上下文协议(MCP)服务器
通过一个YAML文件描述你的模拟服务器,运行CLI,服务器(标准I/O或HTTP)将以模拟数据响应。目标是帮助在不构建完整后端的情况下迭代工具形状和响应。

项目状态

  • 单文件YAML配置(examples/basic/mock.yaml)加载到类型化的表示中,并带有清晰的错误信息。
  • CLI现在启动一个模拟MCP服务器:
    • 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,纯字符串也有效)。

发展路线图

  1. 加强HTTP传输(SSE会话、可恢复性、认证助手)。
  2. 提供更丰富的响应脚本选项(多种场景、模板)。
  3. 构建一个配套的MCP客户端CLI来运行脚本交互、记录工具调用,并支持轻量级评估。
  4. 支持大型项目的可选多文件布局。
  5. 打包以供npm分发,并提供编译二进制文件bun build --compile

欢迎贡献、想法和反馈!请随意在examples/中绘制新格式并迭代CLI。***