Skip to main content
Glama
Nagendda

MCP Tool Manager

by Nagendda

MCP Tool Manager

Ein für den Produktionsbetrieb gehärtetes, KI-natives Tool-Registry- und Agentenverwaltungssystem, das auf dem Model Context Protocol (MCP) basiert.

Node.js License: MIT MCP Security


📖 Inhaltsverzeichnis

  1. Was ist das?

  2. Architekturüberblick

  3. Projektstruktur

  4. Schnellstart

  5. Konfigurationsreferenz

  6. API-Referenz

  7. Umsetzungsplan

  8. Sicherheitsmodell

  9. Monitoring & Beobachtbarkeit

  10. Roadmap

  11. Mitwirken


Related MCP server: AgentsGate

Was ist das?

MCP Tool Manager ist eine Zwei-Server-Plattform, die die schwierigsten betrieblichen Probleme in KI-integrierten Tool-Systemen löst:

Problem

Lösung

LLMs verbrauchen Kontextfenster durch riesige API-Antworten

Byte-Budget pro Tool mit geordneter Kürzungssignalisierung

Upstream-API-Fehler, die bis zur LLM durchschlagen

Circuit Breaker pro Tool (CLOSED → OPEN → HALF-OPEN)

Alle Daten gehen bei Serverneustart verloren

Automatische periodische Datenträger-Snapshots, beim Start wiederhergestellt

Brute-Force-/Injektionsangriffe auf das API-Gateway

Bedrohungserkennung für 10 Familien + gestuftes Rate Limiting + automatische IP-Sperrung

Keine Möglichkeit, eine Anfrage Ende-zu-Ende zu verfolgen

X-Trace-ID-Header, der über alle Ebenen und zu Upstream-APIs propagiert wird

Tools/Agenten nur im flüchtigen Speicher registriert

Dateibasiertes Aufrufprotokoll + Agenten-JSON-Konfigurationen + Zustands-Snapshots


Architekturüberblick

┌─────────────────────────────────────────────────────────────────────────┐
│                        MCP Tool Manager Platform                        │
│                                                                         │
│  ┌──────────────────────┐        ┌────────────────────────────────────┐ │
│  │   Manager Server      │        │    Hardened MCP Server             │ │
│  │   src/server          │        │    mcp-server-project              │ │
│  │                       │        │                                    │ │
│  │  • REST API (CRUD)    │        │  • MCP Protocol endpoint           │ │
│  │  • JWT + API key auth │        │  • Agent API key auth + expiry     │ │
│  │  • Tool registry      │        │  • Circuit breaker per tool        │ │
│  │  • Agent management   │        │  • Retry + exponential backoff     │ │
│  │  • Credential vault   │        │  • Response cache (TTL per tool)   │ │
│  │  • Audit log          │        │  • Context window limiting         │ │
│  │  • State snapshots    │        │  • File-persisted call log         │ │
│  │  • WebSocket events   │        │  • 10-family threat detection      │ │
│  │  • Response cache     │        │  • Admin /metrics endpoint         │ │
│  └──────────┬───────────┘        └──────────────┬─────────────────────┘ │
│             │                                    │                       │
│  ┌──────────▼───────────┐        ┌──────────────▼─────────────────────┐ │
│  │   React Dashboard     │        │    Claude Desktop / LLM Agent      │ │
│  │   src/dashboard       │        │    (connects via MCP SDK)          │ │
│  └──────────────────────┘        └────────────────────────────────────┘ │
│                                                                         │
│  ┌──────────────────────────────────────────────────────────────────┐   │
│  │  Cross-cutting: X-Trace-ID · Rate Limiting · Helmet CSP ·        │   │
│  │  Structured Logging · Connection Limit · Compression             │   │
│  └──────────────────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────────┘

Projektstruktur

mcp/
├── .env.example                    # Template — copy to .env and fill in values
├── .gitignore                      # Excludes .env, node_modules, logs, snapshots
├── package.json                    # Root scripts — start both servers, CLI, tests
├── README.md                       # This file
├── REPORT.md                       # Full technical capability report
├── CHANGELOG.md                    # Version history
│
├── src/
│   ├── server/                     # Manager Server (REST API)
│   │   ├── index.js                # Entry point — snapshot restore + server start
│   │   ├── app.js                  # Express app — all middleware wired
│   │   ├── routes/
│   │   │   ├── tools.js            # CRUD + test execution for tools
│   │   │   ├── agents.js           # Agent management + tool discovery
│   │   │   ├── auth.js             # Login, register, API key management
│   │   │   ├── credentials.js      # Encrypted credential vault
│   │   │   └── monitoring.js       # Stats, audit log, cache, snapshot status
│   │   ├── middleware/
│   │   │   ├── auth.js             # JWT + API key auth + RBAC
│   │   │   └── error-handler.js    # Typed errors + global handler
│   │   ├── storage/
│   │   │   ├── in-memory-store.js  # All in-memory Maps + operations
│   │   │   ├── seeder.js           # Initial data (skipped if snapshot exists)
│   │   │   └── state-snapshot.js   # Periodic disk snapshots (JSON files)
│   │   ├── utils/
│   │   │   ├── trace.js            # X-Trace-ID middleware
│   │   │   ├── context-limit.js    # Response byte budget + pagination guard
│   │   │   ├── response-cache.js   # node-cache wrapper + TTL presets
│   │   │   ├── encryption.js       # AES-256-CBC for credential vault
│   │   │   └── logger.js           # Levelled logger (error/warn/info/debug)
│   │   └── websocket.js            # Real-time events via WebSocket
│   │
│   ├── dashboard/                  # React + Vite management UI
│   │   ├── src/
│   │   │   ├── pages/              # Dashboard, Tools, Agents, Monitoring, Settings
│   │   │   ├── components/         # Sidebar, Topbar, ToastContainer
│   │   │   ├── services/api.js     # Axios client for Manager Server
│   │   │   └── styles/             # global.css, sidebar.css
│   │   └── vite.config.js
│   │
│   ├── sdk/
│   │   └── index.js                # Developer SDK — npm-publishable client
│   │
│   └── cli/
│       └── index.js                # Admin CLI (17 commands)
│
├── mcp-server-project/             # Hardened MCP Server
│   ├── package.json
│   ├── src/
│   │   ├── server.js               # Boot sequence — all 7 security layers
│   │   ├── mcp-protocol.js         # MCP spec endpoint (/mcp/tools, /mcp/invoke)
│   │   ├── routes/
│   │   │   ├── invoke.js           # Tool invocation (retry + CB + cache + limit)
│   │   │   ├── info.js             # Tool discovery per agent
│   │   │   └── metrics.js          # Admin monitoring endpoint
│   │   ├── middleware/
│   │   │   ├── auth.js             # Agent auth + expiry + scope + disabled check
│   │   │   ├── trace.js            # X-Trace-ID attachment
│   │   │   └── context-limit.js    # Response byte budget
│   │   ├── state/
│   │   │   ├── call-log.js         # Disk-persisted call log (NDJSON)
│   │   │   ├── circuit-breaker.js  # Per-tool CLOSED/OPEN/HALF state machine
│   │   │   └── response-cache.js   # TTL cache with auto-eviction
│   │   ├── loaders/
│   │   │   ├── registry.js         # Central tool+agent in-memory registry
│   │   │   ├── tool-loader.js      # Loads *.json from /tools/
│   │   │   ├── agent-loader.js     # Loads *.json from /agents/
│   │   │   └── credential-loader.js # Merges .env + JSON credentials
│   │   └── watcher.js              # chokidar hot-reload on /tools/ and /agents/
│   ├── security/
│   │   ├── middleware/
│   │   │   ├── security-headers.js # Strict Helmet CSP + CORS
│   │   │   ├── rate-limiter.js     # 3-tier rate limiting + IP auto-block
│   │   │   └── threat-detector.js  # 10-family injection/attack detector
│   │   └── logger/
│   │       └── security-log.js     # Structured security event log (5 levels)
│   ├── tools/                      # Tool definition JSON files
│   ├── agents/                     # Agent definition JSON files
│   ├── credentials/                # .env and JSON secrets (gitignored)
│   ├── logs/                       # Security log + call log (gitignored)
│   └── security-tests/             # Attack simulation suite + benchmark
│
├── snapshots/                      # Manager server state snapshots (gitignored)
└── examples/                       # Example tool/agent JSON files

Schnellstart

Voraussetzungen

Anforderung

Version

Node.js

≥ 16.0.0

npm

≥ 7.0.0

Git

beliebig

1. Klonen

git clone https://github.com/YOUR_USERNAME/mcp-tool-manager.git
cd mcp-tool-manager

2. Abhängigkeiten installieren

# Root (Manager Server + CLI + SDK)
npm install

# Dashboard
cd src/dashboard && npm install && cd ../..

# MCP Server
cd mcp-server-project && npm install && cd ..

3. Konfigurieren

# Manager Server
cp .env.example .env
# Edit .env with your JWT_SECRET, ENCRYPTION_KEY, etc.

# MCP Server
cp mcp-server-project/credentials/.env.example mcp-server-project/credentials/.env
# Edit credentials/.env with your agent keys and tool API keys

4. Ausführen

# Terminal 1 — Manager Server (port 5000)
npm run dev:server

# Terminal 2 — React Dashboard (port 3000)
npm run dev:dashboard

# Terminal 3 — MCP Server (port 5001 by default)
cd mcp-server-project && npm start

5. Zugriff

Standard-Login (Manager)

Email:    admin@mcp-tool-manager.dev
Password: admin123

⚠️ Ändern Sie dies in der Produktion sofort über die Umgebungsvariablen ADMIN_USERNAME / ADMIN_PASSWORD.


Konfigurationsreferenz

Manager-Server (.env)

# Core
NODE_ENV=development
MCP_SERVER_PORT=5000
MCP_SERVER_HOST=localhost
LOG_LEVEL=info

# Auth
JWT_SECRET=your-super-secret-key-min-32-chars
JWT_EXPIRY=24h
ENCRYPTION_KEY=your-encryption-key-exactly-32-ch

# Context Window
MCP_MAX_RESPONSE_BYTES=65536        # 64 KB default response budget
MCP_MAX_PAGE_SIZE=100               # Max items per paginated endpoint

# Scalability
MCP_MAX_CONNECTIONS=500             # TCP connection limit
SNAPSHOT_DIR=./snapshots            # State persistence directory
SNAPSHOT_INTERVAL_SECS=60           # Save state every 60 seconds
SNAPSHOT_RESTORE=true               # Restore state on startup

# Cache TTLs (seconds)
CACHE_TTL_TOOL_LIST=30
CACHE_TTL_TOOL_ITEM=60
CACHE_TTL_AGENT_LIST=30
CACHE_TTL_STATS=10
CACHE_TTL_ACTIVITY=300

# Future (not yet wired — provide connection string to enable)
DATABASE_URL=postgresql://user:password@localhost:5432/mcp_tools
REDIS_URL=redis://localhost:6379

MCP-Server (mcp-server-project/credentials/.env)

# Agent API Keys (convention: AGENT_<AGENTID_UPPERCASE>_KEY)
AGENT_MY_AGENT_KEY=your-agent-secret-key

# Tool credentials (referenced by credential_ref in tool JSON)
OPENAI_API_KEY=sk-...
WEATHER_API_KEY=...
SLACK_BOT_TOKEN=xoxb-...

# Admin
ADMIN_KEY=your-admin-key-for-metrics-endpoint

# Server
MCP_PORT=5001
MCP_MAX_CONNECTIONS=200
MCP_MAX_RESPONSE_BYTES=32768        # 32 KB default per tool response

Tool-JSON-Felder (MCP-Server)

{
  "name": "my_tool",
  "description": "Human-readable description for the LLM",
  "endpoint_url": "https://api.example.com/endpoint",
  "method": "POST",
  "credential_ref": "MY_API_KEY",
  "parameters": {
    "type": "object",
    "properties": {
      "query": { "type": "string", "description": "Search query" }
    },
    "required": ["query"]
  },
  "cache_ttl_seconds": 60,
  "max_response_bytes": 8192,
  "retry_max": 3,
  "timeout_ms": 10000,
  "circuit_failure_threshold": 5,
  "circuit_open_window_ms": 30000
}

Agent-JSON-Felder (MCP-Server)

{
  "agent_id": "my-agent",
  "allowed_tools": ["weather_lookup", "send_email"],
  "expires_at": "2027-01-01T00:00:00Z",
  "disabled": false
}

API-Referenz

Manager-Server (http://localhost:5000)

Authentifizierung

Methode

Pfad

Auth

Beschreibung

POST

/api/auth/login

—

JWT-Token abrufen

POST

/api/auth/register

—

Konto erstellen

GET

/api/auth/me

✅

Aktueller Benutzer + API-Schlüssel

POST

/api/auth/api-keys

✅

Neuen API-Schlüssel generieren

DELETE

/api/auth/api-keys/:key

✅

API-Schlüssel widerrufen

Tools

Methode

Pfad

Auth

Beschreibung

GET

/api/tools

✅

Tools auflisten (paginiert)

POST

/api/tools

✅

Neues Tool registrieren

GET

/api/tools/:id

✅

Tool-Details

PUT

/api/tools/:id

✅

Tool aktualisieren

DELETE

/api/tools/:id

✅

Tool entfernen

POST

/api/tools/:id/test

✅

Tool-Aufruf testen

Agenten

Methode

Pfad

Auth

Beschreibung

GET

/api/agents

✅

Agenten auflisten

POST

/api/agents

✅

Agenten registrieren

GET

/api/agents/:id

✅

Agenten-Details

PUT

/api/agents/:id

✅

Agenten aktualisieren

DELETE

/api/agents/:id

✅

Agenten entfernen

POST

/api/agents/:id/tools

✅

Tools für Agenten ermitteln

Monitoring

Methode

Pfad

Auth

Beschreibung

GET

/api/monitoring/health

—

Liveness-Probe

GET

/api/monitoring/stats

✅

Vollständige Systemstatistiken + Cache + Snapshot

GET

/api/monitoring/activity

✅

Echte stündliche Aufruf-Zeitachse (24h)

GET

/api/monitoring/top-tools

✅

Top N Tools nach Aufrufanzahl

GET

/api/monitoring/audit-log

✅

Audit-Einträge

GET

/api/monitoring/cache

✅

Cache-Trefferquote + Einträge

GET

/api/monitoring/snapshot

✅

Zeitstempel + Anzahl des letzten Snapshots

MCP-Server (http://localhost:5001)

Methode

Pfad

Auth

Beschreibung

GET

/health

—

Liveness-Probe

GET

/info

AGENT_KEY

Tools für den aufrufenden Agenten auflisten

GET

/info/all

ADMIN_KEY

Alle Tools + alle Agenten

GET

/mcp/tools

—

Mit Claude Desktop kompatible Tool-Liste

POST

/mcp/invoke/:tool

—

MCP-Protokollaufruf

POST

/invoke/:toolName

AGENT_KEY

Direkter Tool-Aufruf

GET

/metrics

ADMIN_KEY

Vollständiges Monitoring-Dashboard

GET

/metrics/health

—

Leichtgewichtige Liveness-Probe

GET

/metrics/calls

ADMIN_KEY

Kürzlicher Aufrufverlauf


Umsetzungsplan

Dieser Abschnitt dokumentiert die vollständige Roadmap – was bereits umgesetzt ist, was in Arbeit ist und was Infrastrukturentscheidungen erfordert.

Phase 1 – Grundlage ✅ Abgeschlossen

  • Manager-Server-REST-API (Tools, Agenten, Authentifizierung, Zugangsdaten, Monitoring)

  • In-Memory-Speicher mit vollständigen CRUD-Operationen

  • JWT + API-Schlüssel-Dualauthentifizierung mit RBAC

  • AES-256-CBC-Zugangsdatentresor

  • React-Dashboard (Seiten für Tools, Agenten, Monitoring, Einstellungen)

  • WebSocket-Echtzeit-Event-Broadcasting

  • Entwickler-SDK (src/sdk/index.js)

  • Admin-CLI mit 17 Befehlen (src/cli/index.js)

  • MCP-Protokoll-Endpunkt (Claude Desktop-kompatibel)

  • Dateibasiertes Tool-/Agenten-Register mit Hot-Reload (chokidar)

  • Audit-Log mit rotierendem Ringpuffer

Phase 2 – Sicherheitshärtung ✅ Abgeschlossen

  • Bedrohungserkennung für 10 Familien (SQL/NoSQL/XSS/SSRF/Shell/Template/Path/CMDi/Null/Header-Injektion)

  • Sperrung von Scanner-User-Agents (sqlmap, nikto, nmap, Burp Suite, 20+ Scanner)

  • 3-stufiges Rate Limiting (global + strikt + Geschwindigkeitsverlangsamung)

  • Automatische IP-Sperrung nach Brute-Force-Angriffen (20+ Treffer)

  • Strukturiertes Sicherheitsereignisprotokoll mit 5 Schweregradstufen

  • Helmet strikte CSP (defaultSrc: 'none')

  • Ablauf von Agent-Schlüsseln + Deaktivierungs-Flag

  • Scope-Durchsetzung (requireScope Middleware)

  • Sicherheitsprotokollierung bei Authentifizierungsfehlern + Scope-Verletzungen

  • Sicherheits-Testsuite + Benchmark (Vergleich gehärtet vs. ungeschützt)

Phase 3 – Betriebliche Fähigkeiten ✅ Abgeschlossen (Dieses Release)

  • X-Trace-ID – eindeutiger Anfrage-Korrelator, propagiert durch alle Ebenen und Upstream-APIs

  • Circuit Breaker – CLOSED/OPEN/HALF-OPEN pro Tool (konfigurierbare Schwellwerte)

  • Wiederholung mit exponentiellem Backoff – 200ms → 400ms → 800ms, überspringt 4xx-Fehler

  • Antwort-Cache – TTL pro Tool/Datentyp, Trefferquoten-Verfolgung, Präfix-Invalidierung

  • Kontextfenster-Begrenzung – Byte-Budget pro Tool, geordnete Kürzung mit Signalisierung

  • Paginierungs-Schutz – globaler ?limit-Begrenzer (Standard maximal 100 Einträge)

  • Zustands-Snapshots – atomare periodische Schreibvorgänge, beim Start wiederhergestellt (Tools/Agenten/Benutzer überleben Neustart)

  • Verbindungslimit-Wächter – verwirft TCP-Sockets über dem konfigurierbaren Maximum

  • Rate Limiting aktiviert (Manager) – 300 global + 15 Authentifizierungsversuche pro Minute und IP

  • Echtes Monitoring – Aktivitätszeitachse aus tatsächlichen Aufrufdaten (Math.random()-Mock entfernt)

  • /metrics-Endpunkt (MCP) – vollständiges Admin-Dashboard (Aufrufe, Cache, Circuit Breaker, Speicher)

  • node-cache aktiviert (Manager) – TTL-Voreinstellungen pro Datentyp, Trefferquoten-Verfolgung

  • /api/monitoring/cache und /api/monitoring/snapshot neue Endpunkte

Phase 4 – Persistenz & Verteilung 🔲 Wartet auf Ihre Eingabe

Diese erfordern Infrastruktur. pg und ioredis sind bereits installiert – es werden nur Verbindungszeichenfolgen benötigt.

  • PostgreSQL – in-memory-store.js in eine persistente Datenbank migrieren

    • Tabellen tools, agents, users, api_keys, credentials, audit_log

    • Verbindungspool über pg (DATABASE_URL bereits in .env.example)

  • Redis – gemeinsamer Speicher für Rate Limit + Sitzungen + Antwort-Cache

    • node-cache durch ioredis für Multi-Instanz-Sicherheit ersetzen

    • Gemeinsame IP-Sperrliste über alle Serverinstanzen hinweg

    • (REDIS_URL bereits in .env.example)

  • Horizontale Skalierung – sobald Redis + Postgres angebunden sind, N Instanzen hinter nginx bereitstellen

Phase 5 – Entwicklererfahrung 🔲 Optional

  • Automatische Generierung der OpenAPI/Swagger-Spezifikation (swagger-jsdoc)

  • zod-Umgebungs-Schema-Validierung beim Start (Fail-Fast bei fehlender Konfiguration)

  • JWT-Refresh-Tokens + Blacklist

  • Prometheus-Metrikenexport (/metrics/prometheus-Endpunkt)

  • OpenTelemetry-verteiltes Tracing

  • Tool-Kompatibilitätsmatrix

  • WebSocket-Dashboard für den Echtzeit-Circuit-Breaker-Zustand


Sicherheitsmodell

Manager-Server

Request
  │
  ├── X-Trace-ID attachment (Layer 0)
  ├── Helmet strict CSP (Layer 1)
  ├── Global rate limit 300/min (Layer 2a)
  ├── Auth rate limit 15/min on /api/auth (Layer 2b)
  ├── Body size limit 2 MB (Layer 3)
  ├── Context window budget (Layer 4)
  ├── Pagination guard max 100 items (Layer 5)
  ├── JWT / API key verification (per-route)
  └── RBAC role check (per-route)

MCP-Server

Request
  │
  ├── X-Trace-ID attachment (Layer 0)
  ├── Strict Helmet CSP (Layer 1)
  ├── IP block list check (Layer 2)
  ├── Body size guard (Layer 3)
  ├── Context window budget (Layer 4)
  ├── HTTP method whitelist (Layer 5)
  ├── Scanner user-agent block (Layer 6)
  ├── Global rate limit + speed slow-down (Layer 7)
  ├── 10-family threat detection (Layer 8)
  ├── Agent API key auth + expiry + disabled check (per-route)
  ├── Tool scope enforcement (per-route)
  ├── Circuit breaker check (per-tool)
  ├── Response cache lookup (per-tool)
  └── Retry + context limit on upstream call (per-tool)

Monitoring & Beobachtbarkeit

Verfügbare Daten

Quelle

Was es zeigt

GET /api/monitoring/stats

Systemübersicht, Cache-Statistiken, Snapshot-Informationen, Kontextlimit-Konfiguration

GET /api/monitoring/activity

Echte 24-Stunden-Stundenzeitleiste der Aufrufe (Erfolgs- + Fehlerzahlen)

GET /api/monitoring/top-tools

Top-Tools nach Aufrufanzahl + Erfolgsrate

GET /api/monitoring/audit-log

Alle Admin-Aktionen (Tool erstellen/löschen, Agent hinzufügen/entfernen)

GET /api/monitoring/cache

Cache-Trefferquote, Eintragsanzahl, Verdrängungen

GET /api/monitoring/snapshot

Zeitstempel des letzten Snapshots + Datensatzanzahl

GET /metrics (MCP, admin)

Circuit-Breaker-Zustände, Aufrufprotokoll, Cache-Statistiken, Systemspeicher

GET /metrics/health (MCP, public)

Betriebszeit + Speicher (leichtgewichtige Prüfung)

logs/calls.ndjson (MCP)

Vollständige Aufrufhistorie: Trace-ID, Agent, Tool, Latenz, Erfolg, Wiederholungen

logs/security.log (MCP)

Alle Sicherheitsereignisse: AUTH-Fehler, Bedrohungen, Ratenbegrenzungen, Circuit-Auslösungen

snapshots/meta.json (Manager)

Letzter Snapshot: Zeitstempel + Anzahl für alle Datentypen

X-Trace-ID-Ablauf

Client → [generates or passes X-Trace-ID]
  → Manager/MCP Server [attaches to req.traceId, echoes in X-Trace-ID response header]
    → Security log entries [include traceId]
      → Call log entries [include traceId]
        → Upstream API call [X-Trace-ID forwarded in headers]
          → Response [traceId in JSON body]

Roadmap

v2.1 (Als Nächstes)

  • PostgreSQL für persistenten Speicher anbinden

  • Redis für verteilte Ratenbegrenzung + Cache anbinden

  • zod-Umgebungsschema-Validierung beim Start

v2.2

  • JWT-Refresh-Token + Blacklist

  • Prometheus-Metriken-Export

  • Ratenbegrenzung pro API-Schlüssel (nicht IP-basiert)

v3.0

  • Vollständige OpenAPI-Spezifikation

  • OpenTelemetry-Verteiltes-Tracing

  • OAuth2/OIDC-föderierte Agentenidentität


Mitwirken

Siehe CONTRIBUTING.md für Branch-Strategie, PR-Prozess und Code-Stil-Leitfaden.


Lizenz

MIT © MCP Tool Manager Team


Siehe REPORT.md für die vollständige technische Fähigkeitsbewertung.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to securely call MCP tools with risk scoring, checkpoints, rollback, and approval workflows.
    17 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to safely call enterprise tools through a governed MCP gateway with permission enforcement, blast-radius controls, input validation, and a full audit trail for every invocation.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables organizations to centrally govern agent tool access by exposing authorized MCP tools through a unified endpoint with search and execute functions, while enforcing function-level permissions, credential modes, and auditability.
    MIT