mcpField
M
mitmproxy-mcp

mitmproxy-mcp

github.com/moha-abdi开发990 次安装36 周前更新
代码仓库

关于 mitmproxy-mcp

mitmproxy-mcp 是通过 mitmproxy 检查和处理 HTTP/HTTPS 流量的技能。它支持查询已捕获流量、重放或修改请求,以及控制拦截中的流量,适用于 API 调试和安全测试。

主要功能

  1. 01筛选并检查已捕获流量
  2. 02使用正则表达式搜索请求
  3. 03重放或修改请求
  4. 04拦截并控制实时流量
  5. 05将流量导出为 HAR

适用场景

  1. 01调试 API 请求
  2. 02分析 HTTP 流量
  3. 03测试不同请求参数
  4. 04导出已捕获流量

MCP 相关

它连接到 http://localhost:9011/sse 上的 MCP 服务,并提供检查、重放、修改和拦截 mitmproxy 流量的工具。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/moha-abdi/mitmproxy-mcp --skill mitmproxy-mcp

安装后在 Claude Code 中输入/mitmproxy-mcp确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

.gitignore
addon.py
README.md
AGENTS.md
LICENSE
pyproject.toml
pytest.ini
.github/workflows/
ci.yml
mitmproxy_mcp/
addon.py
__main__.py
__init__.py
models.py
privacy.py
storage.py
transport.py
view_sync.py
mitmproxy_mcp/tools/
__init__.py
flows.py
config.py
intercept.py
replay.py
tests/
__init__.py
conftest.py
test_config_tools.py
test_transport.py
test_cli.py
test_integration.py
test_privacy.py
test_intercept_tools.py
test_view_sync.py

详细介绍

mitmproxy-mcp

通过 mitmproxy 分析、拦截和重放 HTTP/HTTPS 流量。

前置条件

  • mitmproxy 正在运行,且已加载 mitmproxy-mcp 插件
  • MCP 服务可通过 http://localhost:9011/sse 访问(SSE 传输)

如果 MCP 服务尚未连接,请告知用户先启动 mitmproxy:

mitmproxy      # or mitmweb, or mitmdump

如果在 ~/.mitmproxy/config.yaml 中进行了配置,插件和 MCP 服务会自动启动。 为确保依赖安全地启动,请使用 mitmproxy-mcp install-shims --force 安装一次垫片。

何时使用此技能

  • 用户要求检查、调试或分析 HTTP 流量
  • 用户想重放或修改 HTTP 请求
  • 用户想拦截符合某种模式的请求
  • 用户需要导出捕获的流量(HAR 格式)
  • 用户正在进行 API 调试或安全测试

可用工具(20 个)

流量工具 -- 查询捕获的流量
  • get_flows -- 列出捕获的流量,可按方法、URL 模式或状态码筛选。支持使用 limit 和 offset 分页。
  • get_flow_by_id -- 获取单个流量的完整请求和响应详情
  • search_flows -- 使用正则表达式搜索 URL、方法、状态和标头中的流量
  • get_flow_request -- 仅获取流量中的请求部分
  • get_flow_response -- 仅获取流量中的响应部分
  • get_flow_count -- 获取当前存储的流量数量
  • clear_flows -- 清除所有已存储的流量;当同步设置包含 clear 时,同时清除 mitmproxy 的流量视图
  • export_flows -- 将流量导出为 HAR 1.2 格式。可选传入特定的流量 ID。
重放工具 -- 发送和修改请求
  • replay_request -- 按原样重放捕获的请求。当视图同步设置包含 replay 时在原位置重放;否则创建独立的重放流量。
  • send_request -- 发送新的 HTTP 请求。参数:url(必填)、method(默认为 GET)、headers、body。
  • modify_and_send -- 获取已有流量,修改其方法、URL、标头或正文,然后发送。适用于测试不同方案。
  • duplicate_flow -- 克隆流量但不发送。适用于进行修改前后的比较。

当 mcp_view_sync_actions 包含 replay 时,重放工具产生的流量会显示在 mitmproxy 的流量列表中(默认值:all)。

拦截工具 -- 暂停和控制实时流量
  • set_intercept_filter -- 设置 mitmproxy 过滤表达式,以拦截符合条件的请求。使用 mitmproxy 过滤语法:~u example.com、~m POST、~u api & ~m GET。传入空字符串可禁用。
  • get_intercepted_flows -- 列出当前因拦截而暂停的流量
  • resume_flow -- 恢复单个被拦截的流量
  • resume_all -- 恢复所有被拦截的流量
  • drop_flow -- 丢弃或终止被拦截的流量,不将其转发
配置工具 -- 代理设置
  • get_options -- 获取当前 mitmproxy 选项值。可传入特定键,也可获取精选的默认值。
  • set_option -- 在运行时设置 mitmproxy 选项。某些危险选项(listen_host、listen_port、mode、server、ssl_insecure)无法设置。
  • get_status -- 获取代理状态:版本、监听地址、模式、流量数量和拦截设置。

工作流模式

基本流量检查
  1. 确保 mitmproxy 正在运行,并代理目标流量
  2. 使用 get_flows 查看已捕获的流量
  3. 使用 get_flow_by_id 深入查看特定请求和响应
  4. 使用 search_flows 和正则表达式查找特定模式
重放和修改请求
  1. 使用 get_flows 或 search_flows 找到目标流量
  2. 使用 replay_request 按原样重新发送
  3. 或使用 modify_and_send 在发送前修改标头、正文或 URL
  4. 比较原始响应和修改后的响应
拦截实时流量
  1. 使用 set_intercept_filter 设置筛选条件(例如:~u api.example.com & ~m POST)
  2. 等待符合条件的请求——这些请求会暂停
  3. 使用 get_intercepted_flows 查看正在等待的请求
  4. 使用 resume_flow 或 drop_flow 控制每个请求
  5. 使用空字符串调用 set_intercept_filter,停止拦截

重要说明

  • 默认情况下,不会对敏感数据进行脱敏。在 mitmproxy 配置中启用 mcp_redact: true,即可对令牌、密码、API 密钥和 JWT 进行脱敏
  • 使用 mcp_view_sync_actions 控制同步到 mitmproxy 视图的内容(all、none、replay、clear 或 replay,clear)
  • 请求和响应正文会截断至 10KB,以防上下文溢出
  • 所有数据仅保存在内存中——mitmproxy 停止时会清除
  • 代理默认最多保存 1000 个流量记录(优先淘汰最早的记录)

评论

支持 Markdown