Skip to main content
Glama

Nominal MCP Server

Un servidor MCP para la plataforma de pruebas de hardware Nominal. Obtén datos de prueba, inspecciona canales de telemetría, ejecuta análisis y escribe los resultados — desde Claude Code, Cursor o cualquier cliente MCP, sin salir de tu editor.

Implementa MCP 2026-07-28 (la revisión actual) con compatibilidad retroactiva con 2025-11-25, 2025-06-18, 2025-03-26 y 2024-11-05.

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

Inicio rápido

Aún no hay ninguna instancia pública en funcionamiento. Despliega la tuya en unos dos minutos: funciona cómodamente en el plan gratuito de Cloudflare.

Despliégalo

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

Conéctate a él

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

Se abre una ventana del navegador. Pega tu propia clave de API de Nominal (aplicación Nominal → Configuración → Claves de API). La clave se cifra en un token de acceso limitado a este servidor y nunca se almacena en texto plano. Cada solicitud a Nominal se realiza con tu credencial, por lo que la conexión nunca puede ver más de lo que tu cuenta ya puede ver.

O ejecútalo sobre stdio

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

(Se ejecuta directamente desde el repositorio: no hay nada publicado en npm, por lo que un simple npx nominal-mcp no se resolverá).

Si tu Nominal no es el despliegue de GovCloud, configura también NOMINAL_BASE_URL — el comercial es https://api.nominal.io/api, y se aceptan hosts de nube privada y on-prem bajo *.nominal.io.

Según la especificación de autenticación de MCP, los servidores stdio leen las credenciales del entorno en lugar de ejecutar un flujo OAuth. No se escribe nada en el disco.


Related MCP server: Apollo Universal MCP Server

Lo que puedes pedir

"Encuentra la última prueba de fuego en el Motor A y dime si la presión de la cámara superó alguna vez las 900 psi."

"Compara el retraso del comando de la válvula entre la prueba 14 y la prueba 15."

"Marca un evento en esta prueba en T+4.2s y etiquétalo como anomaly."


Herramientas

Tool

Qué hace

nominal_search

Busca activos, pruebas, conjuntos de datos, libros de trabajo, listas de verificación, eventos y vídeos

nominal_get

Resuelve una uri nominal://, un RID o un UUID de conjunto de datos con todos los detalles

nominal_list_runs

Pruebas de un activo, de la más reciente a la más antigua, con ventana de tiempo

nominal_describe_channels

Canales de una prueba/conjunto de datos con unidad, tipo y etiquetas

nominal_query_channels

Estadísticas + traza diezmada para hasta 10 canales

nominal_compute

Un agregado sobre un canal, calculado en el servidor

nominal_export

URL prefirmada para datos de resolución completa

nominal_write

Crea eventos, comentarios o metadatos de prueba

nominal_api_search

Encuentra cualquiera de las 467 operaciones de la API por palabra clave

nominal_api_call

Ejecuta una, validada contra su firma real

Además, recursos bajo nominal:// y cuatro prompts de flujo de trabajo (investigate_anomaly, compare_runs, summarize_run, preflight_check).


Tres decisiones de diseño que merece la pena conocer

467 operaciones, 10 herramientas. La API de Nominal tiene 467 endpoints en 57 servicios. Exponerlos como esquemas de herramientas costaría aproximadamente 163.000 tokens de tools/list antes de que escribieras nada. En su lugar, nominal_api_search devuelve descriptores de operación y nominal_api_call los ejecuta, de modo que pagas ~120 tokens por cada operación que realmente consultas. tools/list se mantiene fijo en 2.992 tokens y se puede almacenar en caché públicamente.

Ninguna herramienta devuelve nunca un conjunto de datos. Una sola prueba puede ocupar gigabytes de series temporales. nominal_query_channels devuelve estadísticas más una traza mín/máx/media diezmada en un máximo de 200 buckets, y un identificador firmado. Los datos masivos salen a través de una URL prefirmada que nunca entra en la ventana de contexto.

Tu credencial, nunca la nuestra. No hay ninguna cuenta de servicio. El flujo OAuth vincula tu clave de API de Nominal a un token de acceso cifrado, limitado a una audiencia y con validez de una hora. La propia autorización de Nominal es la única capa de aplicación — el servidor MCP nunca amplía el acceso y nunca implementa un modelo de permisos paralelo.


Documentación

  • SPEC.md — la especificación de implementación: decisiones de protocolo, diseño de herramientas, modelo de autenticación, límites, modelo de amenazas y lo que se omitió deliberadamente

  • docs/SPEC-original.md — el documento de diseño original, conservado para el registro; SPEC.md §0 explica dónde la medición lo cambió


Desarrollo

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

Pruebas

Capa

Qué cubre

test/unit/

criptografía, detección de era, límites, diezmado, identificadores, política de catálogo

test/conformance/protocol.test.ts

una prueba por cada MUST de MCP que este servidor posee

test/conformance/auth.test.ts

RFC 9728/8414/8707/9207/7636, PKCE, DCR, falsificación de tokens

test/fuzz/

seis generadores, siete invariantes, con semilla y reproducible

Límite de verificación: las capas de protocolo, autenticación, límites y política de catálogo están completamente cubiertas. La codificación de solicitudes del lado de Nominal para las herramientas de nivel 1 se derivó del cliente Conjure generado de nominal-api y se probó contra un stub, no contra un despliegue real de Nominal — consulta SPEC.md §9.3. Si tienes una clave, un solo comando cierra esa brecha.

El fuzzer se ejecuta cada 20 minutos contra el despliegue real (.github/workflows/fuzz.yml). Los generadores cubren la estructura JSON-RPC, la matriz protocolo/era, los argumentos de las herramientas, los ids de operación del catálogo, la falsificación de autenticación y las cargas útiles de inyección de prompts/SSRF. Invariantes: nunca un 5xx, siempre JSON-RPC válido, nunca refleja un secreto o un stack trace, resultType presente si y solo si es moderno, latencia y tamaño acotados, y ninguna operación interna se ejecuta jamás. Un fallo abre un issue con la semilla para una reproducción exacta.

Desplegar el tuyo

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

Para despliegues de CI, configura los secretos CLOUDFLARE_API_TOKEN y CLOUDFLARE_ACCOUNT_ID y una variable de repositorio DEPLOY_URL.


Capacidad

La propiedad de diseño que importa para la escala: una llamada a una herramienta no escribe en almacenamiento.

Los tokens de acceso son sobres cifrados autocontenidos en lugar de punteros a un almacén de sesiones, por lo que validar uno es un descifrado y unas pocas comparaciones: no hay lectura de KV en la ruta crítica. La limitación de velocidad utiliza el binding de edge de Cloudflare, que tampoco escribe nada. Las únicas escrituras de KV ocurren durante una autorización OAuth: aproximadamente tres por usuario y por inicio de sesión, y ninguna después.

Eso significa que el volumen de solicitudes está limitado por el límite de solicitudes de Workers en lugar de por una cuota de almacenamiento, y el número de personas que pueden usar un despliegue está limitado por nuevos inicios de sesión por día, no por la intensidad con la que lo usen.

Esto no era cierto en la primera implementación. El limitador de velocidad contaba las solicitudes en KV — una lectura y una escritura por solicitud — lo que en el plan gratuito de Cloudflare habría detenido el servidor después de aproximadamente mil solicitudes al día. Consulta los límites actuales de tu plan, pero la forma es: el uso intensivo por parte de un usuario existente es casi gratuito, y solo la incorporación toca el almacenamiento.

/health informa de qué limitador de velocidad está activo (binding vs isolate-fallback), y la prueba de humo del despliegue falla si un despliegue retrocede silenciosamente.


Endpoints

Ruta

POST /mcp

endpoint 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

comprobación de vida


Licencia

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