Charles Local MCP

io.github.Eason0inPublished by GitHub account Eason0inv0.1.3Updated Oct 24, 2026

Guarded local Charles Proxy automation and bounded XML session evidence

The publisher's own server: LMCP

VerifiedSTDIODesktop onlyDeveloper ToolsSecurity & Monitoring

Overview

AI-generated overview

Lets an assistant drive a local Charles Proxy on macOS through guarded, profile-based setup, status, cleanup, and bounded XML session evidence tools.

What you can do
Exposes a local Charles Proxy automation service over MCP stdio, with tools for doctor checks, profile validation, setup and cleanup plans and applies, status, and session evidence. Setup and cleanup use single-use tokens that expire after 15 minutes and are rejected if state changed. The session_evidence tool reads one selected local XML export inside a configured evidence root and returns only bounded, de-identified summaries such as opaque route references, method enums, counts, and sizes.
When to use it
Use it when you want an assistant to configure Charles Proxy on macOS for a specific host and loopback destination, or to summarize a local Charles XML session without exposing raw hosts, paths, headers, cookies, or bodies. It suits local debugging and integration workflows rather than remote or multi-user use.
Requirements
Runs locally on macOS only, as a stdio process. Requires Charles 4.6.8 for mutation commands, a TOML profiles file, and an XML evidence folder. Install via crates.io with a Rust toolchain or the universal .mcpb bundle from the matching GitHub release. State defaults to a per-user application support directory and can be isolated with CHARLES_LOCAL_MCP_HOME or --state-dir.
Before you install
The downloaded binary and bundle are not signed or notarized by Apple, so macOS may warn; verify SHA256SUMS before installing. Setup and cleanup apply commands change local Charles configuration and require a token. The evidence tool reads local XML files, rejects DTD, DOCTYPE, and entity references, and refuses symlinks or paths outside the evidence root. Profiles are read-only to MCP tools.

Installation

In SourceWeft

  1. Open Charles Local MCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

charles-local-mcp

Local-only, profile-driven Charles Proxy automation for macOS. The same application service is exposed through a JSON CLI and an MCP stdio server.

Version 0.1.3 supports Charles 4.6.8 on macOS. The public package contains only generic example.com fixtures and no organization-specific hosts or paths.

Profile

toml
schemaVersion = 1
[profiles.demo]sourceHost = "app.example.com"sourcePath = "/api*" # optional Charles path patterndestinationUrl = "http://127.0.0.1:8080"sslHosts = ["app.example.com"]verificationUrl = "https://app.example.com/health"

Omit destinationUrl for a proxy-only profile that disables Map Remote while retaining the exact SSL hosts and optional verification URL. When present, destinationUrl is restricted to loopback addresses.

Map Remote destinations must resolve to a loopback host. verificationUrl is optional, must use HTTPS without embedded credentials, and must match sourceHost.

Commands

console
charles-local-mcp doctor --jsoncharles-local-mcp --profiles-file profiles.toml profiles validate --jsoncharles-local-mcp --profiles-file profiles.toml --evidence-root /absolute/path/exports session evidence --profile demo --xml-file session.xml --jsoncharles-local-mcp --profiles-file profiles.toml setup plan --profile demo --platform android --jsoncharles-local-mcp --profiles-file profiles.toml setup apply --token TOKEN --jsoncharles-local-mcp setup resume --token TOKEN --jsoncharles-local-mcp status --jsoncharles-local-mcp cleanup plan --jsoncharles-local-mcp cleanup apply --token TOKEN --jsoncharles-local-mcp serve

State defaults to ~/Library/Application Support/charles-local-mcp. Tests and integrators can isolate it with CHARLES_LOCAL_MCP_HOME or --state-dir. CLI stdout is JSON only; MCP stdout is protocol only. Diagnostics use stderr.

Mutation commands require macOS and Charles 4.6.8. Setup and cleanup plans expire after 15 minutes, are single-use, and are rejected if state changed. Only one active session is allowed in a state directory.

Local XML session evidence

session evidence reads only a selected local .xml file inside the configured --evidence-root and the selected immutable profile. If the option is omitted, the root defaults to <state-dir>/evidence; it is resolved only when evidence analysis is requested, so existing setup and inspection commands do not require that directory. Relative traversal and absolute paths outside the root are rejected without returning local paths. The evidence root, parent directories, and selected file must not be symbolic links.

The operation uses the selected profile's exact sourceHost only as an internal filter. The bundle returns the profile name with hostScope: "exact", a fixed HTTP method enum, per-bundle opaque route references such as route-001, query parameter counts, numeric status/duration, and request/response sizes when those attributes exist. Repeated raw paths receive the same opaque route reference within one bundle. Other hosts are excluded and reported only as a count.

The operation never returns raw hosts, paths, query names, query values, headers, cookies, credentials, or bodies. Unknown request methods become the fixed value OTHER. It does not upload or persist the source session and does not write an evidence ledger. Files are limited to 10 MiB and 1,000 transactions; output is limited to 100 requests and 50 failures. DTD, DOCTYPE, and entity references are rejected. Some Charles exports include a DOCTYPE declaration; make a trusted local copy and remove the complete declaration before analysis. See docs/session-evidence.md for the contract, safety boundary, limits, and stable error codes.

The real-device procedure is intentionally manual: see docs/manual-smoke.md.

Install

Build from crates.io when a local Rust toolchain is available:

console
cargo install charles-local-mcp --locked

For a one-click MCP client installation on macOS, use the universal .mcpb asset from the matching GitHub Release. The native binary and bundle are not signed or notarized by Apple, so macOS may show a security warning when opening a downloaded asset. Verify SHA256SUMS from that release before installing. The bundle asks for a TOML profiles file and starts charles-local-mcp serve; profiles remain read-only to MCP tools. It also asks for the XML evidence folder that is the only directory the session_evidence tool may read.

Release maintainers should follow docs/releasing.md.

Source: README.md at commit 37b39c6

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.3LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Local-Mcp integrations