Rams

Design review for UI code: 291 rules, scored 0-100 with fixes and git-applyable patches.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
83%
Calidad de los nombres
90%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,671Tokens (definiciones de herramientas)
~3.5 KBTamaño de respuesta típico
Impacto moderado en la atención (1.31% del contexto de 128k)

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": {
    "rams": {
      "url": "https://worker.rams.ai/mcp"
    }
  }
}

Puntos de conexión remotos

https://worker.rams.ai/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (4)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢usage

Check how many Rams reviews this workspace has used and has left (rolling 30 days, shared between the GitHub App and MCP). Free to call — does not consume a review.

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢review_files(files, context, via)

Run a Rams design review over UI files (React, Vue, Svelte, CSS). Returns a 0-100 score (criticals cap it: one caps at 59, two at 49, three or more at 39), issues with severity, category, file:line, and concrete fixes. Call it whenever UI code has been written or changed: before committing, when the user asks how the design looks, or to check your own work after editing a component. Reviewing the handful of files you just touched is the normal case — it is cheap, and you do not need to ask permission first. Only a whole-codebase audit (dozens of files across many batches) is worth checking with the user, since it consumes the calling agent's context and a large share of their model allowance; prefer the highest-traffic screens in that case.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "File path, e.g. src/components/Button.tsx"
          },
          "content": {
            "type": "string",
            "description": "Full file content"
          }
        },
        "required": [
          "path",
          "content"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 20,
      "description": "UI files to review (up to 20)"
    },
    "context": {
      "type": "string",
      "description": "Short label for this review, e.g. the feature or branch name"
    },
    "via": {
      "type": "string",
      "description": "Set to \"rules\" when this call is made because of a standing instruction in a rules file (e.g. CLAUDE.md). Omit when a person asked for the review."
    }
  },
  "required": [
    "files"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "score": {
      "type": "number",
      "description": "0-100; confirmed criticals cap it — one at 59, two at 49, three or more at 39"
    },
    "direction": {
      "type": "string",
      "description": "What the change is trying to be — judgment before findings"
    },
    "summary": {
      "type": "string"
    },
    "detectedCounts": {
      "type": "object",
      "properties": {
        "critical": {
          "type": "number"
        },
        "serious": {
          "type": "number"
        },
        "moderate": {
          "type": "number"
        }
      },
      "required": [
        "critical",
        "serious",
        "moderate"
      ],
      "additionalProperties": false
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "severity": {
            "type": "string"
          },
          "category": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "file": {
            "type": "string"
          },
          "line": {
            "type": "number"
          },
          "fix": {
            "type": "string",
            "description": "The fix as prose/code"
          },
          "patch": {
            "type": "string",
            "description": "RAMS-121: unified diff against the submitted file content, git-apply-able. Present only when the fix locates unambiguously."
          }
        },
        "required": [
          "severity",
          "category",
          "title",
          "message",
          "file",
          "line"
        ],
        "additionalProperties": false
      }
    },
    "reviewsUsed": {
      "type": "number"
    },
    "reviewsLimit": {
      "type": [
        "number",
        "null"
      ],
      "description": "null = unlimited (Team overage applies instead)"
    }
  },
  "required": [
    "score",
    "summary",
    "detectedCounts",
    "issues",
    "reviewsUsed",
    "reviewsLimit"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡quick_review(files, context, via)

Fast design check over the UI files you just changed. Returns issues with severity, category and file:line, in about 10 seconds. Cheap: five quick checks cost one review credit (two on the free plan), so a whole editing session spends a fraction of one review. Use this one CONSTANTLY: after writing or editing a component, before committing, whenever you want to know if what you just wrote is sound. You do not need to ask the user first. It returns no score and no ready-made patch: fix the issues yourself in the files you already have open. When the user wants a score to keep, a patch to apply, or a review to quote, use review_files instead.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "File path, e.g. src/components/Button.tsx"
          },
          "content": {
            "type": "string",
            "description": "Full file content"
          }
        },
        "required": [
          "path",
          "content"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 20,
      "description": "The UI files you just changed"
    },
    "context": {
      "type": "string",
      "description": "Short label, e.g. the component or feature name"
    },
    "via": {
      "type": "string",
      "description": "Set to \"rules\" when this call is made because of a standing instruction in a rules file (e.g. CLAUDE.md). Omit when a person asked for the review."
    }
  },
  "required": [
    "files"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_fixes(files, issues)

Re-check previous review_files findings against updated file contents. Returns fixed vs still-present per finding. Much cheaper and faster than a full re-review; does NOT consume review quota. Use after applying fixes.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "File path, e.g. src/components/Button.tsx"
          },
          "content": {
            "type": "string",
            "description": "Full file content"
          }
        },
        "required": [
          "path",
          "content"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 20,
      "description": "The updated UI files (same paths as the original review)"
    },
    "issues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "severity": {
            "type": "string",
            "enum": [
              "critical",
              "serious",
              "moderate"
            ]
          },
          "category": {
            "type": "string"
          },
          "rule": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "file": {
            "type": "string"
          },
          "line": {
            "type": "number"
          },
          "current": {
            "type": "string",
            "description": "The flagged code from the original finding"
          }
        },
        "required": [
          "severity",
          "category",
          "file",
          "line"
        ],
        "additionalProperties": false
      },
      "minItems": 1,
      "maxItems": 30,
      "description": "The findings to verify, as returned by review_files"
    }
  },
  "required": [
    "files",
    "issues"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "fixed": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "file": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          }
        },
        "required": [
          "file",
          "severity"
        ],
        "additionalProperties": false
      }
    },
    "present": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "file": {
            "type": "string"
          },
          "line": {
            "type": "number"
          },
          "title": {
            "type": "string"
          },
          "severity": {
            "type": "string"
          }
        },
        "required": [
          "file",
          "line",
          "severity"
        ],
        "additionalProperties": false
      }
    },
    "allClear": {
      "type": "boolean",
      "description": "true when nothing remains, including no remaining criticals"
    }
  },
  "required": [
    "fixed",
    "present",
    "allClear"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada4 herramientas
verificadoversión no registrada4 herramientas