🧠 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.