Skip to content

v0.1.2 — argparse CLI + MCP_CBR_* env-rename + dependency MAJOR-lock

Choose a tag to compare

@atomnos atomnos released this 26 Apr 20:09

v0.1.2 — sync с эталоном atomno-mcp-fns-check 0.1.1

Sync-патч приводит CLI-обвязку, ограничения зависимостей и метаданные pyproject.toml
к общим конвенциям портфеля atomno-mcp-*.

⚠️ BREAKING CHANGES

  1. Console-script переименован: mcp-cbr-ratesatomno-mcp-cbr-rates.
    В конфигах Cursor / Claude Desktop / Cline нужно обновить command.

  2. Env-переменные теперь имеют префикс MCP_CBR_* (старые имена работают,
    но логируют DeprecationWarning один раз за процесс; удалятся в 0.2.0):

    Было (deprecated) Стало (canonical)
    CBR_LOG_LEVEL MCP_CBR_LOG_LEVEL
    CBR_HTTP_TIMEOUT MCP_CBR_HTTP_TIMEOUT
    CBR_CACHE_DAILY_TTL MCP_CBR_CACHE_DAILY_TTL
    CBR_CACHE_HISTORY_TTL MCP_CBR_CACHE_HISTORY_TTL

Установка

uvx atomno-mcp-cbr-rates       # рекомендуется (без установки)
pipx install atomno-mcp-cbr-rates
pip install atomno-mcp-cbr-rates

Конфиг для Cursor / Claude Desktop / Cline (обновлённый)

{
  "mcpServers": {
    "atomno-mcp-cbr-rates": {
      "command": "atomno-mcp-cbr-rates",
      "env": { "MCP_CBR_LOG_LEVEL": "INFO" }
    }
  }
}

Fixed

  • CLI: --help и --version больше не вешают процесс. До 0.1.2 команда
    mcp-cbr-rates --help запускала FastMCP по stdio и подвисала, ожидая stdin
    от MCP-клиента. Теперь main() использует argparse и завершается с exit-code 0
    без запуска сервера.
  • Loud-fail на невалидный MCP_CBR_LOG_LEVEL. Процесс выходит с exit-code 2
    и явным сообщением, без silent-INFO-fallback.
  • Рассинхрон версии: до 0.1.2 в __init__.__version__ стояло "0.1.0",
    а в pyproject.toml"0.1.1". Теперь оба 0.1.2.

Added

  • Новые CLI-флаги:
    • --version / -V — версия пакета;
    • --transport {stdio,http,sse,streamable-http} — выбор транспорта (default stdio);
    • --host, --port — для http/sse/streamable-http транспортов;
    • --log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL} — приоритет над env.
  • tests/test_cli.py — 25 тестов на CLI-обвязку и backward-compat env.
  • PEP 561 маркер py.typed — type-аннотации видны mypy / IDE.
  • Дополнительные classifiers: Natural Language :: Russian, Typing :: Typed,
    Intended Audience :: Financial and Insurance Industry, Operating System :: OS Independent,
    Topic :: Software Development :: Libraries :: Python Modules.

Changed

  • Development Status: 3 - Alpha4 - Beta — пакет уже опубликован
    на PyPI и Glama.

  • main(argv: list[str] | None = None) -> int — сигнатура изменена для
    тестируемости. Возвращает exit-code (0/2). Вызов из if __name__ == "__main__":
    обёрнут в raise SystemExit(main()).

  • Dependency MAJOR-lock — каждая зависимость теперь имеет верхнюю границу
    по SemVer:

    Было Стало
    mcp>=1.2.0 mcp>=1.2.0,<2.0.0
    httpx>=0.27.0 httpx>=0.27.0,<1.0.0
    pydantic>=2.6.0 pydantic>=2.6.0,<3.0.0
    defusedxml>=0.7.1 defusedxml>=0.7.1,<1.0.0

Migration guide (0.1.10.1.2)

  1. Cursor / Claude Desktop / Cline config: замените "command": "mcp-cbr-rates"
    на "command": "atomno-mcp-cbr-rates".
  2. Env-переменные: при возможности переименуйте CBR_*MCP_CBR_*.
    Старые работают, но логируют DeprecationWarning. Полное удаление — в 0.2.0.
  3. Через uvx (рекомендуется): uvx atomno-mcp-cbr-rates — без установки.

Качество

  • Тесты: 77 (52 существующих + 25 новых на CLI/env-compat). Все проходят.
  • Lint: ruff check clean (правила E F W I N UP B ASYNC).
  • Build: twine check PASSED.
  • Smoke-test в чистом venv: pip install dist/*.whl
    atomno-mcp-cbr-rates --version → OK; старого mcp-cbr-rates.exe нет.

Совместимость

  • MCP-API не менялся. Все 5 тулзов (get_rate, history_rates, key_rate,
    inflation, statistics) работают идентично 0.1.1.
  • ⚠️ CLI-команда переименована (см. BREAKING выше). Обновите конфиги MCP-клиентов.
  • Env-переменные backward-compat: старые имена CBR_* продолжают работать
    с deprecation-warning.

Ссылки

Полный диф

v0.1.1...v0.1.2