MCP Mock Server

MCP Mock Server

A zero-code-intrusion mock server for mobile apps that integrates with Charles proxy, allowing dynamic rule management via natural language in Cursor.

Category
访问服务器

README

MCP Mock Server

一个基于 MCP (Model Context Protocol) 的 Mock 服务器,专为移动端应用设计,支持通过 Charles 代理实现零代码侵入的数据 Mock。

特性

  • 零代码侵入: RN 应用只需配置 Charles 代理,无需修改任何业务代码
  • 动态规则管理: 通过 MCP 工具(在 Cursor 中)动态添加/删除 Mock 规则,无需重启服务
  • 自动生成 Charles 配置: 添加 Mock 规则后自动生成 Charles XML 配置文件
  • 多项目支持: 多个项目可同时使用同一个 MCP 服务,各自占用不同端口,互不干扰
  • 数据持久化: 所有 Mock 规则自动保存到文件,重启后自动恢复
  • 自然语言交互: 在 Cursor 中用自然语言描述即可创建 Mock 接口

架构

RN App → Charles Proxy → MCP Mock Server(HTTP 代理)→ 返回 Mock 数据

安装与配置

1. 在 Cursor 中配置 MCP

编辑 ~/.cursor/mcp.json,添加:

{
  "mcpServers": {
    "mi-mock-server": {
      "command": "npx",
      "args": ["-y", "mockserver-mcp-charles"]
    }
  }
}

配置完成后重启 Cursor 或重新加载 MCP 即可使用。

2. 在项目根目录创建配置文件

项目根目录创建 mockCharlesConfig.json

{
  "rulesPath": "_mock-rules/rules.json",
  "charlesTargetDomains": [
    "api.example.com",
    "api-pre.example.com"
  ]
}
字段 必填 说明
rulesPath 推荐 Mock 规则文件存储路径(相对于配置文件目录),建议加入 .gitignore
charlesTargetDomains 必填 生成 Charles 映射时的目标域名列表(线上/预发/测试等)
charlesTargetPort 可选 目标域名端口,默认 443(HTTPS 标准端口,通常不需要填写)
projectPrefix 可选 项目前缀,默认取项目目录名,用于多项目共享代理时区分路由

其余字段(portenableLoggingmaxLogsmockEnabled)均有合理默认值,无需配置。


端口机制

  • 启动时从默认端口(7979)开始自动查找可用端口,不会杀掉其他进程
  • 多个项目各自找到空闲端口,天然隔离、互不影响
  • 启动成功后控制台打印实际地址,生成 Charles 配置时自动使用该端口
┌────────────────────────────────────────────────────────┐
│  Mock HTTP 代理已启动
│  地址:      http://127.0.0.1:7979
│  规则文件:  /path/to/project/_mock-rules/rules.json
└────────────────────────────────────────────────────────┘

多项目支持

多个项目同时使用时,每个项目有独立的 HTTP 代理端口,Charles 映射也各自指向正确端口:

项目A → 监听 7979  →  Charles: api-a.com → localhost:7979
项目B → 监听 7980  →  Charles: api-b.com → localhost:7980

生成 Charles 配置文件时自动使用当前项目实际监听的端口,无需手动修改。


使用方式

在 Cursor 中创建 Mock 接口

直接用自然语言描述:

添加一个 POST 接口 /api/user/info,返回:
{
  "code": 0,
  "data": { "id": 1, "name": "张三" },
  "message": "ok"
}

MCP 服务会自动调用 add_mock_rule 工具创建规则,并生成 Charles 配置文件。

手动生成 Charles 映射文件

在 Cursor 对话框中输入:

生成 Charles 映射文件

生成的 XML 文件位于 _mock-rules/map-remote.xml

导入 Charles 步骤

  1. 打开 Charles → 菜单 ToolsMap Remote...
  2. 点击 Import Settings
  3. 选择 _mock-rules/map-remote.xml
  4. 确认导入,规则立即生效

MCP 工具说明

add_mock_rule — 添加 Mock 规则

参数 类型 必填 说明
url string 接口路径,如 /api/user/info
response object JSON 响应数据
method string HTTP 方法,默认 GET
statusCode number 状态码,默认 200
headers object 自定义响应头
delay number 响应延迟(毫秒)

remove_mock_rule — 删除 Mock 规则

通过 idurl + method 删除。

list_mock_rules — 列出所有规则

generate_charles_config — 生成 Charles 配置

参数 说明
targetDomains 域名数组,不传则从 mockCharlesConfig.json 读取
targetDomain 单个域名(兼容旧用法)
targetPort 目标端口,不传则从配置读取,默认 443

get_request_logs — 查看请求日志

参数 说明
limit 返回条数,默认 100

toggle_mock — 启用/禁用 Mock

参数 说明
enabled true 启用,false 禁用

reload_rules — 重新加载规则文件

手动编辑 rules.json 后调用,无需重启服务。


URL 匹配规则

模式 示例 说明
精确匹配 /api/user/info 只匹配完全相同的路径
单段通配 * /api/user/* 匹配 /api/user/123/api/user/abc
多段通配 ** /api/** 匹配 /api/user/info/api/order/list

数据持久化

规则保存在 rulesPath 指定的文件中(默认 _mock-rules/rules.json):

{
  "rules": [
    {
      "id": "uuid",
      "url": "/api/user/info",
      "method": "GET",
      "response": { "code": 0, "data": {} },
      "statusCode": 200,
      "enabled": true,
      "createdAt": "2024-01-01T00:00:00Z"
    }
  ],
  "version": "1.0.0"
}

建议将 _mock-rules/ 加入 .gitignore,避免 Mock 数据污染代码仓库。


项目结构

mockserver-mcp-charles/
├── src/
│   ├── server.ts       # MCP 服务器主入口 & HTTP 代理启动
│   ├── proxy.ts        # HTTP 代理请求处理
│   ├── rules.ts        # Mock 规则管理
│   ├── tools.ts        # MCP 工具定义与处理器
│   ├── config.ts       # 配置加载与运行时状态
│   ├── charles.ts      # Charles XML 配置生成
│   └── types.ts        # TypeScript 类型定义
└── _mock-rules/        # 运行时生成(建议 .gitignore)
    ├── rules.json      # Mock 规则持久化文件
    └── map-remote.xml  # Charles Map Remote 配置

故障排查

请求没有被 Mock 拦截

  1. 确认 Charles 已启用 Map Remote 且规则已导入
  2. 确认 移动端 应用流量经过 Charles 代理
  3. list_mock_rules 检查规则是否存在
  4. get_request_logs 查看请求日志,确认请求是否到达 Mock 服务

Charles 映射端口不对

重新执行「生成 Charles 映射文件」,配置会自动使用当前实际监听端口,重新导入即可。

规则重启后丢失

检查 rulesPath 配置的路径是否正确,以及该文件是否被意外删除或加入了 .gitignore


许可证

MIT

扩展

后端接口如果使用接口管理平台的话例如YApi Pro,apifox可以扩展通过平台开放api接入数据,从而实现输入链接一键mock(mock质量依赖文档)

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选