DEV Community

Arthur031221
Arthur031221

Posted on

Comparing MCP tool definitions from saved tools/list responses

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.

Terminal demo

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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.

Source: https://github.com/Arthur031221/mcp-footprint

Top comments (0)