santimulet12/ollamaUsingMcpServer
If you are the rightful owner of ollamaUsingMcpServer and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
This document provides a comprehensive guide to setting up and using a conversational assistant system that integrates Ollama with MCP (Model Context Protocol) tools for real-time information retrieval, such as weather updates.
Sistema de Chat con Herramientas MCP
Sistema de asistente conversacional que integra Ollama con herramientas MCP (Model Context Protocol) para obtener información en tiempo real, como el clima de ciudades.
📋 Requisitos Previos
- Python 3.11 o superior
- uv instalado
- Ollama instalado y ejecutándose
- Modelo Qwen 2.5:3b descargado en Ollama
- Conexión a internet
🔧 Instalación
1. Instalar uv
Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
Windows:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
2. Clonar o descargar el proyecto
git clone https://github.com/santimulet12/ollamaUsingMcpServer.git
cd ollamaUsingMcpServer
3. Instalar dependencias con uv
# uv automáticamente crea el entorno virtual e instala todo
uv sync
Eso es todo. No necesitas ejecutar pip install manualmente.
4. Configurar Ollama
Asegúrate de que Ollama esté instalado y ejecutándose. Si no lo tienes, instálalo desde ollama.ai.
Descarga el modelo requerido:
ollama pull qwen2.5:3b
Verifica que Ollama esté corriendo:
ollama list
5. Configurar la API
En el archivo API.py, modifica la línea 9 con la dirección IP correcta de tu servidor Ollama:
OLLAMA_API_URL = "http://IP_AQUI:11434/api/chat"
Si Ollama está en la misma máquina, usa:
OLLAMA_API_URL = "http://localhost:11434/api/chat"
🚀 Ejecución
Paso 1: Iniciar el Servidor MCP
uv run python MCPServer.py
Deberías ver:
🚀 Servidor MCP iniciado en http://localhost:8000/mcp
📡 Herramientas disponibles: obtener_clima
Paso 2: Iniciar la API Flask
En otra terminal (dejando el servidor MCP corriendo):
uv run python API.py
La API Flask se iniciará en http://localhost:5000
📡 Uso de la API
Endpoint de Chat
URL: POST http://localhost:5000/ask-ia
Body (JSON):
{
"prompt": "¿Cómo está el clima en Buenos Aires?",
"historial": []
}
Ejemplo con historial:
{
"prompt": "¿Y en Madrid?",
"historial": [
{"role": "user", "content": "¿Cómo está el clima en Buenos Aires?"},
{"role": "assistant", "content": "En Buenos Aires hace 22°C..."}
]
}
Respuesta:
{
"response": "En Buenos Aires actualmente hay 22°C con cielo despejado. La sensación térmica es de 21°C y hay un 65% de humedad."
}
Endpoint para verificar el estado de la API
URL: GET http://localhost:5000/health
Respuesta:
{
"status": "ok"
}
🛠️ Herramientas Disponibles
obtener_clima
Obtiene información meteorológica actual de cualquier ciudad del mundo.
Parámetros:
ciudad(string): Nombre de la ciudad (ej: "Buenos Aires", "Madrid", "New York")
Información retornada:
- Temperatura actual y sensación térmica
- Descripción del clima
- Humedad
- Velocidad del viento
- Presión atmosférica
- Visibilidad
- Índice UV
🧪 Ejemplos de Uso
Usando cURL:
curl -X POST http://localhost:5000/ask-ia \
-H "Content-Type: application/json" \
-d '{"prompt": "¿Qué tiempo hace en Mendoza?"}'
Usando Python:
import requests
response = requests.post(
"http://localhost:5000/ask-ia",
json={
"prompt": "¿Cómo está el clima en Londres?",
"historial": []
}
)
print(response.json()["response"])
🔧 Comandos útiles con uv
# Agregar una nueva dependencia
uv add nombre-paquete
# Agregar dependencia de desarrollo
uv add --dev nombre-paquete
# Ejecutar scripts
uv run python MCPServer.py
uv run python API.py
# Actualizar dependencias
uv lock --upgrade
# Ver dependencias instaladas
uv pip list
# Ver árbol de dependencias
uv pip tree
🐛 Solución de Problemas
El servidor MCP no inicia
- Verifica que el puerto 8000 no esté en uso
- Asegúrate de que todas las dependencias estén instaladas:
uv sync
La API Flask no se conecta a Ollama
- Verifica que Ollama esté corriendo:
ollama list - Confirma que la URL en
API.pysea correcta - Asegúrate de que el modelo
qwen2.5:3besté descargado
Error de conexión al servidor MCP
- Verifica que
MCPServer.pyesté corriendo conuv run python MCPServer.py - Confirma que esté accesible en
http://localhost:8000/mcp
El modelo no usa las herramientas correctamente
- El modelo debe responder en el formato exacto:
USE_TOOL:yARGS: - Si no funciona, considera ajustar el
SYS_PROMPTenAPI.py
Problemas con el entorno virtual
# Eliminar el entorno y reinstalar
rm -rf .venv uv.lock
uv sync
📦 Estructura del Proyecto
mcp-chat-system/
├── .venv/ # Entorno virtual (creado por uv)
├── API.py # API Flask principal
├── MCPServer.py # Servidor MCP con herramientas
├── Documentacion.md # Documentación técnica
├── README.md # Este archivo
├── pyproject.toml # Configuración del proyecto y dependencias
├── uv.lock # Lock file para reproducibilidad
└── .python-version # Versión de Python fijada
📝 Notas
- El servidor MCP debe estar corriendo antes de iniciar la API Flask
- El servicio de clima usa
wttr.in, que es gratuito pero puede tener límites de uso - Las respuestas están configuradas para ser concisas (3-4 oraciones máximo)
- Todo el sistema está configurado para responder en español
- uv gestiona automáticamente las dependencias y el entorno virtual
- No necesitas activar manualmente el entorno virtual, usa
uv run
🚀 Ventajas de usar uv
- ⚡ 10-100x más rápido que pip
- 🔒 Lock file automático para reproducibilidad
- 📦 Gestión unificada de dependencias y Python
- 🎯 Un solo archivo de configuración (pyproject.toml)
- 🔄 Sincronización perfecta entre entornos