SecureAgentServer
Sicheres MCP-basiertes Agent-System
Ein MCP-Server und -Client für Support-Tickets und Kundenkonten, durchgängig entwickelt und abgesichert: signierte Token-Authentifizierung, zwei unabhängige Schutzmechanismen gegen Prompt Injection und Tool Poisoning, ein dokumentiertes Bedrohungsmodell sowie eine Human-in-the-Loop-Sperre für den einzigen destruktiven Tool-Aufruf. Entwickelt für das Lab „Secure an MCP-Based Agent System“.
Architektur
flowchart TD
HOST["Host application"] --> CLIENT["client.py\n(fastmcp.Client + elicitation_handler)"]
CLIENT <-->|"Streamable HTTP\nAuthorization: Bearer <signed JWT>"| SERVER
subgraph Server["server.py — FastMCP('SecureAgentServer')"]
AUTH["JWTVerifier (HS256)\nissuer + audience + signature checked"]
G1["Guardrail 1: sanitize_untrusted_text()\napplied to ticket body/subject"]
G2["Guardrail 2: verify_tool_manifest()\nchecked at startup, refuses to start on mismatch"]
TOOLS["Tools: search_tickets, lookup_customer_account,\nclose_ticket (elicitation-gated)"]
AUTH --> TOOLS
TOOLS --> G1
end
G2 -.->|startup check| SERVER
TOOLS --> TICKETS[("data/tickets.json\n(untrusted customer text)")]
TOOLS --> CUSTOMERS[("data/customers.json\n('internal API')")]Related MCP server: permitd MCP Server
Einrichtung
pip install -r requirements.txt
# 1. Set the JWT signing secret (never commit the real value; see .env.example)
export MCP_JWT_SECRET="a-long-random-secret-at-least-32-characters"
# 2. Generate the pinned tool-integrity manifest (a deliberate, manual step —
# see docs/threat-model.md Risk #2)
python generate_manifest.py
# 3. Run the server
python server.py
# 4. In another terminal (same MCP_JWT_SECRET exported)
python client.py --auto-confirm # non-interactive demo
python client.py # interactive: real yes/no confirmation promptsNachvollziehen der Sicherheitsmaßnahmen
Sicherheitsmaßnahme | So verifizieren Sie sie |
Signierte-JWT-Authentifizierung | Die letzten beiden Demos von |
Schutzmechanismus 1: Prompt-Injection-Bereinigung | Führen Sie den Client aus und prüfen Sie die |
Schutzmechanismus 2: Tool-Poisoning-Erkennung |
|
Human-in-the-Loop bei destruktiven Aktionen |
|
Least-Privilege-Scoping |
|
Bedrohungsmodell
Vollständige Ausarbeitung einschließlich 5 identifizierter Risiken mit Gegenmaßnahmen und Restrisiko-Hinweisen, die explizit benannt statt beschönigt werden: docs/threat-model.md.
Was bewusst außerhalb des Umfangs liegt, klar benannt
mint_token.pysteht stellvertretend für einen echten OAuth-2.1-Identitätsanbieter – eine Produktionsbereitstellung benötigt echte Token-Ausstellung, -Rotation und -Widerruf, kein lokales Skript zum Prägen von Token.Kein Rate-Limiting oder Härtung auf Netzwerkebene (TLS-Terminierung, WAF) – dies ist eine Sicherheitsdemo auf Anwendungsebene und kein vollständiger Leitfaden zur Härtung von Bereitstellungen.
Die regex-basierte Hälfte von Schutzmechanismus 1 ist ausdrücklich eine sekundäre, Best-Effort-Ebene – siehe Risiko Nr. 1 in
docs/threat-model.md, warum das Umschließen mit Begrenzern (delimiter-wrapping) die Maßnahme ist, auf die sich tatsächlich verlassen wird.
Keine Geheimnisse im Repository
MCP_JWT_SECRET wird aus der Umgebung gelesen (siehe .env.example) und ist nie hartkodiert oder eingecheckt. tool_manifest.json ist bewusst eingecheckt – es ist ein festgeschriebenes Hash-Manifest (wie eine Lockfile), kein Geheimnis.
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
- FlicenseNot gradedqualityCmaintenanceProvides a set of tools with a security verification layer that assesses risk and requires human approval for high-risk actions, reducing prompt injection and tool-poisoning attacks.
- AlicenseNot gradedqualityCmaintenanceGates agent tool execution with human approval, audit trails, and replay-resistant permits, enabling safe use of tools in agent loops.MIT
- FlicenseNot gradedqualityBmaintenanceProvides a secure MCP boundary for AI agents, intercepting and validating tool calls, redacting secrets, and requiring human approval for sensitive actions with a tamper-evident audit trail.
- FlicenseNot gradedqualityCmaintenanceEnables controlled AI-agent access to enterprise-shaped tools with a deny-by-default gated write path, human approval, dry-run execution, and append-only audit logging.
Related MCP Connectors
Runtime permission, approval, and audit layer for AI agent tool execution.
See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.
Responsible-AI guardrails for agents: scoring with policy, injection & PII detection, DPDP.
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/bhargavlukka/secure-mcp-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server