Нет описания

Lukas Goldschmidt aa751be4bd Stabilize metals candle store 3 недель назад
src aa751be4bd Stabilize metals candle store 3 недель назад
.env.example fa5b473d82 Scaffold metals MCP server 1 месяц назад
.gitignore 5a63957184 gitignore 1 месяц назад
Dockerfile fa5b473d82 Scaffold metals MCP server 1 месяц назад
PROJECT.md aa751be4bd Stabilize metals candle store 3 недель назад
README.md aa751be4bd Stabilize metals candle store 3 недель назад
discover_swissquote_api.py fa5b473d82 Scaffold metals MCP server 1 месяц назад
docker-compose.yml aa751be4bd Stabilize metals candle store 3 недель назад
killserver.sh fa5b473d82 Scaffold metals MCP server 1 месяц назад
main.py fa5b473d82 Scaffold metals MCP server 1 месяц назад
metals-mcp_first_idea.md fa5b473d82 Scaffold metals MCP server 1 месяц назад
requirements.txt fa5b473d82 Scaffold metals MCP server 1 месяц назад
restart.sh fa5b473d82 Scaffold metals MCP server 1 месяц назад
run.sh fa5b473d82 Scaffold metals MCP server 1 месяц назад
swissquote_pairs.json fa5b473d82 Scaffold metals MCP server 1 месяц назад
test_metals.py aa751be4bd Stabilize metals candle store 3 недель назад
test_swissquote_api.py fa5b473d82 Scaffold metals MCP server 1 месяц назад
tests.sh fa5b473d82 Scaffold metals MCP server 1 месяц назад

README.md

Metals MCP Server

FastMCP-based metals market data server backed by a Swissquote poller and local candle store.

Transport

  • MCP SSE transport mounted at /mcp
  • SSE stream endpoint: /mcp/sse
  • message endpoint handled by FastMCP under /mcp/messages/
  • no legacy /rpc compatibility path

Runtime

source .venv/bin/activate
pip install -r requirements.txt
./run.sh

Default URL base: http://127.0.0.1:8515

Docker / Compose

docker compose up -d --build

The compose file persists data/ and logs/ into the project directory and keeps the candle DB bounded.

HTTP

  • GET / → health + tool list
  • GET /health → health + cache/store stats

Tools

  • get_price
  • get_ohlcv
  • get_last_candle
  • get_market_snapshot
  • get_indicator
  • get_top_movers
  • get_capabilities
  • get_regime

Notes

Done

  • Shared MCP surface mirrors crypto-mcp tool names, with get_last_candle kept as a small metals-specific convenience.
  • get_price fetches live Swissquote quotes for metals like XAU.
  • An internal background poller keeps the server self-sufficient.
  • 5m candles are clock-aligned and persisted in SQLite for XAU/USD, XAG/USD, XPT/USD, and XPD/USD by default.
  • get_market_snapshot and get_regime now provide the useful metals context in crypto-style naming.
  • Candle retention is bounded by METALS_CANDLE_RETENTION_DAYS (default 30), with periodic pruning to keep the DB bounded.

Planned

  • Keep refining get_indicator, get_market_snapshot, get_top_movers, and get_regime as more metals behavior becomes useful to Argus.
  • Add retention cleanup for older candles.
  • Expand the watched pair set only if it proves useful for market orientation.

Design

  • The public surface should mirror crypto-mcp where practical.
  • Local default port is 8515.
  • Under the hood, the server uses Swissquote polling plus a local candle store.
  • The repo now contains a working scaffold and the first live price path.

Verification

./tests.sh
./run.sh

Housekeeping

  • ./killserver.sh stops stale listeners on the configured port
  • ./restart.sh chains kill and run