VPf08-MCP-Forex

VPf08-MCP-Forex

MCP server providing tools to list, search, and manage Forex currency pairs, along with a calculator and exchange rate lookup.

Category
Visit Server

README

Forex Pairs MCP + Telegram Bot + Ollama

Локальный справочный проект по валютным парам Forex:

  • MCP сервер (forex-pairs-mcp) — SQLite + HTTP API с MCP JSON Schema
  • Telegram бот — aiogram + Ollama qwen3:14b + вызов MCP tools по HTTP

⚠️ Учебный справочник. Не подключается к брокерам и не даёт инвестиционных рекомендаций.

Структура проекта

.
├── mcp_server/
│   ├── server.py          # FastAPI HTTP сервер
│   ├── db.py              # SQLite + 100 тестовых пар
│   ├── tools.py           # MCP инструменты + безопасный калькулятор
│   ├── requirements.txt
│   └── currency_pairs.db  # создаётся автоматически
├── telegram_bot/
│   ├── bot.py             # Telegram бот (aiogram 3)
│   ├── config.py          # Настройки из .env
│   ├── llm_client.py      # Ollama /api/chat + JSON parsing
│   ├── mcp_client.py      # HTTP клиент MCP сервера
│   └── requirements.txt
├── .env.example
├── README.md
└── scripts/
    └── verify.py          # Локальная самопроверка

Требования

  • Python 3.12+
  • Ollama с моделью qwen3:14b
  • Telegram Bot Token (@BotFather)

Установка

1. Виртуальное окружение (рекомендуется)

# Скопировать переменные окружения
copy .env.example .env
# Заполнить TELEGRAM_API_TOKEN в .env

# Создать .venv, установить зависимости и активировать
powershell -ExecutionPolicy Bypass -File setup.ps1

В Cursor / VS Code окружение активируется автоматически в новых терминалах (настроено в .vscode/settings.json → python.terminal.activateEnvironment).

Ручная активация в PowerShell:

.\.venv\Scripts\Activate.ps1

2. Установка без скрипта (альтернатива)

python -m venv .venv
.\.venv\Scripts\Activate.ps1
$env:PIP_NO_PROXY="*"
pip install -r requirements.txt

Windows / SOCKS proxy: если pip выдаёт Missing dependencies for SOCKS support, используйте $env:PIP_NO_PROXY="*" перед установкой.

4. Установить и запустить Ollama

# Установить Ollama: https://ollama.com/download
ollama pull qwen3:14b
ollama serve   # если не запущен автоматически

Запуск

Откройте два терминала:

Терминал 1 — MCP сервер

cd mcp_server
python server.py

Сервер будет доступен на http://localhost:8000

  • GET /health — проверка здоровья
  • GET /tools — список MCP инструментов (JSON Schema)
  • POST /tools/list_currency_pairs
  • POST /tools/find_currency_pair
  • POST /tools/add_currency_pair
  • POST /tools/calculate
  • POST /call/{tool_name} — универсальный вызов

Терминал 2 — Telegram бот

cd telegram_bot
python bot.py

MCP инструменты

Инструмент Описание
list_currency_pairs Список пар, опционально category: major/minor/exotic
find_pairs_by_category Поиск по категории (мажорные / minor / exotic) — из F_prompt.md
find_currency_pair Поиск по symbol, base или quote (EUR/USD, EURUSD, JPY)
find_currency_pair_by_id Поиск одной пары по числовому id
add_currency_pair Добавить новую пару
calculate Безопасный калькулятор (AST, без eval)
get_pairs_by_popularity Топ-N / фильтр по уровню востребованности (very_high → low)
get_exchange_rate Справочный курс пары (open.er-api.com, без API-ключа)

Промпт бота загружается из F_prompt.md в корне проекта.

Логирование

Логи пишутся в консоль и в файлы logs/forex-pairs-mcp.log, logs/forex-bot.log.

Переменная Описание По умолчанию
LOG_LEVEL DEBUG, INFO, WARNING, ERROR INFO
LOG_DIR Каталог логов logs
LOG_TO_FILE Писать в файл (true/false) true

Для подробной отладки в .env:

LOG_LEVEL=DEBUG

Примеры запросов боту

  • «покажи все валютные пары»
  • «покажи только major пары»
  • «найди EUR/USD»
  • «найди пары с JPY»
  • «добавь валютную пару USD/TRY exotic доллар к турецкой лире»
  • «посчитай 25 * (7 + 3)»
  • «покажи top 10 валютных пар по востребованности»
  • «курс EUR/USD»

Архитектура

sequenceDiagram
    participant User as Telegram User
    participant Bot as Telegram Bot
    participant Ollama as Ollama qwen3:14b
    participant MCP as forex-pairs-mcp

    User->>Bot: Сообщение
    Bot->>Ollama: /api/chat (JSON decision)
    Ollama-->>Bot: need_tool + tool_name + arguments
    alt need_tool=true
        Bot->>MCP: POST /call/{tool}
        MCP-->>Bot: tool result
        Bot->>Ollama: format final answer
        Ollama-->>Bot: текст ответа
    end
    Bot-->>User: Финальный ответ

Локальная проверка

python scripts/verify.py

Переменные окружения

Переменная Описание По умолчанию
TELEGRAM_API_TOKEN Токен Telegram бота — (обязательно)
TELEGRAM_PROXY Прокси для Telegram API — (опционально)
OLLAMA_BASE_URL URL Ollama API http://localhost:11434
OLLAMA_MODEL Модель Ollama qwen3:14b
MCP_SERVER_URL URL MCP сервера http://localhost:8000
HTTP_TIMEOUT Таймаут HTTP (сек) 60
OLLAMA_TIMEOUT Таймаут Ollama (сек) 180
RATES_API_URL API справочных курсов (MCP) https://open.er-api.com/v6/latest

Публикация на GitHub

# Из корня проекта (после git init и первого коммита)
git branch -M main
gh repo create VPf08-MCP-Forex --public --source=. --remote=origin --push

Не коммитится (см. .gitignore): .env, .venv/, logs/, *.db.

После клонирования на другом ПК:

copy .env.example .env
powershell -ExecutionPolicy Bypass -File setup.ps1

Бот не отвечает — что проверить

  1. Бот запущен? Нужны два терминала: MCP сервер + python bot.py
  2. Доступ к Telegram API? Бот должен подключаться к api.telegram.org:443
    curl https://api.telegram.org/
    
    Если таймаут — включите VPN или укажите прокси в .env:
    TELEGRAM_PROXY=socks5://127.0.0.1:1080
    
  3. Первый ответ долгий? Модель qwen3:14b думает 30–120 сек — подождите.
  4. Команда /health в боте — проверит MCP сервер.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured