HTTP流量代理工具

mitmproxy MCP Server是一个将mitmproxy转化为AI代理工具的服务,允许LLM实时检查、修改和重放HTTP/HTTPS流量,适用于API逆向工程、安全测试和流量拦截等场景。

  • by snapspecter
  • Python
  • 本地部署
  • 16 星标
  • 更新于
在 GitHub 查看 snapspecter/mitmproxy-mcp

使用说明

mitmproxy MCP服务器

一个模型上下文协议(MCP)服务器,将mitmproxy转换为AI代理的强大工具集。这允许LLM(如Claude、GPT-4或本地模型)实时检查、修改和重放HTTP/HTTPS流量。

此版本中的新功能(有趣的东西)

这个项目已经超越了简单的捕捉+回放。您现在可以:

  • 快速搜索流量 按域/方法/正文进行筛选。
  • 从响应中提取数据 使用JSONPath或CSS选择器。
  • 使用会话变量 从一个响应中获取令牌,并在以后的回放中重用它们。
  • 进行轻量级模糊训练 针对查询参数或JSON正文字段进行快速DAST检查。
  • 重构API模式 并从捕获的流量中导出OpenAPI风格的规范。
  • 检测身份验证模式 (承载器/JWT/API密钥/会话cookie/CSRF/OAuth提示)。
  • 生成起动机刮片代码 从实际捕获的流量中。

为什么要用这个?

标准的“网络搜索”或“获取”工具是无状态的,很容易被检测到。mitmproxy mcp提供:

  • 深度调试:代理可以检查完整的请求/响应周期(头、有效负载、Cookie),以确定前端失败的原因或API返回 4xx/500 错误。
  • API逆向工程:让LLM观察未记录的内部API,绘制JSON模式,并自动生成客户端库或文档。
  • 自动化安全测试:通过允许代理将有效载荷注入特定参数并分析响应,执行DAST(动态应用程序安全测试)。
  • 实时监听:动态修改流量:注入标头、模拟测试响应或阻止跟踪像素以减少噪声。
  • 隐形回放:用途 curl-cffi 模仿Chrome/Safari TLS指纹,绕过标准Python库触发的基本反机器人措施。

主要特点

  • 生命周期控制:直接从LLM启动和停止mitmproxy实例。
  • 深层检测:捕获完整的请求/响应周期,包括标头、正文和时间。
  • 流量搜索和过滤:按域确定范围,然后按查询/方法搜索流,这样上下文就保持干净。
  • 主动拦截:注入标头、通过正则表达式替换正文内容或阻止请求的动态规则。
  • 隐形回放:使用以下命令重新执行流程 curl-cffi 以模拟现代浏览器TLS指纹(例如Chrome)。
  • 会话感知工作流:提取动态值(如CSRF令牌)并将其重新注入重放的流量中。
  • 响应数据提取:通过CSS选择器和JSONPath从HTML/JSON响应中提取结构化值。
  • API发现:将相似的端点分组,标识路径/查询参数,并导出OpenAPI JSON。
  • 安全侦察助手:检测常见的身份验证模式并运行目标模糊有效载荷。
  • 刮刀自举:生成可执行文件 curl-cffi 来自观察到的流量的自动化代码。

快速启动

选项1:使用 uvx (推荐)

将此添加到您的MCP客户端配置中(例如,Claude Desktop、Cursor或AntiGravity):

{
  "mcpServers": {
    "mitmproxy-mcp": {
      "command": "uvx",
      "args": ["mitmproxy-mcp"]
    }
  }
}

选项2:来自克隆存储库

如果要从本地克隆运行(对于开发或测试未发布的更改很有用):

git clone https://github.com/snapspecter/mitmproxy-mcp.git

然后将此添加到MCP客户端配置中,将路径替换为克隆位置:

{
  "mcpServers": {
    "mitmproxy-mcp": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mitmproxy-mcp", "mitmproxy-mcp"]
    }
  }
}

安装

选项1:全局安装(带 uv)

uv tool install mitmproxy-mcp

选项2:Docker(隔离环境)

# Build and run
docker build -t mitmproxy-mcp .
docker run -p 8080:8080 mitmproxy-mcp

选项3:手动安装Pip

python -m venv venv
source venv/bin/activate
pip install mitmproxy-mcp

可用工具

生命周期和配置

  • start_proxy(port=8080):启动mitmproxy服务器。
  • stop_proxy():关闭代理。
  • set_scope(allowed_domains):过滤记录的流量(例如。, ["api.github.com", "example.com"]).
  • list_tools():返回所有公开的MCP工具和输入模式。

检查

  • get_traffic_summary(limit=20):返回最近的网络流列表。
  • inspect_flow(flow_id):提供完整的细节和 curl 等效于特定流量。
  • search_traffic(query, domain, method, limit=50):按关键字/域/方法过滤捕获的流量。
  • clear_traffic():清除持续的交通历史记录。

修改和拦截

  • add_interception_rule(rule_id, action_type, ...):
  • action_type: inject_header, replace_body,或 block.
  • phase: request 或 response.
  • set_global_header(key, value):在每个请求中注入一个标头。
  • remove_global_header(key):删除以前注入的全局标头。
  • list_rules():显示当前活动的侦听规则。
  • clear_rules():刷新所有活动拦截规则。

回放

  • replay_flow(flow_id, method, headers_json, body):使用浏览器级模拟重新发送带有修改的请求。

提取和会话变量

  • extract_from_flow(flow_id, json_path=None, css_selector=None):从捕获的响应体中提取值。
  • set_session_variable(name, value):手动设置会话变量。
  • extract_session_variable(name, flow_id, regex_pattern, group_index=1):从响应体中提取并保存变量。

安全与API分析

  • fuzz_endpoint(flow_id, target_param, param_type, payload_category, timeout=10.0):通过有效载荷替换进行回放,并报告异常情况。
  • get_api_patterns(domain=None, limit=50):将捕获的流量群集到端点模式中。
  • export_openapi_spec(domain=None, limit=50):根据捕获的流量生成OpenAPI v3 JSON规范。
  • detect_auth_pattern(flow_ids=None):根据观察到的请求推断可能的身份验证机制。

代码生成

  • generate_scraper_code(flow_ids, target_framework="curl_cffi"):从捕获的流中生成启动器刮板/自动化代码。

程序化使用

注意:这些是MCP主机(客户端)发送的JSON-RPC调用。您不需要在终端中手动键入这些。

  1. 初始化代理: {"method": "tools/call", "params": {"name": "start_proxy", "arguments": {"port": 8080}}}
  2. 拦截和阻止: {"method": "tools/call", "params": {"name": "add_interception_rule", "arguments": {"rule_id": "block-ads", "action_type": "block", "url_pattern": ".*analytics.*"}}}
  3. 修改响应: {"method": "tools/call", "params": {"name": "add_interception_rule", "arguments": {"rule_id": "mock-api", "action_type": "replace_body", "url_pattern": ".*user/profile.*", "action_value": "{\"name\": \"AI Agent\"}"}}}

提示

  • 管理上下文:使用 set_scope 立即。当被后台操作系统遥测淹没时,LLM的性能很差。
  • 浏览器设置:确保您的浏览器或应用程序配置为使用代理(通常 localhost:8080)并安装了用于HTTPS检查的mitmproxy CA证书。
  • 隐形:The replay_flow 工具用途 curl-cffi 特别是为了避免被检查TLS指纹的服务标记为机器人。

发展

git clone [https://github.com/snapspecter/mitmproxy-mcp.git](https://github.com/snapspecter/mitmproxy-mcp.git)
cd mitmproxy-mcp
uv sync
uv run pytest

许可证: 麻省理工学院

作者 SnapSpecter