Lint MCP tool schemas for cross-client compatibility and agent preflight safety.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Lint MCP server tool schemas for cross-client compatibility.
MCP servers expose tool schemas consumed by Claude, Cursor, Gemini, VS Code Copilot, Windsurf, Cline, OpenAI Agents SDK, and Continue.dev. Each client has different JSON Schema support and quirks β a schema that works in Claude may silently break in Cursor or OpenAI. mcp-lint catches these issues before your users do.
mcp-lint compat β Compatibility MatrixSee exactly which tools work with which clients:
mcp-lint explain β Rule Documentationmcp-lint check [input]Exit codes:
| Code | Meaning |
|---|---|
0 | No errors (warnings don't count) |
1 | One or more errors found |
2 | Invalid input or configuration error |
mcp-lint diff <before> <after>Compare lint results between two versions of your schema β useful in CI to catch regressions.
Exit codes: 0 = no new errors introduced, 1 = new errors found, 2 = error
mcp-lint fix [input]Auto-fixes issues that are safe to fix automatically (no semantic changes).
mcp-lint initCreates a default .mcplintrc.json in the current directory.
| Rule | Severity | Fixable | Description |
|---|---|---|---|
no-required-false | π΄ error | β | required: false on properties is not valid JSON Schema |
no-content-encoding | π΄ error | β | contentEncoding is not supported by MCP clients |
no-empty-enum | π΄ error | β | Empty enum: [] makes a parameter impossible to satisfy |
no-recursive-refs | π΄ error | β | Circular $ref causes crashes in most clients |
valid-json-schema-subset | π΄ error | β | Unsupported keywords: oneOf, anyOf, allOf, if/then/else, not, patternPropertiesβ¦ |
description-exists | π‘ warning | β | Tools and parameters should have descriptions |
max-depth | π‘ warning | β | Schema nesting deeper than 5 levels hurts LLM comprehension |
no-unsupported-formats | π‘ warning | β | Obscure format values (iri, json-pointer, regexβ¦) not widely supported |
| Rule | Severity | Fixable | Description |
|---|---|---|---|
claude/no-type-array | π‘ warning | β | "type": ["string", "null"] array syntax may not work correctly in Claude |
| Rule | Severity | Fixable | Description |
|---|---|---|---|
cursor/no-default-without-type | π΄ error | β | Cursor requires explicit type when a default value is present |
cursor/no-missing-title | π‘ warning | β | Cursor displays tool and parameter titles in the tool picker |
| Rule | Severity | Fixable | Description |
|---|---|---|---|
gemini/no-optional-without-default | π‘ warning | β | Gemini handles optional params better when default is explicit |
gemini/no-nested-objects | π‘ warning | β | Gemini has limited support for object properties nested more than 2 levels |
| Rule | Severity | Fixable | Description |
|---|---|---|---|
vscode/max-params | π‘ warning | β | VS Code Copilot performance degrades with more than 15 parameters |
| Rule | Severity | Fixable | Description |
|---|---|---|---|
windsurf/no-union-types | π‘ warning | β | anyOf with more than 2 variants not supported |
| Rule | Severity | Fixable | Description |
|---|---|---|---|
cline/description-max-length | π‘ warning | β | Descriptions over 200 characters are truncated by Cline |
| Rule | Severity | Fixable | Description |
|---|---|---|---|
openai/no-additional-properties | π΄ error | β | Strict mode requires additionalProperties: false on root inputSchema |
openai/strict-types | π΄ error | β | Only string, number, boolean, object, array, null allowed |
| Rule | Severity | Fixable | Description |
|---|---|---|---|
continue/no-default-values | π‘ warning | β | Continue.dev ignores default fields β document defaults in descriptions instead |
mcp-lint auto-discovers .mcplintrc.json starting from the current directory up to your home folder. Override with --config.
Use "extends" to start from a built-in preset:
| Preset | Description |
|---|---|
recommended | All 8 clients enabled, default severities |
strict | All rules set to error, maxDepth: 3 |
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-lint)<a href="https://allmcps.com/mcp/mcp-lint"><img src="https://allmcps.com/api/badge/mcp-lint?style=directory" alt="MCP Lint on AllMCPs" /></a>