MCP Surface Lint
Statically audits MCP tool surfaces for token cost, schema quality, and design issues.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"mcp-surface-lint": {
"url": "https://mcplint-web.vercel.app/api/mcp"
}
}
}Puntos de conexión remotos
https://mcplint-web.vercel.app/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (1)
🟢check_mcp_server(url, headers, snapshot)
Statically audit an MCP tool surface from a public HTTPS URL or tools/list snapshot. Returns deterministic scores and findings without invoking any target tool or making LLM calls. When the user asks to check another installed MCP server, read that server's complete tool definitions from client context and pass them as snapshot (MCP `name` or Cursor-style `tool` both work; do not use file paths or $ref). If those definitions are unavailable, ask the user for its public endpoint or tools/list JSON instead of inventing an audit.
Esquema de entrada
{
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Public HTTPS Streamable HTTP MCP endpoint to inspect."
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Optional HTTP headers sent only while reading the remote tools/list response."
},
"snapshot": {
"description": "A tools/list JSON response, MCP Surface Lint snapshot, or client tool dump containing a tools array. Each tool needs `name`, or the Cursor-style `tool` alias. Forward another installed server's complete tool definitions here — do not invent schemas."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Esquema de salida
{
"type": "object",
"properties": {
"staticAnalysis": {
"type": "boolean",
"const": true
},
"targetToolsInvoked": {
"type": "boolean",
"const": false
},
"grade": {
"type": "string",
"enum": [
"A",
"B",
"C",
"D",
"F"
]
},
"server": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"version": {
"type": "string"
}
},
"additionalProperties": false
},
"source": {
"type": "string"
},
"stats": {
"type": "object",
"properties": {
"toolCount": {
"type": "integer",
"minimum": 0
},
"approxTokens": {
"type": "integer",
"minimum": 0
},
"encoding": {
"type": "string"
}
},
"required": [
"toolCount",
"approxTokens",
"encoding"
],
"additionalProperties": false
},
"scores": {
"type": "object",
"properties": {
"composite": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"categories": {
"type": "object",
"properties": {
"surface": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"naming": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"descriptions": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"schemas": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"annotations": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"design": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
},
"required": [
"surface",
"naming",
"descriptions",
"schemas",
"annotations",
"design"
],
"additionalProperties": false
}
},
"required": [
"composite",
"categories"
],
"additionalProperties": false
},
"findingCounts": {
"type": "object",
"properties": {
"bySeverity": {
"type": "object",
"properties": {
"error": {
"type": "integer",
"minimum": 0
},
"warn": {
"type": "integer",
"minimum": 0
},
"info": {
"type": "integer",
"minimum": 0
}
},
"required": [
"error",
"warn",
"info"
],
"additionalProperties": false
},
"byCategory": {
"type": "object",
"properties": {
"surface": {
"type": "integer",
"minimum": 0
},
"naming": {
"type": "integer",
"minimum": 0
},
"descriptions": {
"type": "integer",
"minimum": 0
},
"schemas": {
"type": "integer",
"minimum": 0
},
"annotations": {
"type": "integer",
"minimum": 0
},
"design": {
"type": "integer",
"minimum": 0
}
},
"required": [
"surface",
"naming",
"descriptions",
"schemas",
"annotations",
"design"
],
"additionalProperties": false
}
},
"required": [
"bySeverity",
"byCategory"
],
"additionalProperties": false
},
"findings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ruleId": {
"type": "string"
},
"toolName": {
"type": "string"
},
"path": {
"type": "string"
},
"message": {
"type": "string"
},
"evidence": {
"type": "string"
},
"severity": {
"type": "string",
"enum": [
"error",
"warn",
"info"
]
},
"category": {
"type": "string",
"enum": [
"surface",
"naming",
"descriptions",
"schemas",
"annotations",
"design"
]
},
"docsUrl": {
"type": "string"
}
},
"required": [
"ruleId",
"message",
"severity",
"category",
"docsUrl"
],
"additionalProperties": false
}
}
},
"required": [
"staticAnalysis",
"targetToolsInvoked",
"grade",
"server",
"source",
"stats",
"scores",
"findingCounts",
"findings"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Comunidad
Evidencia