HTTP流量分析服务器

mitmproxy-mcp是一个为mitmproxy设计的MCP服务器,允许任何MCP客户端分析、拦截和重放HTTP/HTTPS流量。

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

使用说明

三菱mcp

MCP服务器 中间人代理 允许任何MCP客户端分析、拦截和重放HTTP/HTTPS流量。

这是什么

mitmproxy-mcp作为mitmproxy插件运行。它嵌入了一个 主控程序 服务器直接参与代理进程,使AI代理可以访问24个工具进行流量分析、请求重放、拦截控制和代理配置。

所有捕获的数据都保存在内存中。敏感值(令牌、密码、API密钥、JWT)在发送到AI之前会自动编辑。

安装

git clone https://github.com/moha-abdi/mitmproxy-mcp.git
cd mitmproxy-mcp

python3.10 -m venv .venv
source .venv/bin/activate

uv pip install -e ".[dev]"

# one-time: make mitmproxy/mitmdump/mitmweb use this env
# (prevents missing addon deps like `mcp` when system mitmproxy is used)
mitmproxy-mcp install-shims --force

需要Python 3.10+和mitmproxy>=10.0.0。

代理技能(可选)

此仓库还提供了技能定义 SKILL.md 为了 npx skills 生态系统。

安装时使用:

npx skills add moha-abdi/mitmproxy-mcp

安装后,兼容的编码代理可以加载 mitmproxy-mcp 技能,并获得项目特定的使用指导。

设置

1.配置mitmproxy

创建或编辑 ~/.mitmproxy/config.yaml:

scripts:
  - /absolute/path/to/mitmproxy-mcp/addon.py

mcp_transport: sse
mcp_port: 9011

2.启动mitmproxy

mitmproxy      # interactive TUI
mitmweb        # web interface
mitmdump       # headless

MCP服务器自动启动 http://localhost:9011/sse. 如果该命令仍然解析为系统安装,请确保您的shim目录(默认 ~/.local/bin)早在 PATH,然后重新启动终端。

3.连接您的AI客户端

所有客户端都连接到同一个SSE端点。连接前确保mitmproxy正在运行。

OpenCode

OpenCode的本地类型桥通过 超级通道。需要Node.js。

增添 opencode.json 在项目根目录中,或 ~/.config/opencode/opencode.json 全球地:

{
  "mcp": {
    "mitmproxy": {
      "type": "local",
      "command": ["npx", "-y", "supergateway", "--sse", "http://127.0.0.1:9011/sse"],
      "enabled": true
    }
  }
}
Claude Code

通过CLI(项目级):

claude mcp add --transport sse mitmproxy http://localhost:9011/sse

要在所有项目中全局添加:

claude mcp add --scope user --transport sse mitmproxy http://localhost:9011/sse

或手动添加到 ~/.claude.json:

{
  "mcpServers": {
    "mitmproxy": {
      "type": "sse",
      "url": "http://localhost:9011/sse"
    }
  }
}
Cursor

增添 .cursor/mcp.json 在项目根目录中:

{
  "mcpServers": {
    "mitmproxy": {
      "url": "http://localhost:9011/sse"
    }
  }
}
Windsurf

增添 ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "mitmproxy": {
      "url": "http://localhost:9011/sse"
    }
  }
}
VS Code (Copilot)

增添 .vscode/mcp.json 在项目根目录中:

{
  "servers": {
    "mitmproxy": {
      "type": "http",
      "url": "http://localhost:9011/sse"
    }
  }
}
Claude Desktop

Claude Desktop本身不支持SSE,因此我们使用 超级通道 将SSE连接到STDIO。需要Node.js。

添加到您的配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上, %APPDATA%\Claude\claude_desktop_config.json 在Windows上):

{
  "mcpServers": {
    "mitmproxy": {
      "command": "npx",
      "args": ["-y", "supergateway", "--sse", "http://127.0.0.1:9011/sse"]
    }
  }
}
Other clients

任何支持SSE传输的MCP客户端都可以直接连接到:

http://localhost:9011/sse

如果您的客户端只支持STDIO,请使用 超级通道 桥:

npx -y supergateway --sse http://127.0.0.1:9011/sse

工具

流量工具(12)

工具 说明
get_flows 使用分页和过滤功能列出捕获的流
get_flow_by_id 获取完整的流程详细信息
search_flows 按正则表达式模式搜索流
get_flow_request 获取请求详细信息
get_flow_response 获取响应详细信息
mark_flow 标记流(行为与UI标记操作相同)
unmark_flow 从流中删除标记
focus_flow 按ID将UI焦点移动到可见流
focus_flow_index 通过可见列表索引移动UI焦点
clear_flows 清除所有捕获的流(以及同步时的UI视图 clear)
get_flow_count 统计捕获的流量
export_flows 将流导出为HAR格式

回放工具(4)

工具 说明
replay_request 按原样回放捕获的请求
send_request 发送新的HTTP请求
modify_and_send 修改捕获的请求并发送
duplicate_flow 克隆流以进行比较

当以下情况发生时,回放工具流会反映到mitmproxy的流列表中 mcp_view_sync_actions 包括 replay (默认值 all). replay_request 当启用回放同步时,在原地回放原始流;否则,它将创建一个分离的重放流。

拦截工具(5)

工具 说明
set_intercept_filter 设置筛选器表达式(例如。 ~u example.com)
get_intercepted_flows 列出当前拦截的流
resume_flow 恢复单个拦截流
resume_all 恢复所有拦截的流
drop_flow 拦截流量

配置工具(3)

工具 说明
get_options 获取当前的mitmproxy选项
set_option 设置mitmproxy选项(危险选项被阻止)
get_status 获取代理状态和版本信息

选项

通过 --set 标志或设置 ~/.mitmproxy/config.yaml:

选项 默认值 描述
mcp_transport stdio 运输: stdio, sse,或 tcp
mcp_port 9011 SSE/TCP传输端口
mcp_max_flows 1000 要保留在内存中的最大流量(最旧的先被驱逐)
mcp_redact false 在发送给AI之前,对敏感数据(令牌、密钥、密码)进行修改
mcp_redact_patterns (空) JSON数组形式的其他编校模式(需要 mcp_redact: true)
mcp_view_sync_actions all 哪些MCP操作与mitmproxy视图同步: all, none, replay, clear,或 replay,clear

例子:

mitmdump -s addon.py --set mcp_transport=sse --set mcp_port=9011 --set mcp_max_flows=5000

隐私

默认情况下,编校处于关闭状态——您可以看到原始流量的原样。要启用它,请设置 mcp_redact 到 true 在您的配置中或通过标志:

# ~/.mitmproxy/config.yaml
mcp_redact: true
# or via flags
mitmdump -s addon.py --set mcp_redact=true

启用后,以下内容在到达AI之前会自动编辑:

  • 承载令牌、基本身份验证凭据
  • API键(头和查询参数)
  • 密码、秘密
  • JWTs
  • 会话ID、身份验证令牌、会话Cookie

请求和响应体被截断为10KB,以防止上下文溢出。

您还可以添加自定义编校模式:

mitmdump -s addon.py --set mcp_redact=true --set mcp_redact_patterns='["internal_secret", "x-custom-key"]'

项目结构

mitmproxy-mcp/
  addon.py              thin wrapper for mitmproxy script loading
  mitmproxy_mcp/        main package
    __init__.py
    addon.py            mitmproxy addon with MCP server
    models.py           pydantic models for flow serialization
    storage.py          thread-safe in-memory flow storage
    privacy.py          redaction engine
    transport.py        stdio, sse, tcp transport layer
    tools/
      flows.py          flow query tools
      replay.py         replay and modification tools
      intercept.py      interception control tools
      config.py         proxy configuration tools
  tests/                test suite

发展

# install in editable mode (required for imports to work)
uv pip install -e ".[dev]"

# run tests
pytest tests/ -v

# run a specific test file
pytest tests/test_flow_tools.py -v

# with coverage
pytest tests/ --cov=mitmproxy_mcp --cov-report=html

# lint
ruff check .

# type check
mypy

许可证

麻省理工学院