UVG Library MCP Server
Provides access to a bibliographic catalog stored in MySQL, enabling tools to search books, generate APA 7 citations, reserve available copies, and find alternative books on the same topic.
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., "@UVG Library MCP ServerBusca libros sobre inteligencia artificial y muéstrame su disponibilidad."
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.
Servidor MCP de Biblioteca UVG
Servidor local basado en Model Context Protocol (MCP) para consultar un catálogo bibliográfico almacenado en MySQL. Expone herramientas para buscar libros, generar referencias en formato APA 7, reservar ejemplares y encontrar alternativas disponibles.
El servidor utiliza transporte STDIO, por lo que está diseñado para ser iniciado y administrado por un anfitrión MCP, como un chatbot, un cliente desarrollado con el SDK de MCP o MCP Inspector.
Funcionalidades
El servidor expone cuatro herramientas:
Herramienta | Propósito | Modifica la base de datos |
| Busca libros por texto o tema y muestra disponibilidad. | No |
| Obtiene los datos del libro y genera una referencia APA 7. | No |
| Crea una reserva y asigna un ejemplar disponible. | SÃ |
| Busca libros del mismo tema que tengan ejemplares disponibles. | No |
Related MCP server: worldcat-mcp-server
Estructura del repositorio
uvg-library-mcp/
├── mcp_servers/
│ ├── __init__.py
│ └── local_library/
│ ├── __init__.py
│ ├── db_connection.py
│ ├── server.py
│ └── tools.py
├── db/
│ ├── 01.sql
│ └── 02.sql
├── tests/
│ └── test_tools.py
├── .env.example
├── .gitignore
├── requirements.txt
└── README.mdRequisitos
Python 3.11 o superior.
MySQL 8.0 o superior.
pipy soporte para entornos virtuales.Node.js es opcional y solo se necesita para probar el servidor con MCP Inspector.
Instalación
1. Clonar el repositorio
git clone https://github.com/USUARIO/uvg-library-mcp.git
cd uvg-library-mcpReemplace USUARIO por el propietario real del repositorio.
2. Crear un entorno virtual
Windows PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1Linux o macOS:
python3 -m venv .venv
source .venv/bin/activate3. Instalar las dependencias
python -m pip install --upgrade pip
pip install -r requirements.txtEl archivo requirements.txt debe incluir, como mÃnimo:
mcp>=1.28,<2
pymysql
python-dotenvPreparación de MySQL
Los scripts incluidos están pensados para ejecutarse sobre una base vacÃa:
db/01.sql: crea tablas, relaciones, restricciones e Ãndices.db/02.sql: agrega los datos de demostración.
1. Crear la base y el usuario
Abra el cliente de MySQL con una cuenta administrativa:
mysql -u root -pEjecute lo siguiente y sustituya CONTRASENA_SEGURA por una contraseña local:
CREATE DATABASE librarydb
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'libraryu'@'localhost'
IDENTIFIED BY 'CONTRASENA_SEGURA';
GRANT ALL PRIVILEGES ON librarydb.*
TO 'libraryu'@'localhost';
FLUSH PRIVILEGES;
USE librarydb;2. Ejecutar los scripts
Desde la consola de MySQL, utilice rutas absolutas con barras /:
SOURCE C:/ruta/al/repositorio/uvg-library-mcp/db/01.sql;
SOURCE C:/ruta/al/repositorio/uvg-library-mcp/db/02.sql;En Linux o macOS puede usar, por ejemplo:
SOURCE /ruta/al/repositorio/uvg-library-mcp/db/01.sql;
SOURCE /ruta/al/repositorio/uvg-library-mcp/db/02.sql;Compruebe que se cargaron los datos:
SELECT id, titulo FROM libro;
SELECT id, codigo_inventario, estado FROM ejemplar;
EXIT;Los scripts no deben ejecutarse repetidamente sobre la misma base sin limpiarla, porque contienen identificadores y valores únicos de demostración.
Variables de entorno
Copie el archivo de ejemplo:
Windows PowerShell:
Copy-Item .env.example .envLinux o macOS:
cp .env.example .envConfigure .env con los datos creados anteriormente:
DB_HOST=localhost
DB_PORT=3306
DB_NAME=librarydb
DB_USER=libraryu
DB_PASSWORD=CONTRASENA_SEGURANo publique .env. El repositorio debe contener únicamente .env.example, sin credenciales reales.
Verificar la conexión con MySQL
Desde la raÃz del repositorio y con el entorno virtual activo:
python -m mcp_servers.local_library.db_connectionEl resultado esperado es similar a:
Conexión exitosa a MySQL.
Biblioteca encontrada: Biblioteca Central UVGEjecutar el servidor MCP
python -m mcp_servers.local_library.serverEl proceso puede quedar esperando sin imprimir mensajes. Esto es normal: con transporte STDIO, el servidor espera solicitudes JSON-RPC enviadas por un cliente MCP. Para detenerlo manualmente, presione Ctrl+C.
No escriba mensajes de depuración en la salida estándar del servidor, ya que podrÃan interferir con la comunicación JSON-RPC. Para diagnóstico se recomienda utilizar la salida de error estándar o un archivo de logs.
Herramientas disponibles
buscar_libros_tool
Busca libros por palabras del tÃtulo o la descripción y, opcionalmente, por tema.
Parámetros:
Parámetro | Tipo | Obligatorio | Descripción |
|
| No | Texto que se buscará en el tÃtulo o descripción. |
|
| No | Nombre o fragmento del tema bibliográfico. |
Ejemplos conceptuales:
{
"query": "bases de datos"
}{
"tema": "Redes"
}Retorna los datos de los libros encontrados y la cantidad de ejemplares disponibles.
obtener_cita_apa_tool
Consulta el tÃtulo, año, edición, editorial y autores del libro para generar una referencia en formato APA 7.
Parámetro | Tipo | Obligatorio | Descripción |
|
| SÃ | Identificador del libro en la base de datos. |
Ejemplo:
{
"libro_id": 3
}Respuesta de ejemplo:
Kurose, J. & Ross, K. (2017). Redes de Computadoras: Un Enfoque Descendente (6a ed.). Addison-Wesley.Esta herramienta solo ejecuta consultas de lectura; no modifica la base de datos.
reservar_libro_tool
Crea una reserva para un usuario. Si existe un ejemplar disponible, lo asigna y cambia su estado a RESERVADO; de lo contrario, la reserva queda pendiente.
Parámetro | Tipo | Obligatorio | Descripción |
|
| SÃ | Identificador del usuario. |
|
| SÃ | Identificador del libro. |
Ejemplo:
{
"usuario_id": 1,
"libro_id": 3
}Esta herramienta modifica las tablas reserva y ejemplar. Se recomienda probarla únicamente con una base de desarrollo.
buscar_alternativas_tool
Busca otros libros asociados con los mismos temas y que posean ejemplares disponibles.
Parámetro | Tipo | Obligatorio | Descripción |
|
| SÃ | Libro para el que se desean alternativas. |
Ejemplo:
{
"libro_id": 4
}Probar con MCP Inspector
Este paso es opcional y requiere Node.js. Desde la raÃz del repositorio:
Windows PowerShell:
npx -y @modelcontextprotocol/inspector .\.venv\Scripts\python.exe -m mcp_servers.local_library.serverLinux o macOS:
npx -y @modelcontextprotocol/inspector ./.venv/bin/python -m mcp_servers.local_library.serverMCP Inspector abrirá una interfaz desde la que se puede inicializar la conexión, consultar tools/list y ejecutar cada herramienta.
Pruebas recomendadas:
Ejecutar
buscar_libros_toolcontema = Redes.Tomar el ID de uno de los resultados.
Ejecutar
obtener_cita_apa_toolcon ese ID.Ejecutar
buscar_alternativas_toolcon el ID4.Ejecutar
reservar_libro_toolconusuario_id = 1en una base de pruebas.
Configuración en un anfitrión MCP
Ejemplo genérico de configuración para un cliente que inicie servidores mediante STDIO:
{
"servers": {
"library": {
"transport": "stdio",
"command": "C:/ruta/al/repositorio/uvg-library-mcp/.venv/Scripts/python.exe",
"args": [
"-m",
"mcp_servers.local_library.server"
],
"cwd": "C:/ruta/al/repositorio/uvg-library-mcp"
}
}
}En Linux o macOS, cambie command por la ruta a .venv/bin/python.
La configuración exacta puede variar según el anfitrión utilizado. El proceso siempre debe iniciarse desde la raÃz del repositorio o utilizarla como directorio de trabajo para que Python pueda resolver el paquete mcp_servers.
Ejecutar pruebas
Con el entorno virtual activo y MySQL configurado:
python -m unittest discover -s tests -vLas pruebas que crean reservas modifican la base de datos. Utilice una base exclusiva para desarrollo o restablezca los datos después de ejecutarlas.
Solución de problemas
DB_PASSWORD is required
Verifique que exista .env en la raÃz del repositorio y que contenga una lÃnea válida:
DB_PASSWORD=su_contraseñaAccess denied for user
El usuario, la contraseña o el host no coinciden con la cuenta configurada en MySQL. Pruebe primero:
mysql -u libraryu -p -h localhost librarydbCan't connect to MySQL server
Confirme que MySQL esté iniciado, que escuche en el puerto configurado y que ningún firewall bloquee la conexión.
No module named mcp_servers
Ejecute el comando desde la raÃz del repositorio, no desde mcp_servers/local_library:
python -m mcp_servers.local_library.serverEl proceso parece quedarse detenido
Un servidor MCP por STDIO permanece esperando mensajes del cliente. Esto es el comportamiento esperado y no significa que esté bloqueado.
Caracteres incorrectos en Windows
Use una terminal con UTF-8:
chcp 65001
$env:PYTHONUTF8="1"Seguridad y limitaciones
No incluya contraseñas ni claves en el código fuente.
No publique el archivo
.env.Use una base de datos de desarrollo para probar reservas.
Restrinja los permisos del usuario MySQL únicamente a
librarydb.El servidor utiliza STDIO y no abre un puerto de red por sà mismo.
El formato APA generado depende de la calidad de los datos almacenados.
Este catálogo contiene datos de demostración y no representa necesariamente el inventario real de la Universidad del Valle de Guatemala.
TecnologÃas utilizadas
Python
MCP Python SDK / FastMCP
JSON-RPC
MySQL
PyMySQL
python-dotenv
Uso académico
Proyecto desarrollado para el curso CC3067 Redes de la Universidad del Valle de Guatemala. Si se reutiliza código o documentación de terceros, deben conservarse las referencias y atribuciones correspondientes.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
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 Connectors
Books MCP — wraps Open Library API (free, no auth)
Federated search of books and papers, BibTeX/RIS citations, open-access retrieval and reading.
Academic literature search, retrieval, and private library management on top of OpenAlex.
Gutendex MCP — wraps Gutendex API for Project Gutenberg books (free, no auth)
Related MCP Servers
- AlicenseAqualityDmaintenanceA library management MCP server supporting book search, member management, and loan operations through natural language commands.134MIT
- FlicenseNot gradedqualityCmaintenanceEnables searching WorldCat's library catalog for bibliographic records, editions, citations, and exports in various formats via natural language.-
- AlicenseNot gradedqualityBmaintenanceEnables conversational management of a Calibre ebook library via MCP, including search, metadata editing, adding, converting, deduplicating, removing, and emailing books with human-in-the-loop safety.1MIT
- FlicenseAqualityCmaintenanceA small MCP server modeling a library with tools to search books, borrow books, and manage members, enabling interaction with a library catalog through natural language.4-
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/tismajo/CC3067-library-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server