All notable changes to MCP Audit will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Note: Starting with v0.5.0, all entries reference GitHub Issues (e.g.,
[#16](url)). Earlier versions reference internal task IDs (e.g.,Task 69).
- README overhaul for better onboarding
- New "What mcp-audit Does (At a Glance)" section with categorized features
- Highlighted platform Getting Started guides in Documentation section
- Renamed FAQ sections: "MCP Problems mcp-audit Helps Solve" and "Usage & Support FAQ"
- Consolidated Compatibility section (Python + Platform support)
- Dynamic version badge in "What's New" section
- PyPI page improvements
- All relative links converted to full GitHub URLs for PyPI compatibility
- Fixed GitHub-only
[!TIP]alert syntax for cross-platform rendering - Converted HTML table to Markdown for consistent rendering
- Added
SourceandDiscussionsproject URLs
- PyPI URL verification - Publish workflow now runs from public repo
- OIDC token originates from
littlebearapps/mcp-audit(public) - All GitHub URLs now eligible for PyPI "Verified" status
- New
publish-pypi.ymlworkflow for Trusted Publishing
- OIDC token originates from
- Demo GIF display on PyPI - Use absolute URL for cross-platform compatibility
- MCP tool token estimation for Codex CLI and Gemini CLI (Task 69)
TokenEstimatorclass with platform-specific tokenizers- Codex CLI: tiktoken o200k_base (~99-100% accuracy)
- Gemini CLI: SentencePiece/Gemma (100%) or tiktoken fallback (~95%)
- Per-tool estimated tokens shown in TUI and session logs
FUNCTION_CALL_OVERHEADconstant (25 tokens) for API formatting
- Schema v1.4.0 - Per-call estimation metadata
is_estimatedfield indicates estimated vs native tokensestimation_methodfield (tiktoken/sentencepiece/character)estimation_encodingfield (o200k_base/gemma/cl100k_base)
- Theme system with Catppuccin support (Task 83)
- Catppuccin Mocha (dark) and Latte (light) color palettes
- High-contrast themes (hc-dark, hc-light) meeting WCAG AAA
- Auto-detection of terminal background color
--themeCLI option: auto, dark, light, hc-dark, hc-lightMCP_AUDIT_THEMEenvironment variable
- ASCII mode for terminals without unicode support
--asciiflag orMCP_AUDIT_ASCII=1environment variable- Box-drawing with ASCII characters, no emoji
- NO_COLOR standard compliance - no-color.org
- Set
NO_COLOR=1to disable all color output
- Set
- GitHub Release download for Gemma tokenizer (Task 96)
mcp-audit tokenizer downloadfetches from GitHub Releases (no signup)--sourceflag (github/huggingface)--releaseflag to download specific version- SHA256 checksum verification
- Version tracking via
tokenizer.meta.json
- "Noisy fallback" pattern - Users informed when using approximate accuracy
- One-time hint during Gemini CLI collection about tokenizer download
mcp-audit tokenizer statusshows accuracy implications
- Manual installation guide -
docs/manual-tokenizer-install.mdfor corporate networks
- Package size reduced from ~5MB to <500KB - Gemma tokenizer now optional download
- Pip package no longer bundles the 4MB tokenizer
- Tokenizer available via
mcp-audit tokenizer download - Gemini CLI works immediately with ~95% accuracy (tiktoken fallback)
- TUI enhancements
- Token panel title shows estimation method when applicable
- Final summary shows estimation stats (e.g., "5 calls with tiktoken estimation")
- Theme-aware colors throughout
- Improved
mcp-audit tokenizer statusoutput - Clearer terminology- Shows "Downloaded (persistent)" instead of "cached"
- Displays version and download timestamp
- Path traversal protection for tarball extraction (
_validate_tarball_member()) - SHA256 checksum verification for downloaded tokenizer integrity
- Gemini CLI users: Run
mcp-audit tokenizer downloadfor 100% token accuracy - Claude Code users: No action needed - has native per-tool token attribution
- Codex CLI users: No action needed - uses tiktoken (~99-100% accuracy)
- Corporate network users: See
docs/manual-tokenizer-install.md
- Schema v1.3.0: Reasoning tokens - Track thinking/reasoning tokens separately from output
reasoning_tokensfield intoken_usageblock- Codex CLI: maps to
reasoning_output_tokens(o-series models) - Gemini CLI: maps to
thoughts(Gemini 2.0+ responses) - Claude Code: always 0 (no thinking tokens exposed)
- TUI displays "Reasoning" row only when > 0 (auto-hides for Claude Code)
- Schema v1.2.0: Built-in tool tracking - Persist built-in tool stats to session files
builtin_tool_summaryblock with per-tool calls and tokens- Claude Code: Full token attribution per built-in tool
- Codex CLI / Gemini CLI: Call counts only (no per-tool tokens)
- BUILTIN_TOOLS documentation - Official tool names from upstream sources
CLAUDE_CODE_BUILTIN_TOOLS(18 tools) from anthropics/claude-codeCODEX_BUILTIN_TOOLS(11 tools) from openai/codexGEMINI_BUILTIN_TOOLS(12 tools) from google-gemini/gemini-cli
- Automated test harness - Cross-platform testing scripts
scripts/test-harness.sh- Automated testing with--platformand--quickflagsscripts/compare-results.sh- Test result analysis and regression detectiondocs/automated-testing-plan.md- Complete test strategy documentationdocs/local-testing-guide.md- Manual testing procedures
- Comprehensive platform validation - Tasks 75-77 completed
- Claude Code, Codex CLI, and Gemini CLI thoroughly validated
- Evidence directories with TUI captures and session analysis
- Data contract - Updated to schema v1.3.0 with full backward compatibility
- Added
reasoning_tokensfield documentation - Added
builtin_tool_summaryblock documentation (v1.2.0) - Updated platform-specific behavior tables
- Added
- Platform documentation - Updated PLATFORM-TOKEN-CAPABILITIES.md
- Documented reasoning token support per platform
- Documented built-in tool tracking differences
- Codex CLI token double-counting (Task 79) - Critical bug fix
- Root cause: Codex CLI native logs contain duplicate
token_countevents - Old behavior: Summing
last_token_usage(delta) caused double-counting - New behavior: Use cumulative
total_token_usageand REPLACE session totals - Accurate token tracking regardless of duplicate events in logs
- Root cause: Codex CLI native logs contain duplicate
- Gemini CLI adapter rewrite - Complete rewrite to parse native JSON session files
- No OTEL/telemetry setup required - reads
~/.gemini/tmp/<hash>/chats/session-*.jsondirectly - Project hash auto-detection from working directory (SHA256)
- Per-message token tracking: input, output, cached, thoughts, tool, total
- Thinking tokens tracked separately (
thoughts_tokensfield) - Tool call detection via
toolCallsarray withmcp__prefix filtering - Model detection from session data
- No OTEL/telemetry setup required - reads
- Codex CLI adapter enhancements - File-based session reading without subprocess wrapping
- Session auto-discovery with
--latestflag - Date range filtering with
--sinceand--untiloptions - File watcher for live session monitoring
- Session auto-discovery with
- Platform-aware reports - New
--platformfilter formcp-audit report- Multi-platform aggregation in reports
- Platform breakdown in summary statistics
- Unified cost comparison - Cross-platform cost efficiency analysis
- Cost per 1M tokens by platform
- Cost per session by platform
- "Most efficient platform" indicator
- Setup guides - Comprehensive documentation for each platform
docs/codex-cli-setup.md- Codex CLI installation and usagedocs/gemini-cli-setup.md- Gemini CLI installation and usage
- Gemini model pricing - Added Gemini 2.0, 2.5, and 3.0 series to
mcp-audit.toml - Codex model pricing - Added GPT-5 series and Codex-specific models
- Gemini CLI - Removed OTEL telemetry dependency entirely
- Documentation - Updated architecture.md, ROADMAP.md, platform docs for new adapters
- Examples - Updated gemini-cli-session example with new JSON format
- Gemini CLI tracking - Now works out-of-the-box without any telemetry configuration
- Public sync workflow - Fixed sync to include hidden files (.github/)
- GitHub topics - Synced 14 repository topics to public repo
- Collapsible table of contents - README now has expandable TOC for easier navigation
- GIF caption - Demo GIF has descriptive caption like competitor ccusage
- Lightweight badge - Added <500KB install size feature highlight
- README overhaul - Complete restructuring with competitor comparison, better messaging, and improved layout
- Side-by-side audience cards for MCP developers and power users
- Collapsible FAQ section with accordions
- Enhanced "Why mcp-audit?" section with ccusage distinction
- SEO improvements for discoverability
- Repository hygiene - Internal development files now gitignored (CLAUDE.md, quickref/, backlog/, etc.)
- Version display - TUI header now shows mcp-audit version and session logs include
mcp_audit_versionfield - Comprehensive adapter tests - Added
test_codex_cli_adapter.pywith 28 tests for Codex CLI format
- Codex CLI adapter - Rewrote
parse_event()to handle actual JSONL format correctly (#24)turn_contextevents for model detectionevent_msgwithtoken_countfor usage trackingresponse_itemwithfunction_callfor MCP tool calls
- FAQ section - Added common questions to README
- Claude Code tracking - Fixed critical bug where new session files created during monitoring were missed
- Root cause:
_find_jsonl_files()filtered out empty files (st_size > 0) - When Claude Code creates a new session file (initially empty), mcp-audit excluded it
- Once Claude Code wrote content, mcp-audit found the file but set position to END, missing all events
- Fix: Include all .jsonl files, check file creation time for new files discovered during monitoring
- If file created after tracking started, read from beginning (position 0)
- If file created before, read only new content (position at END)
- Root cause:
- Session token tracking - Track session tokens for all assistant messages, not just MCP calls (#21)
- Single source version - Version now defined only in
pyproject.toml, read dynamically viaimportlib.metadata - Email update - Changed contact email from contact@ to help@littlebearapps.com
- Release docs - Added Releasing section to CLAUDE.md with version flow and checklist
- Version mismatch - CLI
--versionnow always matches PyPI package version (was showing 0.3.4 when package was 0.3.5)
- Version sync - Synced
__version__in__init__.pywithpyproject.toml(both now 0.3.6)
- Auto GitHub Releases - Version bumps now auto-create GitHub Releases with generated notes
- Dependencies badge - Added libraries.io badge to README
- Model pricing - Updated mcp-audit.toml with all current models (Claude, OpenAI, Gemini) with USD labels
- TUI display - Cost now shows "Cost (USD):" for clarity
- Legacy files - Removed COMMANDS.md, model-pricing.json, usage-wp-nav.sh, live-session-tracker.sh
- TestPyPI - Removed unused TestPyPI job from publish workflow
- Codebase cleanup - Removed 12 legacy Python scripts from root directory (now in src/mcp_audit/)
- Documentation updates - Updated all docs to use
mcp-auditCLI instead of npm scripts - PyPI keywords - Updated keywords for better discoverability (context-window, token-tracking, llm-cost)
- Type annotations - Fixed all mypy strict mode errors in session_manager.py, cli.py, and storage.py
- Project name detection - Now correctly detects git worktree setups (project-name/main → project-name)
- Troubleshooting docs - Complete rewrite to use
mcp-auditCLI commands
- CodeQL workflow - Explicit
codeql.ymlfor badge compatibility and consistent security scanning - Auto-tag workflow - Automatic git tagging on version bumps for seamless PyPI publishing
- Release documentation - Added Releasing section to CONTRIBUTING.md
- GitHub topics - 10 topics for discoverability (mcp, claude-code, codex-cli, etc.)
- CONTRIBUTING.md - Root-level contributing guide (GitHub standard location)
- Makefile - Build targets for gpm verify (lint, typecheck, test, build)
- README badges - Updated to shields.io format with PyPI version/downloads
- Installation docs - Added pipx as installation option
- CLAUDE.md - Added explicit PR merge approval requirement
- CI workflow - Hardened publish.yml to require CI pass before PyPI publish
- gpm integration - Fixed mypy verification to only check src/ directory
- PyPI distribution - Now installable via
pip install mcp-auditorpipx install mcp-audit - Rich TUI display - Beautiful terminal dashboard with live updating panels
- Auto TTY detection (TUI for terminals, plain text for CI)
- Display modes:
--tui,--plain,--quiet - Configurable refresh rate with
--refresh-rate
- Gemini CLI adapter - Full support for tracking Gemini CLI sessions via OpenTelemetry
- Display adapter pattern - Modular display system (RichDisplay, PlainDisplay, NullDisplay)
- CLI command -
mcp-auditcommand withcollectandreportsubcommands - Proper package structure - Modern
src/layout following Python packaging best practices - Type hints - Full type annotations with
py.typedmarker for editor support - GitHub Actions - Automated CI/CD pipeline with PyPI publishing on releases
- JSONL storage system - Efficient session storage with indexing for fast queries
- Platform adapters - Modular architecture for adding new platform support
- Restructured project from flat files to
src/mcp_audit/package - Updated from Phase 1 (Foundation) to Phase 2 (Public Beta)
- Improved test organization with dedicated
tests/directory - Enhanced pyproject.toml with modern Python packaging standards
- License deprecation warnings in setuptools
- Test imports for new package structure
- BaseTracker abstraction - Platform-agnostic tracker base class
- Schema v1.0.0 - Locked data schema with backward compatibility guarantees
- Pricing configuration - TOML-based model pricing with Claude and OpenAI support
- CI/CD pipeline - GitHub Actions with pytest, mypy, ruff, and black
- JSONL storage - Session persistence with 57 comprehensive tests
- Complete documentation - Architecture docs, data contract, contributing guide
- Migrated from single-file scripts to modular architecture
- Added strict mypy type checking
- Standardized code formatting with black
- Initial implementation
- Claude Code session tracking
- Codex CLI session tracking
- Real-time token usage display
- Cross-session analysis
- Duplicate detection
- Anomaly detection