使用说明
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调用。您不需要在终端中手动键入这些。
- 初始化代理:
{"method": "tools/call", "params": {"name": "start_proxy", "arguments": {"port": 8080}}} - 拦截和阻止:
{"method": "tools/call", "params": {"name": "add_interception_rule", "arguments": {"rule_id": "block-ads", "action_type": "block", "url_pattern": ".*analytics.*"}}} - 修改响应:
{"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
