🧠 Exemplo de Chatbot Interativo com MCP + OpenWeather

🧠 Exemplo de Chatbot Interativo com MCP + OpenWeather

Chatbot interativo em Python que utiliza o Model Context Protocol (MCP) com a API do tempo da OpenWeatherMap, mantendo contexto de conversa e preferências do usuário.

Chatbot Interativo com MCP + OpenWeather

Requisitos:

Python 3.x

requests (pip install requests)

Uma chave de API da OpenWeatherMap


Arquitetura Simples:

O chatbot roda em loop.

O usuário faz perguntas ("Como está o tempo?", "E amanhã?").

O contexto do usuário (localização, linguagem, histórico) é usado.

O MCP armazena preferências e histórico de perguntas/respostas.


Código do Chatbot

import requests

# Chave da OpenWeather (crie uma conta gratuita em https://openweathermap.org)
API_KEY = "SUA_CHAVE_AQUI"  # Substitua aqui

# Protocolo de contexto (MCP)
model_context_protocol = {
    "user_id": "user_001",
    "session_id": "session_xyz",
    "context": {
        "location": {
            "city": "São Paulo",
            "country": "BR"
        },
        "preferences": {
            "units": "metric",      # "imperial" para Fahrenheit
            "language": "pt"        # "en", "es", etc.
        },
        "history": []
    }
}

def get_weather(city, units, lang):
    url = "https://api.openweathermap.org/data/2.5/weather"
    params = {
        "q": city,
        "appid": API_KEY,
        "units": units,
        "lang": lang
    }

    response = requests.get(url, params=params)
    if response.status_code == 200:
        data = response.json()
        desc = data["weather"][0]["description"]
        temp = data["main"]["temp"]
        return f"O clima em {city} está {desc}, com temperatura de {temp}°C."
    else:
        return f"Não consegui acessar a previsão do tempo. Código: {response.status_code}"

def chatbot():
    print("🌤️ Bem-vindo ao ChatClima!")
    print("Digite 'sair' para encerrar a conversa.\n")

    while True:
        user_input = input("Você: ")

        if user_input.lower() == "sair":
            print("👋 Até logo!")
            break

        model_context_protocol["current_input"] = user_input

        # Aqui você pode expandir com mais comandos como mudar cidade, etc.
        if "tempo" in user_input.lower():
            city = model_context_protocol["context"]["location"]["city"]
            units = model_context_protocol["context"]["preferences"]["units"]
            lang = model_context_protocol["context"]["preferences"]["language"]

            response = get_weather(city, units, lang)

        else:
            response = "Desculpe, só sei responder sobre o clima por enquanto!"

        # Salva no histórico
        model_context_protocol["context"]["history"].append({
            "input": user_input,
            "response": response
        })

        print(f"🤖 Bot: {response}")

# Rodar o chatbot
chatbot()

Como isso usa MCP:

model_context_protocol mantém:

Sessão e ID do usuário.

Preferências (unidades de temperatura, idioma).

Histórico de interações.

Localização padrão.

Isso permite que o sistema personalize as respostas e evolua, por exemplo:

Salvar histórico para melhorar respostas futuras.

Adicionar comandos: "quero mudar para Recife", "mude para Fahrenheit", etc.


Possíveis Melhorias:

Suporte a múltiplas cidades.

Armazenar o MCP em arquivo JSON (persistência).

Integração com outras APIs (ex: notícias, piadas, etc.).

Interface com voz ou web.