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
访问服务器

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 сервер.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选