SecureAgentServer
Sistema de agente seguro basado en MCP
Un servidor y cliente MCP para tickets de soporte y cuentas de cliente, construido y asegurado de extremo a extremo: autenticación mediante token firmado, dos salvaguardas independientes contra la inyección de prompts y el envenenamiento de herramientas, un modelo de amenazas documentado y un control de supervisión humana para la única llamada a una herramienta destructiva. Construido para el laboratorio "Secure an MCP-Based Agent System".
Arquitectura
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
Configuración
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 promptsReproducción de los controles de seguridad
Control | Cómo verificarlo |
Autenticación con JWT firmado | Los dos últimos demos de |
Salvaguarda 1: saneamiento de inyección de prompts | Ejecuta el cliente y busca en la salida de |
Salvaguarda 2: detección de envenenamiento de herramientas |
|
Supervisión humana en acciones destructivas |
|
Asignación de privilegio mínimo |
|
Modelo de amenazas
Documento completo, incluidos 5 riesgos identificados con sus mitigaciones y notas de riesgo residual, expuestos explícitamente y no ocultados: docs/threat-model.md.
Lo que queda deliberadamente fuera del alcance, dicho sin rodeos
mint_token.pysustituye a un proveedor de identidades OAuth 2.1 real; un despliegue de producción necesita emisión/rotación/revocación real de tokens, no un script de acuñación local.No hay limitación de velocidad ni endurecimiento a nivel de red (terminación de TLS, WAF): esto es una demostración de seguridad a nivel de aplicación, no una guía completa de endurecimiento de despliegue.
La mitad basada en regex de la Salvaguarda 1 es explícitamente una capa secundaria de mejor esfuerzo — para saber por qué el envoltorio delimitador es el control realmente usado, ver
docs/threat-model.md, Riesgo #1.
Sin secretos en el repositorio
MCP_JWT_SECRET se lee del entorno (consulta .env.example) y nunca se fija en el código ni se incluye en el repositorio. tool_manifest.json sí se incorpora deliberadamente al repositorio: es un manifiesto de hashes fijado (como un lockfile), no un secreto.
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