MCP Sniffer captures network traffic between MCP clients and servers and displays it in a web UI.
Reason this release was yanked:
web ui wasn't included
Project description
MCP Sniffer
MCP Sniffer captures network traffic between MCP clients and servers.
It runs as a reverse proxy between the client and server, capturing request and response payloads that can be visualized in a web UI.
The following diagram shows how MCP Sniffer fits into the MCP Client-Server Model.
For the Web UI - Imagine Google Chrome DevTools' Network Tab for Model Context Protocol.
Following is a very early version of it.
Install
pipx install mcp-sniffer
Usage
$ mcp-sniffer --help
usage: mcp-sniffer [-h] [--listen-host LISTEN_HOST] [--listen-port LISTEN_PORT] [--upstream-host UPSTREAM_HOST]
[--upstream-port UPSTREAM_PORT] [--web-ui-host WEB_UI_HOST] [--web-ui-port WEB_UI_PORT]
[--log-level LOG_LEVEL]
MCP Sniffer
options:
-h, --help show this help message and exit
--listen-host LISTEN_HOST
Host to listen on (default: env LISTEN_HOST or 127.0.0.1)
--listen-port LISTEN_PORT
Port to listen on (default: env LISTEN_PORT or 3002)
--upstream-host UPSTREAM_HOST
Upstream host (default: env UPSTREAM_HOST or 127.0.0.1)
--upstream-port UPSTREAM_PORT
Upstream port (default: env UPSTREAM_PORT or 3001)
--web-ui-host WEB_UI_HOST
Web UI host (default: env WEB_UI_HOST or 127.0.0.1)
--web-ui-port WEB_UI_PORT
Web UI port (default: env WEB_UI_PORT or 8888)
--log-level LOG_LEVEL
Log level (default: env LOG_LEVEL or INFO)
Run
mcp-sniffer --listen-port 3002 --upstream-port 3001
# INFO: Started server process [32580]
# INFO: Waiting for application startup.
# INFO: Application startup complete.
# 2025-04-19 00:25:04 devmachine.local mcp_sniffer.proxy[32580] INFO Listening on ('127.0.0.1', 3002)...
# INFO: Uvicorn running on http://127.0.0.1:8888 (Press CTRL+C to quit)
# INFO: 127.0.0.1:52396 - "GET / HTTP/1.1" 200 OK
# INFO: 127.0.0.1:52396 - "GET /assets/index-C93YJcsR.css HTTP/1.1" 200 OK
# INFO: 127.0.0.1:52397 - "GET /assets/index-CwtNIZdB.js HTTP/1.1" 200 OK
# INFO: 127.0.0.1:52397 - "GET /connections HTTP/1.1" 200 OK
Web UI
Visit http://127.0.0.1:8888.
Setup
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_sniffer-0.1.2.tar.gz.
File metadata
- Download URL: mcp_sniffer-0.1.2.tar.gz
- Upload date:
- Size: 19.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e57f4aafa13910544ebaa4164ac003e9245e6dca3fde7fdcb32405edf8697e64
|
|
| MD5 |
6682455bf1b3fe8e55fde7f570919ab2
|
|
| BLAKE2b-256 |
d23ba54a0d9427a8de774b554c861801683a2f71bf75ed6d3d50a16d2d4edb5e
|
Provenance
The following attestation bundles were made for mcp_sniffer-0.1.2.tar.gz:
Publisher:
create-release.yaml on shivdeepak/mcp-sniffer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_sniffer-0.1.2.tar.gz -
Subject digest:
e57f4aafa13910544ebaa4164ac003e9245e6dca3fde7fdcb32405edf8697e64 - Sigstore transparency entry: 199627908
- Sigstore integration time:
-
Permalink:
shivdeepak/mcp-sniffer@95da667ac8211a9fa6688c09a5c4ed4005520391 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/shivdeepak
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
create-release.yaml@95da667ac8211a9fa6688c09a5c4ed4005520391 -
Trigger Event:
workflow_run
-
Statement type:
File details
Details for the file mcp_sniffer-0.1.2-py3-none-any.whl.
File metadata
- Download URL: mcp_sniffer-0.1.2-py3-none-any.whl
- Upload date:
- Size: 22.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf60f4049babd5fe8e6e94841dc17fb675c18c2b7b15057b33f202d1fb5fd1af
|
|
| MD5 |
ee4b2d875538f770d508446e9493ce59
|
|
| BLAKE2b-256 |
d8be3ba60cadacd7aec752dd728c6a0e87a383e19b3818eb1d44361fee606f6c
|
Provenance
The following attestation bundles were made for mcp_sniffer-0.1.2-py3-none-any.whl:
Publisher:
create-release.yaml on shivdeepak/mcp-sniffer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_sniffer-0.1.2-py3-none-any.whl -
Subject digest:
bf60f4049babd5fe8e6e94841dc17fb675c18c2b7b15057b33f202d1fb5fd1af - Sigstore transparency entry: 199627910
- Sigstore integration time:
-
Permalink:
shivdeepak/mcp-sniffer@95da667ac8211a9fa6688c09a5c4ed4005520391 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/shivdeepak
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
create-release.yaml@95da667ac8211a9fa6688c09a5c4ed4005520391 -
Trigger Event:
workflow_run
-
Statement type: