Your tools cost tokens in every single conversation.
Every MCP server ships its whole tools/list payload into the model's context before the user has typed a word. mcplint measures that footprint, then statically audits the tool surface for the design smells that make agents pick the wrong tool — naming drift, CRUD mirrors, overlapping descriptions, unbounded lists.
What it checks
Nineteen rules across six categories. Tier 1 is hygiene — missing descriptions, loose schemas, absent annotations. Tier 2 is the interesting half: design. Whether your surface mirrors your REST API instead of your users' intents, whether two tools are confusable, whether an enum is buried in prose where the model can't see it. Read the rule catalogue →
It runs locally too
Keep private schemas and credentials on your machine, audit stdio servers, or add a deterministic quality gate to CI.
npx mcp-surface-lint --stdio "node dist/server.js"npx mcp-surface-lint https://example.com/mcpnpx mcp-surface-lint snapshot.json --fail-under 80Use it from your AI client
Add the hosted, stateless MCP endpoint to Cursor, VS Code, Claude, Windsurf, or another Streamable HTTP client. Then ask your agent to audit a server and turn the structured findings into a concrete refactor plan.
check_mcp_server reads the tool surface and never calls target tools.