I built mcp-footprint to see how large tool definitions are in a captured MCP catalog and which ones repeat across servers.
A tools/list response can include a full JSON schema for every tool. With several servers, it's hard to compare definition sizes or spot repeats in the raw JSON. mcp-footprint takes saved listings and turns them into byte counts and a local report.
What it reports
The CLI sorts object keys recursively before serialization. It counts the UTF-8 bytes in each complete canonical tool definition, then counts the canonical aggregate catalog. A proportional map shows definition bytes by server. Searchable rows let you open each captured definition. Cross-server comparisons identify exact definitions, same-name differences, and similar descriptions. A pair can have more than one label.
The estimate is ceil(catalogBytes / 4). It's a rough byte-based proxy, not tokenizer output or a measurement of client context use.
Try the demo
The demo uses bundled synthetic snapshots. It starts no server and makes no network request. The CLI needs Node.js 20 or newer and has no runtime dependencies.
npx --yes --package git+https://github.com/Arthur031221/mcp-footprint mcp-footprint --demo --html footprint.html
For real data, save a complete tools/list result or its JSON-RPC response as JSON. The CLI also accepts an aggregate object with a servers array, where each entry has a name and a tools array. Capture every page first. If the response contains a non-empty nextCursor, the tool refuses to treat it as a complete catalog.
node bin/mcp-footprint.js --input files=files-tools.json --input search=search-tools.json --html footprint.html --json footprint.json
Why save the input first
Saving the input makes measurements repeatable. The report describes the JSON you provide, not a live server state. Keep the snapshot beside a test run, compare it after a schema change, and inspect the generated HTML without granting the tool server access. The HTML embeds the captured descriptions and schemas, so review it before sharing.
This is a CLI and JavaScript library, not an MCP server. It doesn't call tools or recommend removing them. I'd like feedback on the snapshot formats and which report details are useful during catalog review.

Top comments (0)