Skip to main content
Glama
nithyajangam

Aegis

by nithyajangam

Aegis MCP Governance Registry

Aegis es una implementación de referencia orientada a producción para gobernar herramientas MCP conscientes de inquilinos. Combina dos endpoints de referencia Streamable HTTP deliberadamente acotados con un panel de registro seguro, resultados de políticas, un flujo de aprobación humana de corta duración y un libro de auditoría a prueba de manipulaciones. No se conecta ni opera sistemas de clientes.

Qué puede demostrar

Capacidad

Implementación en este repositorio

Endpoints MCP de referencia

POST /mcp/read aloja herramientas deterministas seguras y POST /mcp/write aloja una herramienta destructiva simulada. Ambos esperan encabezados de metadatos de solicitud MCP modernos.

Descubrimiento de capacidades

Cada endpoint tiene metadatos de capacidad internos en /.well-known/mcp-capabilities?server=read o ?server=write.

Aplicación de inquilino y alcance

Un adaptador de token portador resuelve un inquilino, principal y alcances antes de cada llamada de herramienta MCP.

Puerta de políticas

El evaluador de políticas local aplica límites de alcance y de carga útil. Configurar OPA_URL habilita una solicitud de decisión compatible con OPA mientras se conserva un respaldo local seguro.

Aprobación humana

change.create genera un elemento de cola, expira después de quince minutos y consume una elevación aprobada una sola vez.

Auditabilidad

Las actividades de políticas, aprobaciones y ejecución se redactan, son de solo anexo a través de la superficie de la aplicación, están aisladas por inquilino y encadenadas por hash.

Consola de operador

Los usuarios autenticados pueden inspeccionar servicios de registro, inquilinos, políticas, aprobaciones y el libro de auditoría. Los administradores pueden validar y habilitar/deshabilitar servicios de referencia y tomar decisiones de aprobación.

La implementación alinea su forma de transporte y descubrimiento de recursos con las especificaciones de autorización y Streamable HTTP de MCP.[1] [2] Sus metadatos de registro privados son una extensión interna; no se presentan como el formato server.json del Registro MCP público.[3]

Related MCP server: Nura MCP Policy Interceptor

Desarrollo local

Necesitas Node.js 22+ y una base de datos compatible con MySQL. Copia los valores de entorno requeridos por tu host, instala las dependencias y lanza la aplicación.

pnpm install
pnpm drizzle-kit generate
pnpm db:push
pnpm dev

Cuando el servicio se inicie, visita la URL del panel e inicia sesión. Los registros semilla se crean de forma diferida la primera vez que un endpoint de gobernanza o una consulta del panel accede al registro. La interfaz de referencia utiliza solo datos semilla deterministas, no sistemas reales de clientes.

Inicio rápido con MCP

Durante el desarrollo local, los tokens de demostración toman la forma exacta que se muestra a continuación. Son un adaptador de desarrollo, no un sustituto de OAuth.

demo|northstar|demo:alice|project:read,incident:read,metrics:read,change:write

Para confirmar el contrato del endpoint, ejecuta la prueba de humo incluida después de que el servicio se inicie.

pnpm exec node scripts/mcp-smoke.mjs

Para realizar una llamada directa de herramienta JSON-RPC:

curl -sS -X POST http://localhost:3000/mcp/read \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer demo|northstar|demo:alice|project:read' \
  -H 'MCP-Protocol-Version: 2026-07-28' \
  -H 'Mcp-Method: tools/call' \
  -H 'Mcp-Name: project.search' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"project.search","arguments":{"query":"telemetry"},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28"}}}'

El endpoint de escritura sigue el mismo contrato en /mcp/write, pero change.create primero creará un registro de aprobación. Apruébalo desde la consola de Aegis, luego envía la llamada idéntica nuevamente antes de que expire la elevación.

Implementación para principiantes: TiDB Cloud + Render

Esta es la ruta de implementación de bajo costo recomendada para un entorno de aprendizaje o portafolio. TiDB Cloud Starter es compatible con MySQL y requiere TLS para conexiones públicas, mientras que Render puede alojar esta aplicación Node como un servicio web.[4] [5] Los servicios gratuitos de Render pueden dormir cuando están inactivos, así que espera que la primera visita después de la inactividad tarde más.[6]

A. Crear y conectar TiDB Cloud

Crea una instancia Starter con su límite de gasto establecido en 0. En la página de la instancia, haz clic en Conectar en la esquina superior derecha, mantén seleccionado Público, elige General y genera una contraseña. Mantén la contraseña privada.

B. Crear el servicio web de Render

Después de enviar este repositorio a GitHub, abre el panel de Render. Haz clic en + Nuevo en la esquina superior derecha, selecciona Servicio web, haz clic en Conectar junto a este repositorio y usa estos valores exactos.

Campo del formulario de Render

Valor

Nombre

mcp-governance-registry

Rama

main

Lenguaje

Node

Comando de compilación

corepack enable && pnpm install --frozen-lockfile && pnpm db:render-migrate && pnpm build

Comando de inicio

pnpm start

Tipo de instancia

Free

Directorio raíz

Déjalo vacío

C. Agregar variables de entorno de Render

En el mismo formulario de Render, abre Avanzado. Bajo Variables de entorno, agrega cada fila a continuación. No pongas ningún valor secreto en GitHub ni en una captura de pantalla.

Clave

Valor

DATABASE_URL

La URL de TiDB con esta forma: mysql://USUARIO:CONTRASEÑA@HOST:4000/test. Codifica en URL los caracteres especiales en el nombre de usuario o la contraseña.

TIDB_ENABLE_SSL

true

NODE_VERSION

22

VITE_PORTABLE_AUTH

true

JWT_SECRET

Un secreto largo y aleatorio recién generado.

DASHBOARD_ACCESS_KEY

Una contraseña larga separada que escribirás en el panel después de la implementación.

ALLOW_DEMO_MCP_TOKENS

false

La URL de la base de datos es privada. TiDB Cloud Starter requiere TLS para una conexión pública, y la configuración TIDB_ENABLE_SSL=true de la aplicación lo habilita.[5]

Haz clic en Crear servicio web en la parte inferior del formulario. Render abre la página de Eventos del servicio. Espera hasta que el estado sea En vivo, luego haz clic en el enlace onrender.com que se muestra. En la primera visita, ingresa el valor que configuraste para DASHBOARD_ACCESS_KEY y haz clic en Abrir panel.

D. Verificar

Después de que se abra el panel, visita Registro, Aprobaciones y Libro de auditoría. Usa la prueba de humo con tu URL de Render solo después de configurar deliberadamente un validador de tokens de acceso OAuth real para clientes MCP; los tokens de demostración están deshabilitados por defecto.

Verificación y andamiaje de carga

Ejecuta las pruebas de la aplicación antes de cada lanzamiento.

pnpm check
pnpm test
pnpm exec node scripts/mcp-smoke.mjs

El andamiaje de carga envía solicitudes JSON-RPC independientes, lo cual es apropiado para validar una implementación Streamable HTTP sin estado detrás de un balanceador de carga. Comienza con 100 solicitudes y 20 clientes concurrentes, luego repite después de escalar la implementación a una segunda réplica y compara la latencia p50/p95 y la tasa de error.

CONCURRENCY=20 REQUESTS=100 pnpm exec node scripts/load-test.mjs

Para una ejecución oficial de conformidad de protocolo, instala y ejecuta la suite de conformidad MCP oficial actual por separado contra /mcp/read y /mcp/write. Conserva su salida versionada como evidencia de lanzamiento; el script de humo de este repositorio es intencionalmente limitado y no pretende reemplazar esa suite.

Extender la plataforma

Agrega una nueva herramienta de referencia segura insertando su registro y esquema en defaultToolRows en server/governance.ts, extendiendo simulatedToolOutput, luego agrega una prueba y vuelve a ejecutar el script de humo. Una integración real debería estar detrás de una identidad de servicio con privilegios mínimos y devolver solo resultados redactados.

Reemplaza el adaptador de portador de demostración en server/mcp.ts con validación JWT contra tu emisor configurado o realiza la validación en una puerta de enlace de API. La especificación de autorización MCP espera que las implementaciones basadas en HTTP que admiten autorización actúen como servidores de recursos OAuth y publiquen metadatos de recursos protegidos.[2] Para la retención de auditoría en producción, exporta los eventos encadenados por hash a almacenamiento de objetos inmutable o un SIEM y restringe las credenciales de la base de datos para que el principal del servicio no tenga permiso de actualización/eliminación en auditEvents.

Referencias

[1] Model Context Protocol — Streamable HTTP

[2] Model Context Protocol — Authorization

[3] Model Context Protocol — Registry overview

[4] TiDB Cloud — Select Your Plan

[5] TiDB Cloud — Connect to TiDB with node-mysql2

[6] Render — Deploy for Free

F
license - not found
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

  • F
    license
    Not graded
    quality
    B
    maintenance
    Multi-tenant MCP server with OAuth 2.1 authorization, enabling tenant-scoped tool access and audit logging.
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enforces identity-based access control and audit logging for MCP servers, letting you grant fine-grained tool permissions to users and systems while failing secure by default.
    MIT

View all related MCP servers

Related MCP Connectors

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/nithyajangam/MCP-Governance-Registry'

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