lups2000/mitmproxy-MCP

GitHub: lups2000/mitmproxy-MCP

将 mitmproxy 作为 addon 嵌入式 MCP 服务器,使 AI Agent 能通过自然语言实时检查、拦截、重放和管理 HTTP/HTTPS 流量。

Stars: 3 | Forks: 0

# mitmproxy MCP [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/14b4927c0d183333.svg)](https://github.com/lups2000/mitmproxy-MCP/actions/workflows/ci.yml) [![Python 3.12+](https://img.shields.io/badge/python-3.12%2B-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![MCP](https://img.shields.io/badge/MCP-Model%20Context%20Protocol-6f42c1.svg)](https://modelcontextprotocol.io/) [![mitmproxy](https://img.shields.io/badge/mitmproxy-addon--first-orange.svg)](https://github.com/mitmproxy/mitmproxy) `mitmproxy-mcp` 是一个内嵌在 [`mitmproxy`](https://github.com/mitmproxy/mitmproxy) 中的 MCP 服务器。 目标很简单: 架构和设计原理详见 [docs/design.md](/Users/matte/Desktop/mitmproxy-MCP/docs/design.md)。 `mitmproxy` 作为项目依赖被安装,但此 MCP 仍必须在启用了 addon 的 `mitmproxy`、`mitmweb` 或 `mitmdump` 中运行。它本身不是一个独立的 MCP 进程。 ## 它提供了什么 此 MCP 为代理提供了一个运行中 `mitmproxy` 实例的实时接口。 核心功能: - 检查捕获的 HTTP flows - 过滤、计数并获取详细的 flow 数据 - 标记和评论 flows - 拦截、恢复、终止、重放、复制、还原、删除和清空 flows - 导入和导出 HAR / mitmproxy 转储文件 - 检查和更新 mitmproxy 运行时选项 重要的产品约束: - `mitmproxy` 是唯一真实数据来源 - 本项目是 **addon 优先** 的 - 它**不是**一个独立的 `stdio` MCP 服务器 ## 工具概述(20 个工具) ### 读取 / 检查 - `list_captured_flows`:浏览带过滤和分页的脱敏 flow 摘要 - `get_captured_flow`:详细检查单个 flow - `get_flow_count`:计算符合主要过滤器的 flows 数量 - `diff_flows`:逐字段比较两个脱敏的已捕获 flows - `list_marked_flows`:显示当前带有 mitmproxy 标记的 flows - `get_intercepted_flows`:显示当前被拦截的 flows ### 标记 / 注释 - `mark_flow`:为 flow 添加彩色的 mitmproxy 标记 - `unmark_flow`:移除当前标记 - `comment_flow`:附加或替换 mitmproxy 注释 ### 拦截 / 控制 - `set_intercept`:使用 mitmproxy 过滤表达式启用或禁用拦截 - `resume_flow`:恢复一个被拦截的 flow - `resume_all`:恢复所有被拦截的 flows - `kill_flow`:终止一个实时/被拦截的 flow ### 选项 - `list_options`:发现 mitmproxy 运行时选项 - `get_option`:检查某个选项及其当前值和元数据 - `set_option`:更新一个允许更改的 mitmproxy 运行时选项 ### 传输 / 变更 - `import_flows`:将 HAR 文件或 mitmproxy 转储文件加载到真实的 mitmproxy 视图中 - `export_flows`:将 flows 保存为 HAR 或 mitmproxy 转储文件 - `duplicate_flow`:在不发送流量的情况下创建第二个真实 flow - `replay_flow`:通过 mitmproxy 重放当前的真实 flow - `revert_flow`:将修改过的 flow 还原为其备份状态 - `delete_flow`:从 mitmproxy 中移除一个 flow - `clear_captured_flows`:从 mitmproxy 中移除所有 flows ## 快速开始 要求: - Python `>= 3.12` - `uv` 安装: ``` uv sync ``` 可选的虚拟环境激活: ``` source .venv/bin/activate ``` 要使用此 MCP,请通过 `mitmproxy`、`mitmweb` 或 `mitmdump` 运行它。 本仓库不提供在 mitmproxy 运行时之外的独立 MCP 进程。 使用 `mitmweb` 运行: ``` .venv/bin/mitmweb -s addon.py --set mcp_transport=streamable-http --set mcp_port=8000 ``` 你也可以使用: - `mitmproxy` 用于交互式终端 UI - `mitmdump` 用于无头模式 示例: ``` .venv/bin/mitmproxy -s addon.py --set mcp_transport=streamable-http --set mcp_port=8000 ``` 无头模式: ``` .venv/bin/mitmdump -s addon.py --set mcp_transport=streamable-http --set mcp_port=8000 ``` 默认端点: - 代理:`127.0.0.1:8080` - mitmweb:`http://127.0.0.1:8081` - MCP streamable HTTP:`http://127.0.0.1:8000/mcp` - MCP SSE:`http://127.0.0.1:8000/sse` ## 连接客户端 支持的传输方式: - `streamable-http`(推荐) - `sse` 不支持: - 独立的 `stdio` ### OpenCode ``` { "$schema": "https://opencode.ai/config.json", "mcp": { "mitmproxy-mcp": { "type": "remote", "url": "http://127.0.0.1:8000/mcp", "enabled": true } } } ``` 对于 SSE,请将 URL 替换为 `http://127.0.0.1:8000/sse`。 ### Claude Code ``` claude mcp add --transport http mitmproxy-mcp http://127.0.0.1:8000/mcp ``` 对于 SSE: ``` claude mcp add --transport sse mitmproxy-mcp http://127.0.0.1:8000/sse ``` ### Codex ``` codex mcp add mitmproxy-mcp --url http://127.0.0.1:8000/mcp ``` 验证: ``` codex mcp list ``` ### VS Code (Copilot) 在你的工作区中创建 `.vscode/mcp.json`: ``` { "servers": { "mitmproxyMcp": { "type": "http", "url": "http://127.0.0.1:8000/mcp" } } } ``` 然后在 VS Code 中: - 从命令面板运行 `MCP: List Servers` 以确认服务器已被检测到 - 打开 Copilot Chat / Agent 模式并使用 `mitmproxyMcp` 工具 对于 SSE,请修改为: ``` "type": "sse", "url": "http://127.0.0.1:8000/sse" ``` ### Cursor 在项目中创建 `.cursor/mcp.json`,或者全局配置创建 `~/.cursor/mcp.json`: ``` { "mcpServers": { "mitmproxy-mcp": { "url": "http://127.0.0.1:8000/mcp" } } } ``` 然后通过 Cursor 的 CLI 验证: ``` cursor-agent mcp list ``` 对于 SSE,使用: ``` { "mcpServers": { "mitmproxy-mcp": { "transport": "sse", "url": "http://127.0.0.1:8000/sse" } } } ``` ## 配置 支持通过 `.env` 设置环境变量。 主要设置: - `MITMPROXY_MCP_PROXY_HOST` - `MITMPROXY_MCP_PROXY_PORT` - `MITMPROXY_MCP_MCP_HOST` - `MITMPROXY_MCP_MCP_PORT` - `MITMPROXY_MCP_MCP_TRANSPORT` - `MITMPROXY_MCP_MAX_FLOWS` - `MITMPROXY_MCP_BODY_PREVIEW_LIMIT` 脱敏设置: - `MITMPROXY_MCP_REDACTION_ENABLED` - `MITMPROXY_MCP_REDACT_HEADERS` - `MITMPROXY_MCP_REDACT_QUERY_PARAMS` - `MITMPROXY_MCP_REDACT_BODY_PREVIEWS` 有关实际值,请参阅 `.env.example`。 ## 隐私 MCP 读取模型默认是脱敏的。 当前的脱敏范围包括: - 敏感 headers - 敏感 query 参数 - body 预览中类似秘密的字段 ## 选项安全性 `set_option` 目前有意阻止了以下这些较高风险的选项: - `mode` - `listen_host` - `listen_port` - `ssl_insecure` - `ssl_verify_upstream_trusted_ca` - `ssl_verify_upstream_trusted_confdir` - `client_certs` - `certs` - `cert_passphrase` - `confdir` - `allow_hosts` - `ignore_hosts`
标签:Addon, AI安全, Chat Copilot, Elastic Stack, HAR文件, HTTP流量, MCP, mitmproxy, Model Context Protocol, Python, 中间人攻击, 人工智能代理, 大语言模型工具, 接口安全, 数据包拦截, 无后门, 流量重放, 网络协议分析, 网络安全, 网络抓包, 网络调试, 自动化, 逆向工具, 防御绕过, 隐私保护