packmate-mcp
MCP server that exposes Packmate — a CTF network traffic analyzer — to LLM tooling like Claude Desktop or Claude Code.
Features
- 16 tools across services, patterns, streams, packets, and pcap-file lifecycle.
- Packet content formatting tuned for LLM consumption:
transcript(auto text/hex withclient→servermarkers),text,hex,python_bytes,base64. - Three-layer trimming (per-packet, total budget, packet count) to keep responses inside the LLM context window.
- Pure async
httpxclient over Packmate's HTTP API + Basic Auth. - stdio transport — drop into Claude Desktop or Claude Code as a subprocess.
Install
uvx packmate-mcp # ephemeral, recommended
# or
pip install packmate-mcp
Configure
All settings are env vars with the PACKMATE_MCP_ prefix:
| Env var | Default | Description |
|---|---|---|
PACKMATE_MCP_BASE_URL |
http://localhost:65000 |
Packmate base URL |
PACKMATE_MCP_LOGIN |
(required) | Basic auth login |
PACKMATE_MCP_PASSWORD |
(required) | Basic auth password |
PACKMATE_MCP_TIMEOUT_SECONDS |
30 |
HTTP request timeout |
PACKMATE_MCP_LOG_LEVEL |
INFO |
DEBUG/INFO/WARNING/ERROR/CRITICAL |
See .env.example for a starter template.
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %AppData%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"packmate": {
"command": "uvx",
"args": ["packmate-mcp"],
"env": {
"PACKMATE_MCP_BASE_URL": "http://localhost:65000",
"PACKMATE_MCP_LOGIN": "BinaryBears",
"PACKMATE_MCP_PASSWORD": "..."
}
}
}
}
Restart Claude Desktop fully (Cmd+Q / tray → Quit), then look for the connector under the + menu.
Claude Code
claude mcp add packmate uvx packmate-mcp \
--env PACKMATE_MCP_LOGIN=BinaryBears \
--env PACKMATE_MCP_PASSWORD=...
Tools
See the design spec for the full list. Highlights:
get_stream(stream_id, content_format='transcript')— fetch a stream with packets pre-rendered. Most common entrypoint.create_pattern+pattern_lookback+list_streams(pattern_id=…)— the native Packmate workflow for content search.set_stream_favorite(stream_id, favorite=True/False)— pin interesting streams.pcap_status/pcap_start— kick off pcap-file processing in FILE mode.
Development
git clone https://github.com/umbra2728/packmate-mcp
cd packmate-mcp
uv sync --dev
uv run pytest
uv run ruff check src tests
uv run mypy src
Manual smoke test against a real Packmate instance:
# in the Packmate repo
docker compose up -d
# back here
PACKMATE_MCP_LOGIN=BinaryBears PACKMATE_MCP_PASSWORD=123456 \
uv run mcp dev src/packmate_mcp/server.py
This opens the MCP Inspector and lets you exercise each tool.
Releasing
This package ships to PyPI via Trusted Publishing. The workflow runs on any v*.*.* tag.
- Bump
versioninpyproject.toml. - Add a
## [X.Y.Z] - YYYY-MM-DDsection toCHANGELOG.md. - Commit, tag, push:
git commit -am "Release vX.Y.Z"
git tag vX.Y.Z
git push --tags
One-time setup (not in repo state):
- On PyPI → Account settings → Add a pending publisher with repo
umbra2728/packmate-mcp, workflowrelease.yml, environmentpypi. - On GitHub → repo → Settings → Environments → create
pypi.
Related
- firegex-mcp — sibling MCP server for Firegex (PCRE2 regex / proxy WAF).
- ad-ctf-toolkit — Claude Code plugin that combines
packmate-mcpandfiregex-mcpwith skills and sub-agents for Attack/Defense CTF rounds.
License
MIT — see LICENSE.
Metadata
Release files for packmate-mcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| packmate_mcp-0.1.1.tar.gz | 127.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| packmate_mcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 145.3 kB
Release files / packmate_mcp-0.1.1.tar.gz
| Download URL | packmate_mcp-0.1.1.tar.gz |
|---|---|
| Size | 127.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b992fa33fdcbbb397a6620d4519ab34b4e80643aa5da73a6c2683fc84f052f3b
|
|
BLAKE2b-256 checksum How to use checksums |
fcb42c9f64af7416435aacbc52ee3fc6933b1f0def0cefe14742dc3ac047d3fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 13, 2026.
Transparency logRelease files / packmate_mcp-0.1.1-py3-none-any.whl
| Download URL | packmate_mcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 17.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d8b12be49956389fdb7681580fc01d9eace953f0db14768b5f23a0170bb988f9
|
|
BLAKE2b-256 checksum How to use checksums |
04345c707e2c30be866ad37e4a5d42ebb0cc656f280a6a541bbaf586c5f862bd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 13, 2026.
Transparency log