Skip to main content

Charles Proxy for AI tool calls — a local-first MCP proxy that records what your real agent actually does.

Project description

MCPScope

Charles Proxy for AI tool calls. A local-first proxy that sits between an MCP client (Claude Desktop, or any agent) and its MCP servers, passively records every JSON-RPC message to SQLite, and shows a live terminal UI.

pip install mcpscope-cli

mcpscope TUI

Why

  • Watch your REAL agent, live. The MCP Inspector and similar tools are test harnesses: they are the client, poking your server by hand. MCPScope records what a running agent — Claude Desktop mid-conversation — actually does.
  • History that outlives the session. Inspector history is React state; gone on reload. MCPScope stores every call from every session in local SQLite, so you can answer "what did my agent do last Tuesday?"
  • Local-first, zero cloud, zero signup. Nothing leaves your machine. Free forever for single-user use.

Quickstart 1 — attach to Claude Desktop

mcpscope attach filesystem     # or any server name from your Claude Desktop config
# restart Claude Desktop, use it normally, then:
mcpscope ui --follow           # watch calls stream in live
mcpscope detach                # undo (config backup is made automatically)

attach rewrites that server's entry in claude_desktop_config.json (after backing it up) so Claude Desktop launches the server through the proxy. The agent and the server themselves are never modified.

Quickstart 2 — wrap any stdio MCP server

Wherever a client config says command: npx -y some-mcp-server, prefix it:

mcpscope run -- npx -y @modelcontextprotocol/server-filesystem ~/notes

stdin/stdout pass through byte-for-byte; a copy of each frame is parsed and recorded. The server's stderr also passes through untouched.

Quickstart 3 — proxy a remote (HTTP) MCP server

mcpscope run --http https://example.com/mcp --port 6280
# point your agent at http://127.0.0.1:6280/mcp instead of the upstream

Streamable HTTP (the current MCP remote transport) is forwarded verbatim, including SSE streams; request/response/SSE payloads are teed into the same store. Add --ui to get the TUI in the same terminal.

Browsing history

mcpscope sessions              # every recorded session, with call/error counts
mcpscope calls <session-id>    # one session's calls (--json for full frames)
mcpscope ui                    # TUI: arrows to inspect, / to filter, f to follow

Recordings live in ~/.mcpscope/mcpscope.db (override with --db or $MCPSCOPE_DB). It's plain SQLite — query it with anything.

What it is / what it is not

It is a passive observer for agents you run: a flight recorder for MCP traffic, with persistent history and a live UI.

It is not a test harness. It never calls your server on its own, never modifies messages, and has no "send request" button — that's the official MCP Inspector, which is great at what it does. Run both.

Guarantees the design enforces:

  • Pass-through is sacred: bytes are forwarded verbatim; parsing happens on a copy, for logging only. Malformed or unknown messages are never dropped, altered, or reordered — they're recorded raw.
  • Recording never blocks the proxy path (write-behind queue; under extreme pressure it drops log entries, counted, never traffic).
  • Protocol-churn insurance: messages are interpreted, never gated. New spec revisions flow through untouched.

License

Apache-2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcpscope_cli-0.1.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcpscope_cli-0.1.0-py3-none-any.whl (27.8 kB view details)

Uploaded Python 3

File details

Details for the file mcpscope_cli-0.1.0.tar.gz.

File metadata

  • Download URL: mcpscope_cli-0.1.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcpscope_cli-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d27201e17bb39c6950489a0519936894b9d1064811d8a123a67921663d2f5222
MD5 59259f340ee8837524a8020876052d14
BLAKE2b-256 60824743f9c3099e2963e921fb7c7b0a25aba4d292107cde41cbffe16e90f895

See more details on using hashes here.

File details

Details for the file mcpscope_cli-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mcpscope_cli-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 27.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcpscope_cli-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a834a131beb5bb7ebad452b1943eb2aedb6f5d8a59db78174c9f4c07466ee492
MD5 1dc102b3395b2533275a0a3940a32369
BLAKE2b-256 a89c031825e146be60d643ea3df8714efc28008ba02aae71a3a480776f3005b1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page