AGENTS.md 2.3 KB

AGENTS.md for metals-mcp

Purpose

This file provides guidance for agents working on the metals-mcp server.

Key Documentation

  • README.md: Overview, runtime instructions, tool list, and housekeeping scripts.
  • PROJECT.md: Purpose, current interface, tool set, candle model, done/planned items, and notes.
  • metals-mcp_first_idea.md: Detailed design principles and system architecture.

Runtime

  1. Source the virtual environment: source .venv/bin/activate
  2. Install dependencies: pip install -r requirements.txt
  3. Run the server: ./run.sh (or docker compose up -d --build for Docker)
  4. Health check: GET http://127.0.0.1:8515/health
  5. Stop server: ./killserver.sh
  6. Restart: ./restart.sh

Source Structure

  • src/metals_mcp/: Main package
    • server_fastmcp.py: FastAPI/FastMCP entry point and tool definitions
    • mcp_tools.py: Implementation of MCP tools (get_price, get_ohlcv, etc.)
    • poller.py: Background candle poller
    • storage.py: SQLite candle storage and initialization
    • swissquote.py: Swissquote API client
    • config.py: Configuration (DB_PATH, etc.)
  • data/: SQLite candle database
  • logs/: Server logs and PID file
  • scripts/: Helper scripts (discover_swissquote_api.py, etc.)

Important Conventions

  • Always use the local .venv before claiming missing dependencies.
  • The server uses clock-aligned 5m candles as the base market view.
  • Default instruments: XAU/USD, XAG/USD, XPT/USD, XPD/USD, EUR/USD, USD/JPY (configurable via METALS_PAIRS environment variable)
  • Default port: 8515 (configurable via METALS_PORT environment variable)
  • Candle retention: Controlled by METALS_CANDLE_RETENTION_DAYS (default 30)
  • MCP tools mirror crypto-mcp where practical, with get_last_candle as a metals-specific convenience, plus get_snapshot for multi-timeframe analysis

Verification

  • Run tests: ./tests.sh
  • Manual verification: ./run.sh and check endpoints

Notes for Agents

  • When modifying tools, ensure changes align with the shared MCP surface.
  • Keep the transport small and predictable (SSE mount at /mcp).
  • Store raw ticks only if useful; the system can remain simple with 5m candles as base.
  • The goal is market orientation and regime reading, not execution.
  • Preserve the deterministic design: consistent data over theoretically perfect data.