Reference

FAQ

Scope, limits, and where mcplint fits next to the tools you already use.

Questions

Does it need a network or a running server?

No network. --tools and --config are fully local. A server command is started locally over stdio, asked for tools/list, and then closed; nothing else is sent. There are no uploads and no telemetry.

What inputs can it audit?

A saved tools/list payload (an array, a {"tools":[...]} object, or a raw response), an mcp.json config with an mcpServers or servers object, or a server command it starts itself. See Usage.

Which clients does it know about?

Six built-in profiles: claude, openai, gemini, foundry, copilot, and a permissive generic. Each profile defines the accepted tool-name and property-name characters, the allowed root shape, and the preferred JSON Schema draft. See Rules.

How accurate is the token count?

It is an estimate, not a billing figure. Definitions are measured with a characters-over-four heuristic, which tracks context cost closely enough to compare servers and catch a budget blowout, but it is not a tokenizer for any specific model.

Does it need a browser or a build step?

No. mcplint runs as a command-line program with no rendering step, so it works the same on a laptop, in a container, or in air-gapped CI.

How do I fail CI on warnings too?

Run mcplint --tools tools.json --fail-on warning. It affects only the exit code; every finding is still reported and included in JSON and SARIF output.

What do the exit codes mean?

0 when nothing is at or above --fail-on, 1 when a finding is, 2 on invalid usage or unparseable input, and 3 on an I/O failure such as a file that cannot be read or a server that will not start.

Limitations

Static analysis

mcplint reads tool definitions; it does not execute tools or inspect their implementation. The client profiles encode documented behavior and may lag a client's latest release. Token counts are estimates. A clean run means the definitions are well-formed for the chosen profile, the surface is not obviously risky, and the cost is within budget, not that the server is safe.

How it compares

MCP Inspector
An interactive debugging UI for connecting to a server and calling its tools by hand. mcplint is a non-interactive audit designed to run in a pipeline, with a stable exit code, JSON, and SARIF. github.com/modelcontextprotocol/inspector
ajv and JSON Schema validators
Validate data against a schema. They say nothing about whether a client will accept the schema shape itself, which is what makes a tool disappear. github.com/ajv-validator/ajv
ESLint and TypeScript
Lint application code before it is serialized. They never see the tools/list payload that a client actually receives, so they cannot measure its cost or its shape.
MCP server SDK
Registers tools and serves them. It does not tell you which client will drop a schema, what the definitions cost, or which inputs are risky sinks.
The MCP specification
Defines the protocol precisely, but ships no implementation you can run in CI. mcplint turns the parts clients are strict about into a gate. modelcontextprotocol.io