Charles MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CHARLES_PASS | No | Charles Web Interface password | 123456 |
| CHARLES_USER | No | Charles Web Interface username | admin |
| CHARLES_PROXY_HOST | No | Charles proxy host | 127.0.0.1 |
| CHARLES_PROXY_PORT | No | Charles proxy port | 8888 |
| CHARLES_CONFIG_PATH | No | Charles configuration file path | 自动探测 |
| CHARLES_MAX_STOPTIME | No | Maximum duration for bounded recording in seconds | 3600 |
| CHARLES_REQUEST_TIMEOUT | No | Control plane HTTP timeout in seconds | 10 |
| CHARLES_MANAGE_LIFECYCLE | No | Whether the MCP server manages the Charles lifecycle (start/stop) | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| start_live_captureA | Start or adopt a live capture session for incremental polling. Returns a capture_id required by all other live tools. Use adopt_existing=true to take over an ongoing Charles session without clearing it. |
| read_live_captureA | Read incremental traffic and advance the cursor. Returns compact entry summaries (host/method/path/status only). Use query_live_capture_entries for structured filtering instead of this tool. This tool advances the internal cursor — repeated calls only return new items. |
| peek_live_captureA | Preview incremental traffic without advancing the cursor. Returns compact entry summaries (host/method/path/status only). Safe to call repeatedly — does not consume items. Use query_live_capture_entries for structured filtering and analysis. |
| stop_live_captureA | Stop an active live capture and optionally persist the filtered snapshot. Only status='stopped' means the capture is fully closed. |
| query_live_capture_entriesA | Analyze the active live capture with structured summary-first filtering. This is the RECOMMENDED tool for inspecting live traffic. Does NOT advance the cursor — safe to call repeatedly with different filters. Default cursor=0 scans all captured data from the beginning. Use get_traffic_entry_detail to drill down into a specific entry_id. |
| analyze_recorded_trafficB | Analyze a saved recording snapshot with compact summaries. Returns structured TrafficSummary items with matched_fields and match_reasons. Use get_traffic_entry_detail to drill down into a specific entry_id afterwards. |
| get_traffic_entry_detailA | Load one traffic entry detail view for drill-down inspection. Requires entry_id from a prior summary/query call. For history entries, pass recording_path from the summary. For live entries, pass capture_id from the summary. Keep include_full_body=false unless you specifically need the raw body text. |
| get_capture_analysis_statsC | Return coarse traffic class counts for a live capture or saved recording. |
| group_capture_analysisC | Group analyzed traffic so the agent can inspect hot spots with lower token cost. |
| query_recorded_trafficA | Query the latest saved recording. This tool never reads the live Charles session. |
| list_recordingsB | List saved recording files using an explicit history-oriented tool name. |
| get_recording_snapshotA | Load a saved recording snapshot. This tool never reads the live Charles session. |
| proxy_by_timeB | Capture traffic for a fixed duration or read the latest saved history package. |
| filter_funcC | Filter traffic from a fixed capture window or the latest saved history package. |
| throttlingB | Set a network throttling preset in Charles. |
| reset_environmentB | Reset the Charles environment and restore the saved configuration. |
| list_sessionsB | List historical session files via the legacy tool name. |
| charles_statusB | Check Charles connectivity and active live-capture state. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
There is significant overlap between tools for live vs. recorded traffic analysis, with multiple tools serving similar purposes but for different contexts (e.g., query_live_capture_entries vs. query_recorded_traffic, peek_live_capture vs. read_live_capture). However, descriptions help clarify the distinctions, such as cursor behavior and context-specific use cases, preventing complete confusion.
Most tools follow a consistent snake_case pattern with descriptive verb-noun combinations (e.g., analyze_recorded_traffic, get_traffic_entry_detail). Minor deviations exist, such as 'filter_func' being less descriptive and 'charles_status' not fully adhering to the verb-noun structure, but overall naming is predictable and readable.
With 18 tools, the count is slightly high but reasonable for a comprehensive Charles proxy server covering live capture, recorded traffic analysis, session management, and configuration. It avoids being excessive (under 25) and provides a well-scoped set for the domain, though some tools could potentially be consolidated.
The tool set offers complete coverage for Charles proxy operations, including starting/stopping live captures, querying and analyzing both live and recorded traffic, drilling into details, managing sessions and recordings, and configuring throttling and resets. No obvious gaps exist; agents can perform full lifecycle tasks from capture to inspection and management.