Norma by Quality Clouds
Deterministic code governance for AI coding agents.
Что умеет
- Get Rules For Ruleset: Returns the rules in one Norma ruleset: each rule's id, name, severity, impact area, description and fix guidance. These are the standards your code is judged against, not sugge
- Get Rulesets: Returns the Norma rulesets available for this repository's tech stack, detected automatically with no configuration. One ruleset per language or framework, for example typescript-norma-r
- Live Check: Runs a deterministic Norma Livecheck on one file against your organization's rules and returns the violations found. Same file, same rules, same verdict every time. Nothing is stored: file
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Deterministic code governance for AI coding agents. Norma checks code against your organization's rules as the agent writes and returns a fixed verdict: rule ID, severity, line, fix. Same file, same rules, same answer, whichever agent is driving. One ruleset, versioned centrally, with an audit trail of every check.
Connect from Claude Code, Cursor, Copilot or any MCP client. OAuth sign-in, no configuration.
Как подключить
Как подключить Norma by Quality Clouds к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://norma--qualityclouds.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить Norma by Quality Clouds к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://norma--qualityclouds.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить Norma by Quality Clouds к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://norma--qualityclouds.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (6)
Технические названия из tools/list. Нужны только разработчикам.
| get_rules_for_ruleset | Returns the rules in one Norma ruleset: each rule's id, name, severity, impact area, description and fix guidance. These are the standards your code is judged against, not suggestions. ruleset_id is a value returned by get_rulesets. The rule ids returned here are the values register_applied_actions records. remote_url is optional — the workspace git remote (`git remote get-url origin`). It is accepted for symmetry with get_rulesets but never scopes a ruleset's rules, so it is ignored here and rules are always served regardless of repository state. |
| get_rulesets | Returns the Norma rulesets available for this repository's tech stack, detected automatically with no configuration. One ruleset per language or framework, for example typescript-norma-ruleset for TypeScript, react-norma-ruleset for React, nodejs-norma-ruleset for Node.js. Call this first in any review or governance task. The ruleset_id values returned here are the inputs accepted by get_rules_for_ruleset. Each entry carries ruleset_id, name, version and rule group ids. remote_url is optional — the workspace git remote (`git remote get-url origin`). When given, the catalog is scoped to that repository (resolved within your organizations); when omitted, your organization's generic, tier-entitled catalog is returned. This tool always answers, even with no resolvable repository: for OAuth sessions the response carries a "repository_context" with status "linked" (repository-scoped), "unlinked" (no repository — generic catalog), or "unresolved" (a remote was sent but could not be parsed or matched — generic catalog plus guidance). It is never an error to lack a repository. |
| live_check | Runs a deterministic Norma Livecheck on one file against your organization's rules and returns the violations found. Same file, same rules, same verdict every time. Nothing is stored: file_content is held in memory only, and the file extension selects the applicable ruleset. Call before proposing code, again after editing to confirm the fix landed, then record the outcome with register_applied_actions. Optional: max_issues (cap on findings returned; a server hard maximum still applies) and min_severity (info < low < medium < high < critical; "total_issues" still counts all). One outcome: "clean" (no issues; "coverage" flags a reduced check), "issues" (a "rules" map keyed by rule_id plus per-finding entries with rule_id, location and snippet), "not_checkable" (no rules for the type, or empty content), "refused" (too large / binary / rate-limited), or "error". |
| get_open_issues | Returns the violations Norma recorded for this repository in its last completed full scan, each with the context to fix it. These are standing violations of your organization's rules, not suggestions. Optionally pass files (exact repository-relative paths) to scope the result to those files. Each issue carries rule_id, rule_name, severity, impact_area, file, line, description, the fix action and the rule's good/bad code examples — everything needed to fix it without further calls. Returns the top 25 by severity; when more exist the response includes total_open and a portal_url to the rest in Norma. An empty result is never bare — the outcome says why, so you must not report the code as clean unless it truly is: "issues" (fixable issues returned), "no_open_issues" (a scan completed and found none — genuinely clean), "no_completed_scan" (no full scan has completed yet — NOT the same as clean), "no_issues_in_files" (your files have none but the repository has open issues elsewhere; total_open tells how many), "no_linked_repository" (link a repository first with link_repository), or "error". Each issue's file and line are as of the scan, so the code may have moved: re-locate the offending pattern from the rule and description instead of trusting the line number, and skip any issue whose code no longer exists or whose file was renamed or deleted (the next full scan reconciles — this imprecision is expected). When you apply fixes from this tool, make ONE commit containing only the files your fixes changed and do NOT push it (the developer reviews and pushes), ending the commit message with these git trailers, filled from your own identity: Fixed-by: Norma MCP (proactive issue fixing) LLM: <your model name> <your model version> IDE: <the MCP client / IDE you run in> Then record the fixes with register_applied_actions as violations_fixed. |
| register_applied_actions | Writes the outcome of a coding task into your Norma compliance audit trail. An external, timestamped record of which rules were verified, which violations were fixed, which were prevented, and which model did the work. This is the record a reviewer or auditor reads later, so register at the end of every task, not only when something was fixed. Append-only. Fields: llm_name/llm_version, plus verified_compliant / violations_fixed / violations_prevented, each item referencing a rule by rule_id from get_rules_for_ruleset. Returns "registered", or "failed" with reason "oauth_required" or "invalid_input" (with a detail message). |
| link_repository | Associates this session's workspace with its repository in your Norma organization, so rulesets, Livechecks and audit records resolve to the right repo. Call once at the start of a session if the workspace is not already linked. Inputs: remote_url (the git remote, as `git remote get-url origin` reports it) and default_branch (optional — a hint; the organization's own record wins). Re-linking overwrites the existing association. Returns outcome "linked" (id, name, reference branch), or "failed" with reason "auto_import_not_available", "oauth_required" or "invalid_input". |