CNWei cfcebbe300 feat(mcp): 实现HTTP统一方案并添加MCP文档
- 将MCP服务和Mock API合并到单个HTTP服务器(8080端口)
- 添加POST /mcp端点,使用无状态StreamableHttpService
- 新增docs/mcp-implementation.md文档
2026-03-29 22:30:29 +08:00
2025-12-25 13:56:11 +08:00

mock-server

基于 Rust/Axum 的配置驱动型 Mock 服务,支持 YAML 配置、请求匹配、热重载、延迟响应、大文件流式返回等特性。

特性

  • 配置驱动YAML 定义 API 行为,无需修改代码
  • 热重载mocks/*.yaml 变更自动生效,无需重启服务
  • 高性能:基于 Rust 异步运行时,路径首段哈希索引 O(1) 匹配
  • 低内存:大响应体支持 file:// 协议从磁盘流式读取
  • 请求匹配:支持 method、path、headers、query_params、body 多维度匹配

快速开始

1. 安装依赖

确保已安装 Rust 工具链:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

2. 构建与运行

cargo build              # 构建项目
cargo run                # 启动服务 http://127.0.0.1:8080
cargo test               # 运行所有测试
cargo test <pattern>     # 运行匹配的测试(如 cargo test router
cargo clippy             # 代码检查
cargo fmt                # 格式化代码

文件结构

src/
├── main.rs      # 入口热重载监听Axum 路由配置
├── config.rs    # 数据结构定义MockRule, RequestMatcher 等)
├── loader.rs    # YAML 解析,目录扫描
├── router.rs    # 路径首段索引,匹配逻辑
└── handler.rs   # 统一请求处理器,文件流式响应

tests/           # 集成测试(每个模块一个测试文件)
mocks/           # YAML Mock 配置文件

Mock 配置

详细配置规范请参考 .claude/rules/mock-spec.md

未来计划

1. 动态参数与模板响应

支持路径参数捕获(如 /api/users/{id})和响应模板,可在响应中引用请求参数:

# 请求: GET /api/users/123
# 响应: { "id": "123", "name": "User 123" }

2. HTTPS 支持

内置 TLS/SSL 支持,提供安全的 HTTPS 服务。

3. 可视化管理界面

  • TUI终端界面:基于 Ratatui 的交互式终端管理
  • GUI图形界面Web Dashboard 或桌面应用,可视化管理 Mock 规则

此功能需要深入讨论,欢迎提出建议和需求

许可证

MIT

Description
基于Rust/Axum的配置驱动型Mock服务,支持YAML配置、请求匹配、延迟响应、大文件流式返回等特性。
Readme MIT 1.7 MiB
Languages
Rust 100%