MCP Weather and Currency Assistant
Ассистент по финансам и погоде с MCP
Консольное приложение, объединяющее локальный сервер MCP с API Responses от OpenAI. Ассистент понимает запросы на естественном языке, обнаруживает инструменты, опубликованные сервером, и выполняет их для получения актуальных данных о валютах и погоде.
Проект интегрирует FastMCP, ExchangeRate-API и Open-Meteo. Также поддерживает цепочки вызовов: например, преобразует название города в координаты, а затем запрашивает текущую погоду или прогноз.
Функциональность
Конвертация сумм между валютами по кодам ISO 4217.
Запрос курсов обмена для базовой валюты.
Геокодирование городов.
Запрос текущей погоды и прогноза на 1–7 дней.
Автоматическое обнаружение инструментов MCP клиентом.
Интерактивный интерфейс терминала на русском языке.
Повторные попытки при временных ошибках вызова OpenAI и обработка сетевых ошибок.
Related MCP server: Weather MCP Server
Архитектура
Usuario
|
v
CLI (main_client.py)
|
v
Cliente OpenAI Responses <----> Servidor MCP local (FastMCP)
|
+--> ExchangeRate-API
+--> Open-MeteoСервер предоставляется через транспорт HTTP по адресу http://127.0.0.1:8000/mcp/ по умолчанию. Клиент подключается к этому URL, загружает пять доступных инструментов и передаёт их результаты модели для формирования окончательного ответа.
Инструменты MCP
Инструмент | Описание |
| Конвертирует сумму между двумя валютами по текущему курсу. |
| Возвращает курсы базовой валюты по отношению к выборке валют. |
| Получает координаты, страну и часовой пояс города. |
| Запрашивает температуру, ощущаемую температуру, влажность, ветер и текущее состояние погоды. |
| Возвращает температуры, вероятность осадков и состояние погоды на ближайшие дни. |
Требования
Python 3.10 или выше.
Ключ API OpenAI с доступом к API Responses.
Подключение к Интернету для обращения к OpenAI и внешним API.
Ключ ExchangeRate-API необязателен. Без него используется открытая конечная точка.
Установка
Клонируйте репозиторий и создайте виртуальное окружение:
git clone <URL_DEL_REPOSITORIO>
cd <NOMBRE_DEL_REPOSITORIO>
python -m venv .venvАктивируйте виртуальное окружение:
# Windows PowerShell
.venv\Scripts\Activate.ps1
# Windows (cmd)
.venv\Scripts\activate.bat
# macOS/Linux
source .venv/bin/activateУстановите зависимости:
python -m pip install -r requirements.txtНастройка
Скопируйте пример файла конфигурации и заполните учётные данные. Файл .env является локальным и не должен включаться в репозиторий:
Copy-Item .env.example .envВ macOS или Linux:
cp .env.example .envПолученный файл должен содержать следующие переменные:
OPENAI_API_KEY=tu_clave_de_openai
# Opcional. Si se deja vacío se usa el endpoint abierto de ExchangeRate-API.
API_KEY_EXCHANGE=
# Opcionales.
MCP_HOST=127.0.0.1
MCP_PORT=8000
OPENAI_MODEL=gpt-4o-miniOPENAI_API_KEY необходим для использования клиента. Open-Meteo не требует учётных данных. Приложение использует тайм-аут 10 секунд для внешних HTTP-вызовов.
Использование
Сервер и клиент запускаются в отдельных терминалах. Сначала запустите сервер:
python main_server.pyВ другом терминале с активированным виртуальным окружением запустите клиент:
python main_client.pyТестирование
Модульные тесты покрывают логику валют, прогноза погоды, кодов WMO и обработку ошибок без вызова OpenAI или внешних API:
python -m pip install -r requirements-dev.txt
python -m pytestПосле этого можно вводить запросы, например:
Convierte 100 USD a EUR
¿Cuál es el clima actual en Madrid?
Dame la previsión del tiempo para Nueva York durante 5 días
¿Qué coordenadas tiene Tokio?Доступные команды в CLI:
Команда | Действие |
| Показывает инструменты и примеры запросов. |
| Показывает коды распространённых валют. |
| Закрывает клиент. |
Структура проекта
.
├── .env.example # Plantilla de configuración local
├── .gitignore # Archivos excluidos del repositorio
├── client/
│ ├── cli_interface.py # Interfaz interactiva de terminal
│ └── openai_client.py # Orquestación OpenAI + MCP
├── config/
│ └── settings.py # Variables de entorno y endpoints
├── server/
│ ├── api_clients.py # Clientes HTTP para las APIs externas
│ ├── currency_tools.py # Herramientas de divisas
│ ├── geocoding_tools.py # Herramienta de geocodificación
│ ├── mcp_server.py # Servidor FastMCP y registro de herramientas
│ └── weather_tools.py # Herramientas meteorológicas
├── main_client.py # Punto de entrada del cliente
├── main_server.py # Punto de entrada del servidor
├── requirements.txt # Dependencias de Python
└── README.mdВнешние API
OpenAI Responses API: интерпретация запроса и выбор инструментов.
ExchangeRate-API: курсы обмена и конвертация.
Open-Meteo: геокодирование и метеорологические данные.
Результаты зависят от доступности, лимитов и условий использования этих сервисов. Использование OpenAI может повлечь затраты в зависимости от учётной записи и настроенной модели.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
MCP server for AI dialogue using various LLM models via AceDataCloud
An MCP server for weather information by @kulybaba
An MCP server for weather information by @kulybaba
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA server that integrates the MCP library with OpenAI's API, allowing users to interact with various tools, such as the weather tool, through natural language queries.MIT
- FlicenseNot gradedqualityDmaintenanceEnables users to get current weather conditions and forecasts for any city through OpenWeatherMap API integration. Designed as a sample MCP server for the Puch AI Hackathon with basic weather querying capabilities.-
- AlicenseNot gradedqualityDmaintenanceA MCP server for querying real-time weather information for any city worldwide using the free Open-Meteo API, supporting CLI and integration with AI clients like Claude and Cursor.17 npmMIT
- FlicenseNot gradedqualityDmaintenanceA proof-of-concept MCP server that provides weather information using the Open-Meteo API, with tools for greeting, getting weather by coordinates, and by location name.-