Skip to content

Rebuild as the FrameCite MCP server - #1

Merged
daniissac merged 5 commits into
mainfrom
agent/visibility-upgrade
Jul 15, 2026
Merged

Rebuild as the FrameCite MCP server#1
daniissac merged 5 commits into
mainfrom
agent/visibility-upgrade

Conversation

@daniissac

@daniissac daniissac commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Summary

  • Replace the Streamlit/FastAPI/LLM application with FrameCite, a local stdio MCP server for evidence-first PCAP troubleshooting.
  • Parse PCAP and PCAPNG directly with Scapy; no Wireshark, TShark, cloud analysis service, model API key, Docker stack, live capture, packet injection, shell surface, or raw-payload tool.
  • Expose six bounded read-only troubleshooting tools, sanitized resources, strict input/output schemas, and an evidence-citing triage prompt.
  • Accept either a root-confined local capture or one host-provided attachment using the documented openai/fileParams object shape.
  • Discard raw payload bytes during ingestion, session-tokenize DNS names, and require every generated conclusion to cite 1-based packet evidence.

Extension attachment path

  • open_capture accepts exactly one of path or capture_file; no local root is required for attachment-only use.
  • Attachments are retrieved only from an exact operator-trusted HTTPS host with TLS verification, environment proxies disabled, bounded redirects, fixed network timeouts, and streaming size enforcement.
  • The downloader rejects IP and numeric host aliases, Unicode hostname ambiguity, user information, fragments, non-default ports, compressed/partial responses, invalid lengths, and allowlist-escaping redirects.
  • Bytes are staged in an exclusive mode-0600 temporary file, accepted by PCAP/PCAPNG magic rather than untrusted names or MIME values, parsed locally, and deleted before the call completes.
  • Ingestion is single-flight and cancellation-safe. Signed URLs, host file IDs, original names, malformed input values, temporary paths, raw packets, and payload bytes are not retained or returned.

Deterministic checks

  • TCP resets, zero windows, sequence-aware SYN/SYN-ACK pairing, repeated SYNs, missing SYN-ACKs, and repeated sequence ranges.
  • DNS response codes, chronological transaction pairing, repeated identical queries, and multicast-DNS separation without claiming a timeout beyond capture evidence.
  • IPv4 and IPv6 ICMP error observations in capture summaries.
  • Structural PCAP record and PCAPNG block validation, exact timestamp normalization, separate captured/wire lengths, and timestamp-regression disclosure.
  • Conservative whole-item token budgets, pagination, and capture/query-bound signed cursors.

Public capture compatibility

  • 11 immutable, hash-pinned captures from official Wireshark, tcpdump, libpcap, and Tcpreplay repositories.
  • 236 packets covering classic and nanosecond PCAP, little- and big-endian PCAPNG, Ethernet, QinQ, raw IPv4/IPv6, Linux cooked capture, DNS over UDP/TCP, long IPv6 extension chains, TCP faults, ICMP, and a mixed workload.
  • The runner verifies exact sizes and SHA-256 values, redaction, deterministic evidence, budgets, pagination, all six tools, the attachment downloader, and a real stdio process.
  • The primary corpus is 80,191 bytes; the attachment-path re-fetch verifies another 420 bytes, for 80,611 verified transfer bytes. Temporary files are deleted and never uploaded as artifacts.

Validation

  • ruff check src tests scripts
  • ruff format --check src tests scripts
  • pytest — 102 tests
  • Full suites on Python 3.10, 3.12, and 3.14
  • python scripts/verify_public_corpus.py — 11 captures / 236 packets
  • MCP Registry server.json validation against the official schema
  • Source distribution and wheel builds
  • Clean-wheel, rootless stdio startup and six-tool discovery
  • Every reachable commit author and committer is Dani Issac; no Co-authored-by trailers exist

Naming

FrameCite communicates the product promise: conclusions tied to cited packet frames. Exact-name checks found no GitHub repository, PyPI package, npm package, official MCP Registry entry, obvious exact-name website, registered .com, or active .com/.io/.dev A record as of 2026-07-15. This is collision screening, not trademark clearance.

Release note

This is an intentional breaking replacement of the former PacketPilot web application. The first PyPI and MCP Registry publications remain separate release actions; GitHub installation works after this PR reaches the default branch.

@daniissac daniissac changed the title Add CI coverage and safer usage guidance Rebuild as the FrameCite MCP server Jul 15, 2026
@daniissac
daniissac marked this pull request as ready for review July 15, 2026 15:58
@daniissac
daniissac merged commit 463e2a9 into main Jul 15, 2026
4 checks passed
@daniissac
daniissac deleted the agent/visibility-upgrade branch July 15, 2026 16:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant