lups2000/mitmproxy-MCP
GitHub: lups2000/mitmproxy-MCP
将 mitmproxy 作为 addon 嵌入式 MCP 服务器,使 AI Agent 能通过自然语言实时检查、拦截、重放和管理 HTTP/HTTPS 流量。
Stars: 3 | Forks: 0
# mitmproxy MCP
[](https://github.com/lups2000/mitmproxy-MCP/actions/workflows/ci.yml)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://modelcontextprotocol.io/)
[](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, 中间人攻击, 人工智能代理, 大语言模型工具, 接口安全, 数据包拦截, 无后门, 流量重放, 网络协议分析, 网络安全, 网络抓包, 网络调试, 自动化, 逆向工具, 防御绕过, 隐私保护