Skip to main content
Glama

Biblioteca Digital MCP

by nadadi
server.py4.57 kB
from mcp.server.fastmcp import FastMCP from typing import Dict, List import json # Create an MCP server para biblioteca digital mcp = FastMCP("Biblioteca Digital") # Base de datos simulada de libros libros_db: Dict[str, Dict] = { "1": { "id": "1", "titulo": "Cien años de soledad", "autor": "Gabriel García Márquez", "año": 1967, "genero": "Realismo mágico", "descripcion": "Una obra maestra de la literatura latinoamericana que narra la historia de la familia Buendía." }, "2": { "id": "2", "titulo": "Don Quijote de la Mancha", "autor": "Miguel de Cervantes", "año": 1605, "genero": "Novela", "descripcion": "La historia del ingenioso hidalgo que soñaba con ser caballero andante." } } # Tool 1: Buscar libros @mcp.tool() def buscar_libro(termino: str) -> str: """Busca libros por título o autor en la biblioteca.""" resultados = [] termino_lower = termino.lower() for libro in libros_db.values(): if (termino_lower in libro["titulo"].lower() or termino_lower in libro["autor"].lower()): resultados.append(f"📖 {libro['titulo']} - {libro['autor']} ({libro['año']})") if resultados: return f"Libros encontrados:\n" + "\n".join(resultados) else: return f"No se encontraron libros que coincidan con '{termino}'" # Tool 2: Agregar nuevo libro @mcp.tool() def agregar_libro(titulo: str, autor: str, año: int, genero: str = "Sin clasificar") -> str: """Agrega un nuevo libro a la biblioteca.""" # Generar nuevo ID nuevo_id = str(len(libros_db) + 1) nuevo_libro = { "id": nuevo_id, "titulo": titulo, "autor": autor, "año": año, "genero": genero, "descripcion": f"Libro agregado por el usuario: {titulo} de {autor}" } libros_db[nuevo_id] = nuevo_libro return f"✅ Libro agregado exitosamente:\n📖 {titulo} - {autor} ({año})\nID: {nuevo_id}" # Resource: Lista de todos los libros @mcp.resource("biblioteca://libros") def lista_libros() -> str: """Proporciona la lista completa de libros en la biblioteca.""" return json.dumps({ "biblioteca": { "total_libros": len(libros_db), "libros": list(libros_db.values()) } }, indent=2, ensure_ascii=False) # Resources: Información detallada de cada libro específico @mcp.resource("biblioteca://libro/1") def libro_1() -> str: """Información del libro: Cien años de soledad.""" return informacion_libro_por_id("1") @mcp.resource("biblioteca://libro/2") def libro_2() -> str: """Información del libro: Don Quijote de la Mancha.""" return informacion_libro_por_id("2") # Función auxiliar para obtener información de libro por ID def informacion_libro_por_id(libro_id: str) -> str: """Proporciona información detallada de un libro específico.""" if libro_id in libros_db: libro = libros_db[libro_id] return json.dumps({ "titulo": libro["titulo"], "autor": libro["autor"], "año": libro["año"], "genero": libro["genero"], "descripcion": libro["descripcion"], "disponible": True }, indent=2, ensure_ascii=False) else: return json.dumps({"error": f"Libro con ID {libro_id} no encontrado"}, indent=2, ensure_ascii=False) # Prompt: Generar reseña de libro @mcp.prompt() def generar_reseña(libro_id: str) -> str: """Genera un prompt para crear una reseña literaria de un libro.""" if libro_id in libros_db: libro = libros_db[libro_id] return f"""Eres un crítico literario experto. Escribe una reseña profesional y detallada del libro: Título: {libro['titulo']} Autor: {libro['autor']} Año de publicación: {libro['año']} Género: {libro['genero']} Descripción: {libro['descripcion']} Por favor, incluye en tu reseña: 1. Un análisis del estilo narrativo 2. Los temas principales de la obra 3. El contexto histórico y cultural 4. Tu opinión crítica sobre la relevancia de la obra 5. Una calificación del 1 al 10 Mantén un tono académico pero accesible.""" else: return f"Error: No se puede generar reseña para el libro ID {libro_id} - libro no encontrado." # Run the server if __name__ == "__main__": mcp.run()

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/nadadi/basic-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server