servers / charles-mcp-server
charles-mcp-server
communityunknownpythonwrite capablehealthy
Charles Proxy MCP 服务器,checkpoint 时间线 + 增量收割,专为 AI agent 逆向分析设计
01Tools · 14
How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| check_keyword_exists 【互锁-1】探测关键词在当前 checkpoint 的哪些条目中出现。
只返回 id + 命中位置的轻量索引,不返回 body 内容。
调用后 filter_by_keyword 对该关键词的批量限制解除(5 分钟内有效)。
| unknown | unknown | unknown |
| list_checkpoints 列出所有 checkpoint,展示完整的收割时间线。
每条记录包含:
id checkpoint 序号
read_at 收割时间(HH:MM:SS)
count 本次新增条目数
start_time 本批流量的最早请求时间
end_time 本批流量的最晚请求时间
is_reset 是否为 fresh_start 重置点
当前正在查看的 checkpoint 由 current_checkpoint_id 标注。
| read | false | unknown |
| load_checkpoint 将 CACHE 切换到指定 checkpoint 的数据,所有过滤工具随即在该时间窗口内工作。
这是只读回溯——ARCHIVE 和 CHECKPOINTS 不会被修改。
调用 harvest_data() 可随时切回最新增量。
checkpoint_id:来自 list_checkpoints 返回的 id 字段。
| unknown | unknown | unknown |
| summarize_traffic 对当前 checkpoint 的流量做全局统计,帮助 agent 快速定向。
不拉取任何 body,只统计路由维度:
top_hosts 流量最多的域名
top_paths 最活跃的路径前缀(取前两段)
status_dist HTTP 状态码分布
method_dist HTTP 方法分布
| unknown | unknown | unknown |
| filter_by_host 按 host 字段过滤,返回精简视图。
只匹配 entry 顶层的 host 字段,不会误命中 body 或 headers 中出现的域名。
支持部分匹配,例如 'example.com' 可匹配所有子域名。
limit 默认 15,上限 50,返回最近 N 条。
| unknown | unknown | unknown |
| filter_by_method 按 HTTP 方法过滤(GET / POST / PUT / DELETE 等),返回精简视图。
大小写不敏感。limit 默认 15,上限 50,返回最近 N 条。
| read | false | unknown |
| filter_by_encryption 扫描当前 checkpoint 的所有条目,找出 body 疑似加密/压缩/编码的请求。
按 max(req_entropy, res_entropy) 降序排列。
threshold 默认 3.9:纯文本 JSON 通常 2.5~3.5,Base64 约 4.0~5.0,加密 > 5.0。
limit 默认 20,上限 100。
| unknown | unknown | unknown |
| filter_by_status 按 HTTP 状态码过滤,返回精简视图。
适合排查异常请求,例如 403(鉴权失败)、500(服务错误)。
limit 默认 15,上限 50,返回最近 N 条。
| read | false | unknown |
| set_throttling 切换网络带宽限制。
- preset 为预设名称 → 开启弱网;preset 为 null → 关闭弱网模拟。
- MCP 进程退出时自动关闭弱网,无需手动清理。
可用预设(直接填名称字符串):
56 kbps Modem | 256 kbps ISDN/DSL | 512 kbps ISDN/DSL
2 Mbps ADSL | 8 Mbps ADSL2 | 16 Mbps ADSL2+
32 Mbps VDSL | 32 Mbps Fibre | 100 Mbps Fibre
3G | 4G
| write | true | unknown |
| get_raw_data 获取指定条目的完整原始数据(headers、body、timing 等全部字段)。
优先在当前 checkpoint 查找,找不到时从 ARCHIVE 全局搜索。
这样即使切换了 checkpoint,仍可用 entry_id 直接取历史数据。
| read | false | unknown |
| filter_by_keyword 【互锁-2】返回含关键词的条目精简视图(含 body 预览)。
匹配数 > 30 时须先调用 check_keyword_exists 解锁,防止上下文溢出。
limit 默认 10,上限 50,返回最近 N 条。
| unknown | unknown | unknown |
| load_recording 加载本地 .chlsj 历史录包到 ARCHIVE,创建 checkpoint 并切换到该窗口。
录包与 live 流量共用所有过滤工具(filter_by_*、filter_by_encryption 等)。
录包条目用 "rec:文件名:id" 命名空间存储,不会与 live 条目的 id 冲突。
加载后调用 list_checkpoints 可在时间线上看到录包的真实抓包时间范围。
file_path:.chlsj 文件的绝对路径或相对路径。
| unknown | unknown | unknown |
| harvest_data 从 Charles 同步增量流量,并在时间线上创建一个新 checkpoint。
【fresh_start=False】(默认)
取上次 harvest 之后产生的新条目,写入 ARCHIVE,创建 checkpoint。
首次调用时加载 session 全部流量。
【fresh_start=True】
在时间线上插一个"重置点",不加载任何条目。
之后的 harvest_data() 只返回此刻之后的新流量。
典型用法:切换分析目标前调用一次。
每次调用都会:
- 将新条目存入 ARCHIVE(可通过 load_checkpoint 随时回溯)
- 将 CACHE 切换到本次新增的条目
- 清空 Charles session 并重启录制(导出始终只含最新增量)
- 使所有关键词授权失效
| unknown | unknown | unknown |
| filter_by_path 按 URL 路径关键词过滤,返回精简视图。
适合快速定位某个业务接口,例如 '/api/sign'、'/login'。
limit 默认 15,上限 50,返回最近 N 条。
| unknown | unknown | unknown |
02Install & source
uvx charles-mcp-server
uvxpip install charles-mcp-server
pip05Provenance & freshness
sourcesPyPI [p4]
last_checked2026-07-27 08:46Z
next_check2026-08-18 09:06Z
cadenceevery 48h
verifiedhandshake:failed metadata:passed handshake:failed metadata:passed handshake:failed metadata:passed metadata:passed metadata:passed handshake:failed metadata:passed
index_statusindex — 5 unique facts >= 5
06Badge
Add the “as seen on MCPExplorer” badge to your README.
[](https://mcpexplorer.com/servers/charles-mcp-server)
Next step
This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.
Explore loadouts →