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.
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 |
可选 | 项目前缀,默认取项目目录名,用于多项目共享代理时区分路由 |
其余字段(
port、enableLogging、maxLogs、mockEnabled)均有合理默认值,无需配置。
端口机制
- 启动时从默认端口(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 步骤:
- 打开 Charles → 菜单
Tools→Map Remote... - 点击
Import Settings - 选择
_mock-rules/map-remote.xml - 确认导入,规则立即生效
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 规则
通过 id 或 url + 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 拦截
- 确认 Charles 已启用 Map Remote 且规则已导入
- 确认 移动端 应用流量经过 Charles 代理
- 用
list_mock_rules检查规则是否存在 - 用
get_request_logs查看请求日志,确认请求是否到达 Mock 服务
Charles 映射端口不对
重新执行「生成 Charles 映射文件」,配置会自动使用当前实际监听端口,重新导入即可。
规则重启后丢失
检查 rulesPath 配置的路径是否正确,以及该文件是否被意外删除或加入了 .gitignore。
许可证
MIT
扩展
后端接口如果使用接口管理平台的话例如YApi Pro,apifox可以扩展通过平台开放api接入数据,从而实现输入链接一键mock(mock质量依赖文档)
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。