production-mcp-server
production-mcp-server
Ein produktionsreifer MCP-Server (Model Context Protocol), der demonstriert, wie Tools sicher für KI-Agenten in Unternehmensumgebungen bereitgestellt werden.
Die meisten MCP-Beispiele zeigen, wie man Tools mit Agenten verbindet. Dieses Repository zeigt, wie man es sicher in großem Maßstab macht – mit Berechtigungsdurchsetzung, verhaltensbezogenen Schutzmechanismen, Blast-Radius-Kontrollen und strukturierten Audit-Trails bei jedem Aufruf.
Das Problem → Lösung → Auswirkung
Problem | KI-Agenten benötigen Tool-Zugriff, um nützlich zu sein – aber uneingeschränkter Tool-Zugriff verursacht Produktionsstörungen. Teams sperren Agenten entweder komplett ein (nutzlos) oder gewähren vollen Zugriff (gefährlich). |
Lösung | Eine kontrollierte MCP-Gateway-Schicht, die zwischen jedem Agenten und jedem Tool sitzt: berechtigungsgeprüft, mit kontrolliertem Blast-Radius und bei jedem Aufruf vollständig auditiert. |
Auswirkung | Agenten arbeiten sicher in der Produktion mit einer Autorisierung auf Enterprise-Niveau. Sicherheitsteams können jede Aktion prüfen. Entwickler liefern Agentenfunktionen aus, ohne Angst vor Nebenwirkungen zu haben. |
Related MCP server: nice
Systemdesign
graph TD
A[🤖 AI Agent<br/>Claude / Any LLM] -->|MCP Protocol| B
subgraph MCP Gateway — Governed Tool Access
B[Request Received] --> C{Layer 1<br/>Permission Check}
C -->|Missing permissions| D[❌ Denied<br/>Audit logged]
C -->|Permitted| E{Layer 2<br/>Blast-Radius Guard}
E -->|HIGH risk, no confirmation| F[❌ Blocked<br/>Audit logged]
E -->|Confirmed or LOW/MED| G{Layer 3<br/>Input Validation}
G -->|Path traversal / SQL injection| H[❌ Blocked<br/>Audit logged]
G -->|Clean inputs| I[✅ Tool Handler Executes]
end
I --> J[(Tool Registry<br/>name · permissions · risk_level)]
I --> K[📋 Audit Trail<br/>every call · permitted or denied]
subgraph Tools
I --> L[📊 Read Metrics]
I --> M[🔍 Query Database]
I --> N[🚀 Trigger Rollback<br/>HIGH RISK — requires confirmed=True]
endAufschlüsselung der Schichten
Schicht | Was sie tut | Warum sie wichtig ist |
Tool-Registry | Speichert Name, Beschreibung, erforderliche Berechtigungen und Risikostufe für jedes Tool | Single Source of Truth – kein Tool läuft ohne Registrierung |
Berechtigungsdurchsetzung | Prüft vor der Ausführung die Berechtigungen des Aufrufers gegen die Tool-Anforderungen | Agenten können nur Tools aufrufen, für die sie ausdrücklich autorisiert sind |
Blast-Radius-Schutz | Erfordert | Agenten können nicht versehentlich destruktive Operationen auslösen |
Eingabevalidierung | Blockiert Path Traversal, destruktives SQL und andere Angriffsmuster | Defense-in-Depth – validiert, bevor ein Handler läuft |
Audit-Trail | Unveränderliches Append-only-Log jedes Aufrufs | Vollständige Prüfbarkeit für Compliance und Debugging |
Das Problem
Wenn KI-Agenten Tool-Zugriff erhalten, treten sofort drei Fehlermodi auf:
Uneingeschränkter Zugriff – Agenten rufen Tools auf, die sie nicht aufrufen sollten, was unbeabsichtigte Nebenwirkungen verursacht
Kein Audit-Trail – Wenn etwas schiefgeht, lässt sich nicht rekonstruieren, was der Agent getan hat
Stille Fehler – Berechtigungsfehler werden verschluckt, was Debugging unmöglich macht
Dieser Server adressiert alle drei.
Architektur
Agent (Claude / any LLM)
│
▼ MCP Protocol
┌─────────────────────────────┐
│ MCP Server │
│ ┌──────────────────────┐ │
│ │ Guardrail Layer │ │ ← permission check → blast-radius guard → arg validation
│ └──────────┬───────────┘ │
│ │ │
│ ┌──────────▼───────────┐ │
│ │ Tool Registry │ │ ← name, description, required_permissions, risk_level
│ └──────────┬───────────┘ │
│ │ │
│ ┌──────────▼───────────┐ │
│ │ Tool Handlers │ │ ← plain Python functions, no security logic here
│ └──────────────────────┘ │
│ │ │
│ ┌──────────▼───────────┐ │
│ │ Audit Trail │ │ ← every invocation logged, permitted or denied
│ └──────────────────────┘ │
└─────────────────────────────┘Kernmuster
1. Kontrollierter Tool-Zugriff
Jedes Tool wird mit expliziten Berechtigungsanforderungen registriert:
registry.register(ToolDefinition(
name="trigger_rollback",
description="Initiate a deployment rollback.",
handler=trigger_rollback,
required_permissions={"deployments:write", "deployments:rollback"},
risk_level=RiskLevel.HIGH,
requires_confirmation=True, # blast-radius guard
))2. Berechtigungsdurchsetzung
Die Guardrail-Schicht prüft Berechtigungen, bevor ein Handler läuft:
# Agent tries to trigger rollback but lacks deployments:write
guardrails.invoke(
tool_name="trigger_rollback",
arguments={"deployment_id": "d-123", "reason": "high error rate"},
caller_id="monitoring-agent",
caller_permissions={"deployments:read"}, # missing write permission
)
# → PermissionDeniedError: Caller 'monitoring-agent' lacks permissions
# {'deployments:write', 'deployments:rollback'} for tool 'trigger_rollback'3. Blast-Radius-Kontrollen
Tools mit hohem Risiko erfordern ein explizites Bestätigungs-Flag – Agenten können nicht versehentlich destruktive Operationen auslösen:
# Without confirmation — blocked
guardrails.invoke("trigger_rollback", {...}, confirmed=False)
# → GuardrailViolationError: HIGH risk tool requires confirmed=True
# With confirmation — permitted
guardrails.invoke("trigger_rollback", {...}, confirmed=True)4. Eingabevalidierung
Prüfungen auf Argumentebene laufen vor jedem Tool-Handler:
# Path traversal — blocked automatically
guardrails.invoke("read_file", {"path": "../../etc/passwd"}, ...)
# → GuardrailViolationError: Path traversal detected
# Destructive SQL — blocked automatically
guardrails.invoke("query", {"query": "DROP TABLE users"}, ...)
# → GuardrailViolationError: Destructive SQL pattern detected5. Strukturierter Audit-Trail
Jeder Aufruf – erlaubt oder verweigert – wird aufgezeichnet:
# After some invocations
events = audit.get_events()
print(events[0].to_json())
# {
# "tool_name": "read_deployment_status",
# "caller_id": "oncall-agent-v1",
# "arguments": {"deployment_id": "d-abc"},
# "result": "{'status': 'healthy', ...}",
# "permitted": true,
# "timestamp": "2026-08-26T14:30:00+00:00",
# "duration_ms": 12.4
# }
print(f"Denied requests: {audit.denied_count()}")Projektstruktur
production-mcp-server/
├── src/
│ ├── server.py # MCP server entry point — tool registration + FastMCP wiring
│ ├── registry.py # Tool registry — metadata, permissions, risk classification
│ ├── guardrails.py # Guardrail layer — 3-layer enforcement on every invocation
│ ├── audit.py # Structured audit trail — append-only event log
│ └── tools/
│ └── example_tools.py # Example handlers — swap with your real data sources
├── tests/
│ ├── test_guardrails.py # Permission enforcement, blast-radius, input validation
│ └── test_registry.py # Tool registration and lookup
├── examples/
│ └── basic_usage.py # Standalone usage without the MCP server
└── pyproject.tomlInstallation
pip install -e ".[dev]"Server ausführen
python -m src.serverVerbinden Sie einen beliebigen MCP-kompatiblen Client (Claude Desktop, Claude Code usw.) mit dem Server.
Tests ausführen
pytest tests/ -vErweitern
Hinzufügen eines neuen Tools
Schreiben Sie die Handler-Funktion in
src/tools/:
def read_config(config_key: str) -> str:
return os.environ.get(config_key, "not_found")Registrieren Sie es mit Berechtigungen und Risikostufe:
registry.register(ToolDefinition(
name="read_config",
description="Read a configuration value by key.",
handler=read_config,
required_permissions={"config:read"},
risk_level=RiskLevel.LOW,
))Stellen Sie es über FastMCP bereit:
@mcp.tool()
def config(config_key: str) -> str:
return guardrails.invoke("read_config", {"config_key": config_key}, ...)Die Guardrail- und Audit-Schichten werden automatisch angewendet – dort sind keine Änderungen erforderlich.
Integration Ihrer Auth-Schicht
Ersetzen Sie die statischen CALLER_ID / CALLER_PERMISSIONS in server.py durch Ihren echten Identitätsanbieter:
# Example: derive permissions from an OAuth token in the MCP session context
def get_caller_context(session) -> tuple[str, set[str]]:
token = session.headers.get("Authorization")
claims = verify_jwt(token)
return claims["sub"], set(claims["permissions"])Warum das wichtig ist
KI-Agenten, die in der Produktion mit Tool-Zugriff arbeiten, benötigen dieselben Kontrollen wie jeder privilegierte Dienst: Least-Privilege-Autorisierung, Eingabevalidierung, Blast-Radius-Grenzen und einen vollständigen Audit-Trail. Dieses Repository ist eine Referenzimplementierung dieser Muster mithilfe des MCP-Protokolls.
Lizenz
MIT
Teil des Agentic-Infrastruktur-Stacks
Dieses Repository ist ein Baustein eines Portfolios für KI-Agenten-Infrastruktur in der Produktion:
Repo | Was es ist |
Vollständiges Systemdesign: wie diese Bausteine in einer Produktionsbereitstellung zusammenspielen, die 95 % der manuellen On-Call-Triage eliminiert hat | |
← Sie sind hier: die MCP-Governance-Schicht | |
Wie die Qualität von Agenten gemessen und Regressionen erkannt werden, bevor sie ausgeliefert werden |
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityCmaintenanceA secure MCP gateway for enterprise AI tool execution, enabling governed invocation of business tools with authentication, RBAC, audit logging, PII redaction, and async processing.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceProvides a secure MCP gateway for AI agents to access APIs without exposing raw credentials, with scoped access, audit logging, and OAuth support.MIT

AgentsGateofficial
AlicenseNot gradedqualityAmaintenanceEnables AI agents to securely call MCP tools with risk scoring, checkpoints, rollback, and approval workflows.134MIT
evav-gatewayofficial
AlicenseNot gradedqualityBmaintenanceGoverned MCP gateway that lets AI agents call tools with policy enforcement, prompt-injection screening, a kill-switch, and tamper-evident signed audit logs.Apache 2.0
Related MCP Connectors
See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.
Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.
Runtime permission, approval, and audit layer for AI agent tool execution.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/TushGoel/production-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server