41 MCP - Model Context Protocol
42 π MCP
42.1 Model Context Protocol
42.2 π DescripciΓ³n
MCP es un protocolo abierto que estandariza cΓ³mo las IAs se conectan a herramientas, APIs y datos. Es como USB para IA: un estΓ‘ndar universal.
42.3 ποΈ Arquitectura
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β IA CLIENT β
β (Claude, GPT, etc.) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β MCP Protocol
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MCP SERVER β
β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Tools β β Resources β β Prompts β β
β β β β β β β β
β β - Ejecutar β β - Leer β β - Templates β β
β β cΓ³digo β β archivos β β predefs β β
β β - Llamar β β - Acceder β β - Sistemas β β
β β APIs β β BDs β β prompts β β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
42.4 π§ ImplementaciΓ³n
42.4.1 Servidor MCP BΓ‘sico
from mcp import Server
from mcp.types import Tool, TextContent
server = Server("mi-servidor")
@server.tool("calcular")
async def calcular(expression: str) -> list[TextContent]:
"""Calcula una expresiΓ³n matemΓ‘tica"""
try:
result = eval(expression) # Β‘Cuidado con seguridad!
return [TextContent(text=f"Resultado: {result}")]
except Exception as e:
return [TextContent(text=f"Error: {str(e)}")]
if __name__ == "__main__":
server.run()42.4.2 Cliente MCP
from mcp import Client
async def main():
async with Client("http://localhost:8000") as client:
# Listar herramientas disponibles
tools = await client.list_tools()
# Ejecutar una herramienta
result = await client.call_tool("calcular", {"expression": "2 + 2"})
print(result)42.5 π Seguridad
| Riesgo | MitigaciΓ³n |
|---|---|
| EjecuciΓ³n de cΓ³digo | Sandbox + whitelist |
| Acceso a archivos | Permisos granulares + chroot |
| InyecciΓ³n de prompts | ValidaciΓ³n estricta de inputs |
| ExfiltraciΓ³n de datos | Logging + rate limiting |