FastMCP Context: Cómo darle “memoria” y contexto a tu IA en 2026
desarrollo ai, desarrollo, fastmcp, pythonExplora cómo dotar a los servidores FastMCP de una “memoria” de sesión robusta utilizando el objeto Context.
Este post explora cómo dotar a los servidores FastMCP de una “memoria” de sesión robusta y eficiente utilizando el objeto Context. La falta de persistencia en las aplicaciones de IA es una fuente de frustración, haciendo las interacciones repetitivas y carentes de fluidez. Para que una IA sea útil y conversacional, necesita contexto, es decir, la capacidad de “recordar” detalles cruciales a lo largo de una sesión.
I. Introducción: La Necesidad de Memoria en la IA
La frustración surge cuando un asistente de IA olvida preferencias de estilo, nombres de arquitectura u objetivos previamente comunicados. Para superar esto y lograr interacciones fluidas, las aplicaciones de IA requieren contexto, permitiendo que la información persista a lo largo de una sesión. FastMCP y su objeto Context abordan esta necesidad.
II. ¿Qué es el Context en FastMCP? La “Memoria” de Corto Plazo de tu IA
- FastMCP y el Protocolo de Contexto del Modelo (MCP): FastMCP es un framework de Python para crear servidores bajo el Model Context Protocol (MCP). El MCP funciona como un estándar universal (similar a “USB-C para la IA”) que permite a los Modelos de Lenguaje de Gran Escala (LLMs) conectarse de manera uniforme con herramientas, datos y servicios externos.
- El Objeto Context de FastMCP: Actúa como un puente que permite a las funciones acceder a características vitales de una sesión MCP, como logs, reportes de progreso, recursos y prompts. Permite que la información persista, funcionando como una “memoria de corto plazo” compartida entre el usuario y el modelo.
III. Manejo de Estados con Context: Persistencia en la Conversación
La persistencia en FastMCP se logra a través de dos métodos fundamentales del objeto Context:
set_state(key, value)
Almacena información relevante (ej. preferencia de usuario, ID de proyecto) dentro del estado de la sesión.
get_state(key)
Recupera dicha información en cualquier momento posterior de la misma sesión para personalizar respuestas.
Características del Estado de Sesión:
- Alcance de Sesión (Session Scope): Los datos persisten mientras la sesión MCP esté activa.
- Aislamiento (Isolation): Los datos se asocian automáticamente a la sesión del cliente, previniendo la confusión entre usuarios.
- Expiración: Los valores del estado expiran tras 24 horas de inactividad para mantener la higiene del sistema.
Opciones de Almacenamiento Persistente:
- En Memoria (Por defecto): Rápido para servidores únicos, pero los datos se pierden al reiniciar el proceso.
- Backends Personalizados: Se puede usar la librería
py-key-value-aiopara conectar FastMCP con Redis, DynamoDB o MongoDB. - Persistencia Integrada: Desde la versión 2.13, es una característica nativa habilitada por defecto.
IV. Construyendo una Herramienta con Memoria: Ejemplo Práctico
Se presenta un ejemplo de implementación de un bot que recuerda el nombre y el idioma del usuario utilizando FastMCP en Python.
from fastmcp import FastMCP
from fastmcp.dependencies import CurrentContext
from fastmcp.server.context import Context
from typing import Optional
# Instancia del servidor MCP
mcp_app = FastMCP(name="UserPreferenceBot")
@mcp_app.tool()
async def set_user_name(name: str, ctx: Context = CurrentContext()) -> str:
"""Almacena el nombre del usuario en el estado de la sesión."""
await ctx.set_state("user_name", name)
return f"¡Hola, {name}! Recordaré tu nombre durante esta sesión."
@mcp_app.tool()
async def greet_user(ctx: Context = CurrentContext()) -> str:
"""Saluda al usuario usando su nombre e idioma si están disponibles."""
name: Optional[str] = await ctx.get_state("user_name")
language: Optional[str] = await ctx.get_state("language_preference")
greeting = "Hello"
if name: greeting += f", {name}"
if language in ["spanish", "español"]:
greeting = f"¡Hola, {name}!" if name else "¡Hola!"
return greeting
Nota del autor: Fíjate cómo la inyección de dependencias ctx: Context = CurrentContext() nos permite desacoplar la lógica de estado de los parámetros que recibe la herramienta del usuario.
V. Seguridad y Privacidad del Contexto
Dotar de memoria a una IA implica una gran responsabilidad. El manejo de estados puede exponer datos sensibles si no se implementa con cautela.
Recomendaciones
- ✅Utilizar UUIDs no deterministas.
- ✅Asegurar la expiración de tokens.
- ✅Verificar autorización en cada llamada.
Mejores Prácticas
- 🛡️Autorización basada en políticas (Cerbos).
- 🛡️Mitigación de Inyección de Prompts.
- 🛡️Principio de mínimo privilegio.
Al usar backends externos como Redis o MongoDB, es imperativo cumplir normativas como GDPR o CCPA, incluyendo cifrado en reposo y políticas de retención de datos.
VI. Conclusión: Construyendo IAs Inteligentes y Conscientes
El objeto Context en FastMCP transforma una IA de procesador de texto a un asistente consciente de la interacción. Un manejo de estados sólido permite experiencias personalizadas, fluidas y humanas. La potencia de la “memoria” debe equilibrarse con una arquitectura de seguridad rigurosa.