Skip to main content
Glama

Nominal MCP Server

Сервер MCP для аппаратной тестовой платформы Nominal. Получайте данные испытаний, просматривайте телеметрические каналы, запускайте анализ и записывайте результаты обратно — из Claude Code, Cursor или любого MCP-клиента, не покидая редактор.

Реализует MCP 2026-07-28 (текущую ревизию) с обратной совместимостью с 2025-11-25, 2025-06-18, 2025-03-26 и 2024-11-05.

10 tools  ·  467 API operations reachable  ·  2,992 tokens of tools/list  ·  OAuth 2.1

Быстрый старт

Публичный инстанс пока не запущен. Разверните собственный примерно за две минуты — он отлично работает на бесплатном тарифе Cloudflare.

Разверните его

git clone https://github.com/elirapport1/nominal-mcp && cd nominal-mcp && npm ci
npx wrangler login
npx wrangler kv namespace create OAUTH_KV      # paste the id into wrangler.toml
openssl rand -base64 32 | npx wrangler secret put TOKEN_SECRET
openssl rand -base64 32 | npx wrangler secret put HANDLE_SECRET
npx wrangler deploy

Подключитесь к нему

claude mcp add --transport http nominal https://<your-worker>.workers.dev/mcp

Откроется окно браузера. Вставьте свой собственный API-ключ Nominal (приложение Nominal → Настройки → API-ключи). Ключ шифруется в токен доступа, ограниченный этим сервером, и никогда не хранится в открытом виде. Каждый запрос к Nominal выполняется с вашими учётными данными, поэтому подключение не может видеть больше, чем уже может видеть ваш аккаунт.

Или запустите через stdio

NOMINAL_API_KEY=<key> \
NOMINAL_MCP_URL=https://<your-worker>.workers.dev/mcp \
npx github:elirapport1/nominal-mcp

(Запускается прямо из репозитория — ничего не публикуется в npm, поэтому обычный npx nominal-mcp не сработает.)

Если ваш Nominal не является развёртыванием GovCloud, задайте также NOMINAL_BASE_URL — коммерческий вариант — https://api.nominal.io/api, а хосты private-cloud и on-prem под *.nominal.io принимаются.

Согласно спецификации аутентификации MCP, stdio-серверы читают учётные данные из окружения, а не выполняют поток OAuth. Ничего не записывается на диск.


Related MCP server: Apollo Universal MCP Server

Что можно спросить

«Найди последний огневой прогон на двигателе A и скажи, превышало ли давление в камере 900 psi.»

«Сравни задержку команды клапана между прогоном 14 и прогоном 15.»

«Отметь событие на этом прогоне в момент T+4.2s и пометь его как anomaly


Инструменты

Tool

Что делает

nominal_search

Поиск активов, прогонов, наборов данных, рабочих книг, чек-листов, событий, видео

nominal_get

Разрешение nominal:// URI, RID или UUID набора данных в полные детали

nominal_list_runs

Прогоны для актива, сначала новые, с временным окном

nominal_describe_channels

Каналы на прогоне/наборе данных с единицей измерения, типом, тегами

nominal_query_channels

Статистика + децимированный трейс для до 10 каналов

nominal_compute

Один агрегат по каналу, вычисляемый на стороне сервера

nominal_export

Presigned URL для данных полного разрешения

nominal_write

Создание событий, комментариев или метаданных прогона

nominal_api_search

Поиск любой из 467 операций API по ключевому слову

nominal_api_call

Выполнение одной операции с проверкой по её реальной сигнатуре

Плюс ресурсы в nominal:// и четыре промпта рабочих процессов (investigate_anomaly, compare_runs, summarize_run, preflight_check).


Три проектных решения, о которых стоит знать

467 операций, 10 инструментов. API Nominal насчитывает 467 эндпоинтов в 57 сервисах. Если бы они были представлены как схемы инструментов, это стоило бы примерно 163 000 токенов в tools/list ещё до того, как вы что-то ввели. Вместо этого nominal_api_search возвращает дескрипторы операций, а nominal_api_call выполняет их, так что вы платите ~120 токенов за каждую операцию, которую действительно ищете. tools/list остаётся фиксированным на 2 992 токенах и публично кэшируется.

Ни один инструмент никогда не возвращает набор данных. Один прогон может содержать гигабайты временных рядов. nominal_query_channels возвращает статистику плюс трейс min/max/mean, децимированный максимум в 200 корзин, и подписанный дескриптор. Массовые данные передаются через presigned URL, который никогда не попадает в контекстное окно.

Ваши учётные данные, не наши. Здесь нет сервисного аккаунта. Поток OAuth связывает ваш API-ключ Nominal с зашифрованным, ограниченным аудиторией токеном доступа сроком на один час. Собственная авторизация Nominal — единственный уровень контроля: MCP-сервер никогда не расширяет доступ и не реализует параллельную модель разрешений.


Документация

  • SPEC.md — спецификация реализации: протокольные решения, дизайн инструментов, модель аутентификации, лимиты, модель угроз и то, что было намеренно опущено

  • docs/SPEC-original.md — исходное техническое задание, сохранённое для истории; SPEC.md §0 объясняет, где измерения изменили его


Разработка

npm ci
npm run typecheck
npm test              # 115 unit + conformance tests
npm run budget        # fails if tools/list exceeds 3,000 tokens
npm run test:fuzz     # adversarial suite
npm run dev           # wrangler dev

Тестирование

Уровень

Что покрывает

test/unit/

криптография, определение эры, ограничения, децимация, дескрипторы, политика каталога

test/conformance/protocol.test.ts

по одному тесту на каждый MCP MUST, за который отвечает этот сервер

test/conformance/auth.test.ts

RFC 9728/8414/8707/9207/7636, PKCE, DCR, подделка токенов

test/fuzz/

шесть генераторов, семь инвариантов, с сидом и воспроизводимые

Граница верификации: уровни протокола, аутентификации, лимитов и политики каталога полностью покрыты. Кодирование запросов на стороне Nominal для инструментов tier-1 было получено из сгенерированного Conjure-клиента nominal-api и протестировано против заглушки, а не против живого развёртывания Nominal — см. SPEC.md §9.3. Если у вас есть ключ, одна команда закрывает этот пробел.

Фаззер запускается каждые 20 минут против живого развёртывания (.github/workflows/fuzz.yml). Генераторы покрывают структуру JSON-RPC, матрицу протокол/эра, аргументы инструментов, идентификаторы операций каталога, подделку аутентификации и payload-ы prompt-injection/SSRF. Инварианты: никогда не 5xx, всегда валидный JSON-RPC, никогда не отражает секрет или стек-трейс, resultType присутствует тогда и только тогда, когда эра современная, ограниченные задержка и размер, и ни одна внутренняя операция никогда не выполняется. При сбое создаётся issue с сидом для точного воспроизведения.

Развёртывание собственного сервера

npx wrangler kv namespace create OAUTH_KV     # put the id in wrangler.toml
npx wrangler secret put TOKEN_SECRET          # AES-GCM key material
npx wrangler secret put HANDLE_SECRET         # HMAC key for result handles
npx wrangler deploy

Для CI-развёртываний задайте секреты CLOUDFLARE_API_TOKEN и CLOUDFLARE_ACCOUNT_ID, а также переменную репозитория DEPLOY_URL.


Ёмкость

Ключевое свойство для масштабирования: вызов инструмента не пишет в хранилище.

Токены доступа — это самодостаточные зашифрованные конверты, а не указатели в хранилище сессий, поэтому их проверка — это расшифровка и несколько сравнений: никакого чтения KV на горячем пути. Ограничение скорости использует edge-привязку Cloudflare, которая тоже ничего не пишет. Единственные записи в KV происходят во время авторизации OAuth: примерно три на пользователя при каждом входе и ни одной после.

Это означает, что объём запросов ограничен лимитом запросов Workers, а не квотой хранилища, а число людей, которые могут использовать развёртывание, ограничено новыми входами в день, а не интенсивностью их использования.

В первой реализации это было не так. Ограничитель скорости подсчитывал запросы в KV — одно чтение и одна запись на запрос — что на бесплатном тарифе Cloudflare остановило бы сервер примерно после тысячи запросов в день. Проверьте текущие лимиты вашего тарифа, но суть такова: интенсивное использование существующим пользователем почти бесплатно, и только онбординг касается хранилища.

/health сообщает, какой ограничитель скорости активен (binding или isolate-fallback), и смоук-тест развёртывания завершается ошибкой, если развёртывание молча откатывается.


Эндпоинты

Путь

POST /mcp

Эндпоинт MCP (Streamable HTTP)

GET /.well-known/oauth-protected-resource

RFC 9728

GET /.well-known/oauth-authorization-server

RFC 8414

GET|POST /authorize, POST /token, /register, /revoke

OAuth 2.1

GET /health

живучесть


Лицензия

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

  • Remote MCP for Gemini upgrade evals, prompt regressions, output diffs, and eval receipts.

  • Autopilot MCP server for GEO analyses, reports, content, audits, memories and agents.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/elirapport1/nominal-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server