Skip to main content
Glama
nithyajangam

Aegis

by nithyajangam

Aegis MCP Governance Registry

Aegis ist eine produktionsorientierte Referenzimplementierung zur Steuerung mandantenfähiger MCP-Tools. Es kombiniert zwei bewusst begrenzte Streamable-HTTP-Referenzendpunkte mit einem sicheren Registry-Dashboard, Policy-Ergebnissen, einem kurzlebigen Freigabeprozess für Menschen und einem manipulationssicheren Audit-Ledger. Es verbindet sich nicht mit Kundensystemen und betreibt diese nicht.

Was Sie demonstrieren können

Fähigkeit

Implementierung in diesem Repository

Referenz-MCP-Endpunkte

POST /mcp/read hostet sichere deterministische Tools und POST /mcp/write hostet ein simuliertes destruktives Tool. Beide erwarten moderne MCP-Anfrage-Metadaten-Header.

Fähigkeitserkennung

Jeder Endpunkt verfügt über interne Capability-Metadaten unter /.well-known/mcp-capabilities?server=read oder ?server=write.

Mandanten- und Scope-Durchsetzung

Ein Bearer-Token-Adapter löst vor jedem MCP-Tool-Aufruf einen Mandanten, einen Principal und Scopes auf.

Policy-Gate

Der lokale Policy-Evaluator setzt Scope- und Payload-Grenzen durch. Das Setzen von OPA_URL aktiviert eine OPA-kompatible Entscheidungsanfrage, behält aber einen sicheren lokalen Fallback bei.

Menschliche Genehmigung

change.create erzeugt ein Warteschlangenelement, läuft nach fünfzehn Minuten ab und verbraucht eine genehmigte Elevation genau einmal.

Prüfbarkeit

Policy-, Genehmigungs- und Ausführungsaktivitäten werden redigiert, über die Anwendungsoberfläche nur angehängt, mandantenisoliert und hash-verkettet.

Operator-Konsole

Authentifizierte Benutzer können Registry-Dienste, Mandanten, Richtlinien, Genehmigungen und das Audit-Ledger einsehen. Administratoren können Referenzdienste validieren und aktivieren/deaktivieren sowie Genehmigungsentscheidungen treffen.

Die Implementierung richtet ihre Transport- und Ressourcenerkennungsform an den MCP-Streamable-HTTP- und Autorisierungsspezifikationen aus.[1] [2] Ihre privaten Registry-Metadaten sind eine interne Erweiterung; sie werden nicht als öffentliches MCP-Registry-server.json-Format dargestellt.[3]

Related MCP server: Nura MCP Policy Interceptor

Lokale Entwicklung

Sie benötigen Node.js 22+ und eine MySQL-kompatible Datenbank. Kopieren Sie die für Ihren Host erforderlichen Umgebungsvariablen, installieren Sie die Abhängigkeiten und starten Sie die Anwendung.

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

Wenn der Dienst startet, besuchen Sie die Dashboard-URL und melden Sie sich an. Seed-Datensätze werden beim ersten Zugriff eines Governance-Endpunkts oder einer Dashboard-Abfrage auf die Registry lazy erstellt. Die Referenzoberfläche verwendet nur deterministische Seed-Daten, keine echten Kundensysteme.

MCP-Schnellstart

Während der lokalen Entwicklung haben Demo-Tokens die folgende exakte Form. Sie sind ein Entwicklungsadapter, kein OAuth-Ersatz.

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

Um den Endpunktvertrag zu bestätigen, führen Sie den enthaltenen Smoke-Test aus, nachdem der Dienst gestartet ist.

pnpm exec node scripts/mcp-smoke.mjs

Um einen direkten JSON-RPC-Tool-Aufruf durchzuführen:

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"}}}'

Der Write-Endpunkt folgt demselben Vertrag unter /mcp/write, aber change.create erstellt zuerst einen Genehmigungsdatensatz. Genehmigen Sie ihn über die Aegis-Konsole und senden Sie dann denselben identischen Aufruf erneut, bevor die Elevation abläuft.

Einsteiger-Bereitstellung: TiDB Cloud + Render

Dies ist der empfohlene kostengünstige Bereitstellungspfad für eine Lern- oder Portfolio-Umgebung. TiDB Cloud Starter ist MySQL-kompatibel und erfordert TLS für öffentliche Verbindungen, während Render diese Node-Anwendung als Web Service hosten kann.[4] [5] Kostenlose Render-Dienste können im Leerlauf schlafen, daher sollten Sie damit rechnen, dass der erste Besuch nach Inaktivität länger dauert.[6]

A. TiDB Cloud erstellen und verbinden

Erstellen Sie eine Starter-Instanz mit einem Ausgabenlimit von 0. Klicken Sie auf der Instanzseite oben rechts auf Connect, lassen Sie Public ausgewählt, wählen Sie General und generieren Sie ein Passwort. Bewahren Sie das Passwort privat auf.

B. Render-Web-Service erstellen

Nachdem Sie dieses Repository auf GitHub gepusht haben, öffnen Sie das Render-Dashboard. Klicken Sie oben rechts auf + New, wählen Sie Web Service, klicken Sie neben diesem Repository auf Connect und verwenden Sie diese exakten Werte.

Render-Formularfeld

Wert

Name

mcp-governance-registry

Branch

main

Sprache

Node

Build-Befehl

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

Start-Befehl

pnpm start

Instanztyp

Free

Stammverzeichnis

Leer lassen

C. Render-Umgebungsvariablen hinzufügen

Öffnen Sie im selben Render-Formular Advanced. Fügen Sie unter Environment Variables jede Zeile unten hinzu. Geben Sie keinen geheimen Wert in GitHub oder in einen Screenshot ein.

Schlüssel

Wert

DATABASE_URL

Die TiDB-URL in dieser Form: mysql://USERNAME:PASSWORD@HOST:4000/test. URL-kodieren Sie Sonderzeichen im Benutzernamen oder Passwort.

TIDB_ENABLE_SSL

true

NODE_VERSION

22

VITE_PORTABLE_AUTH

true

JWT_SECRET

Ein neu generiertes langes Zufallsgeheimnis.

DASHBOARD_ACCESS_KEY

Ein separates langes Passwort, das Sie nach der Bereitstellung in das Dashboard eingeben.

ALLOW_DEMO_MCP_TOKENS

false

Die Datenbank-URL ist privat. TiDB Cloud Starter erfordert TLS für eine öffentliche Verbindung, und die Konfiguration TIDB_ENABLE_SSL=true der App aktiviert es.[5]

Klicken Sie unten im Formular auf Create Web Service. Render öffnet die Events-Seite des Dienstes. Warten Sie, bis der Status Live ist, und klicken Sie dann auf den angezeigten onrender.com-Link. Geben Sie beim ersten Besuch den Wert ein, den Sie für DASHBOARD_ACCESS_KEY festgelegt haben, und klicken Sie auf Open dashboard.

D. Überprüfen

Nachdem das Dashboard geöffnet ist, besuchen Sie Registry, Approvals und Audit ledger. Verwenden Sie den Smoke-Test mit Ihrer Render-URL erst, nachdem Sie absichtlich einen echten OAuth-Zugriffstoken-Validator für MCP-Clients konfiguriert haben; Demo-Tokens sind standardmäßig deaktiviert.

Verifikation und Last-Scaffold

Führen Sie vor jedem Release die Anwendungstests aus.

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

Das Last-Scaffold sendet unabhängige JSON-RPC-Anfragen, was zur Validierung einer zustandslosen Streamable-HTTP-Bereitstellung hinter einem Load Balancer geeignet ist. Beginnen Sie mit 100 Anfragen und 20 gleichzeitigen Clients, wiederholen Sie dann nach dem Skalieren der Bereitstellung auf eine zweite Replik und vergleichen Sie p50/p95-Latenz und Fehlerrate.

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

Für einen offiziellen Protokoll-Konformitätslauf installieren und führen Sie die aktuelle offizielle MCP-Konformitätssuite separat gegen sowohl /mcp/read als auch /mcp/write aus. Bewahren Sie die versionierte Ausgabe als Release-Nachweis auf; das Smoke-Skript dieses Repositorys ist bewusst eng gefasst und erhebt nicht den Anspruch, diese Suite zu ersetzen.

Erweiterung der Plattform

Fügen Sie ein neues sicheres Referenz-Tool hinzu, indem Sie seinen Registry-Eintrag und sein Schema in defaultToolRows in server/governance.ts einfügen, simulatedToolOutput erweitern, dann einen Test hinzufügen und das Smoke-Skript erneut ausführen. Eine echte Integration sollte hinter einer Service-Identität mit geringsten Rechten liegen und nur redigierte Ergebnisse zurückgeben.

Ersetzen Sie den Demo-Bearer-Adapter in server/mcp.ts durch JWT-Validierung gegen Ihren konfigurierten Issuer oder führen Sie die Validierung an einem API-Gateway durch. Die MCP-Autorisierungsspezifikation erwartet, dass HTTP-basierte Implementierungen, die Autorisierung unterstützen, als OAuth-Ressourcenserver fungieren und Metadaten für geschützte Ressourcen veröffentlichen.[2] Für die Produktions-Audit-Aufbewahrung exportieren Sie die hash-verketteten Ereignisse in unveränderlichen Objektspeicher oder ein SIEM und schränken Sie Datenbankanmeldeinformationen so ein, dass der Dienstprinzipal keine Update-/Löschberechtigung für auditEvents hat.

Referenzen

[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