MCP memory system for AI trading agents. Store, recall, and learn from past trades.
Project description
TradeMemory Protocol
A Mnemox Project — MCP server that gives AI trading agents persistent memory.
AI trading agents are stateless by default. Every session starts from zero. TradeMemory is an MCP (Model Context Protocol) server that stores trade decisions, analyzes patterns via a reflection engine, and persists learned insights across sessions.
What It Does
- Trade journaling — Records every decision with reasoning, confidence, market context, and outcome
- Reflection engine — Analyzes trade history to find session/strategy/confidence patterns (rule-based, with optional LLM)
- State persistence — Agent loads its learned patterns and risk constraints when starting a new session
- 3-layer memory — L1 (active trades), L2 (discovered patterns), L3 (strategy adjustments in SQLite)
- Strategy adjustments (L3) — Rule-based tuning from L2 patterns: disable losing strategies, prefer winners, adjust lot sizes, restrict directions
What it does NOT do yet: multi-agent learning, cryptocurrency exchange support. These are planned for future phases.
Quick Start
As MCP Server (Claude Desktop / Claude Code / Cursor)
uvx tradememory-protocol
Add to your MCP client config:
{
"mcpServers": {
"tradememory": {
"command": "uvx",
"args": ["tradememory-protocol"]
}
}
}
From Source
git clone https://github.com/mnemox-ai/tradememory-protocol.git
cd tradememory-protocol
pip install -e .
Run the Demo
No API key needed. Runs 30 simulated XAUUSD trades through the full pipeline:
python demo.py
Output shows: trade recording (L1) → pattern discovery (L2) → strategy adjustments (L3) → agent reloading state with memory.
Demo output preview (click to expand)
┌───────────────────────────────────────────────┐
│ │
│ TradeMemory Protocol │
│ Persistent memory for AI trading agents │
│ │
└───────────────────────────────────────────────┘
── Step 1: L1 — Recording trades to TradeJournal ──
# │ Result │ Session │ Strategy │ P&L │ R
1 │ LOSS │ Asia │ Pullback │ $-15.00 │ -1.0
2 │ WIN │ London │ VolBreakout │ $+42.00 │ +2.1
3 │ WIN │ London │ VolBreakout │ $+28.50 │ +1.5
...
30 │ WIN │ London │ Pullback │ $+28.00 │ +1.4
Total: 30 trades | Winners: 19 | Win rate: 63% | Net P&L: $+499.50
── Step 2: L2 — Reflection Engine discovers patterns ──
Pattern │ Win Rate │ Record │ Net P&L │ Assessment
London session │ 100% │ 14W / 0L │ $+608.50 │ HIGH EDGE
Asian session │ 10% │ 1W / 9L │ $-156.00 │ WEAK
VolBreakout strategy│ 73% │ 11W / 4L │ $+429.50 │ HIGH EDGE
Confidence correlation:
High (>0.75): 100% win rate
Low (<0.55): 0% win rate
── Step 3: L3 — Strategy adjustments generated ──
Parameter │ Old │ New │ Reason
london_max_lot │ 0.05 │ 0.08 │ London WR 100% — earned more room
asian_max_lot │ 0.05 │ 0.025│ Asian WR 10% — reduce exposure
min_confidence_threshold │ 0.40 │ 0.55 │ Trades below 0.55 have 0% WR
All demo data is simulated. See Before/After Comparison for detailed breakdown.
Start the Server
python -m src.tradememory.server
# Runs on http://localhost:8000
Docker
docker compose up -d
# Or manually:
docker build -t tradememory .
docker run -p 8000:8000 -e ANTHROPIC_API_KEY=your-key tradememory
Tutorials
- English Tutorial — Step-by-step from install to using memory in trades
- 中文教學 — 完整教學指南
Architecture
┌─────────────────────────────────────────────────────────────┐
│ AI Trading Agent (Claude / GPT / Custom) │
│ Calls TradeMemory MCP tools: │
│ - trade.record_decision(reasoning, confidence, ...) │
│ - trade.record_outcome(pnl, exit_reasoning, ...) │
│ - state.load() → get learned patterns │
└─────────────────────────────┬───────────────────────────────┘
│ MCP Protocol
┌─────────────────────────────▼───────────────────────────────┐
│ TradeMemory Protocol Server │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ TradeJournal │→ │ReflectionEng │→ │ StateManager │ │
│ │ Records all │ │ Analyzes │ │ Persists │ │
│ │ decisions & │ │ patterns, │ │ learned │ │
│ │ outcomes │ │ generates │ │ insights │ │
│ │ │ │ insights │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ 3-Layer Memory: │
│ L1 (Hot): Active trades, current session context │
│ L2 (Warm): Curated insights from reflection engine │
│ L3 (Cold): Full trade history (SQLite) │
└──────────────────────────────────────────────────────────────┘
Data Flow
- Agent records trade decision (symbol, direction, strategy, confidence, reasoning)
- Trade closes → agent records outcome (P&L, exit reasoning)
- Reflection engine runs (daily) → discovers patterns → stores in L2
- Next session → agent loads state with updated patterns and constraints
MCP Tools (v0.2.0)
Core Memory Tools (MCP — via uvx tradememory-protocol)
store_trade_memory— Store a trade decision with full context into memoryrecall_similar_trades— Find past trades with similar market contextget_strategy_performance— Aggregate performance stats per strategyget_trade_reflection— Deep-dive into a specific trade's reasoning and lessons
REST API (FastAPI — via tradememory-api)
POST /trade/record_decision— Log entry decision with full contextPOST /trade/record_outcome— Log trade result (P&L, exit reason)POST /trade/query_history— Search past trades by strategy/date/resultPOST /reflect/run_daily— Trigger daily summary (rule-based, or LLM with API key)POST /reflect/run_weekly— Weekly deep reflectionPOST /reflect/run_monthly— Monthly reflectionPOST /risk/get_constraints— Dynamic risk parametersPOST /risk/check_trade— Validate trade against constraintsPOST /mt5/sync— Sync trades from MetaTrader 5POST /reflect/generate_adjustments— Generate L3 strategy adjustments from L2 patternsGET /adjustments/query— Query strategy adjustments by status/typePOST /adjustments/update_status— Update adjustment lifecycle (proposed→approved→applied)
Full API reference: docs/API.md
Project Status
What Works (Phase 1)
- Core MCP server + TradeJournal
- SQLite storage + Pydantic data models
- MT5 connector (auto-sync trades from MetaTrader 5)
- Daily reflection engine (rule-based + optional LLM)
- State persistence (cross-session memory)
- Streamlit dashboard
- 181 unit tests passing
- Interactive demo (
demo.py) - Weekly/monthly reflection cycles
- Adaptive risk algorithms
Planned (Phase 2 — Q2 2026)
- Multi-strategy portfolio support
- Agent-to-agent learning
- Public beta
Future (Phase 3 — Q3 2026)
- Cryptocurrency exchange support (Binance/Bybit)
- Stock market support (Alpaca/Interactive Brokers)
- SaaS hosted version
Technical Stack
- MCP Server: FastMCP 3.x (stdio transport)
- REST API: FastAPI + uvicorn
- Storage: SQLite (L3), JSON (L2)
- Reflection: Rule-based pattern analysis, optional Claude API for deeper insights
- Broker Integration: MT5 Python API (Phase 1)
- Dashboard: Streamlit + Plotly
- Testing: pytest (181 tests)
Documentation
- Tutorial (English)
- 教學 (中文)
- Before/After Comparison — Simulated impact data
- Quick Start Guide
- Architecture Overview
- API Reference
- Data Schema
- Reflection Report Format
- MT5 Setup Guide
- Daily Reflection Setup
Connect to MT5 (Optional)
Sync live trades from MetaTrader 5 into TradeMemory automatically.
Prerequisites
- MetaTrader 5 running with your broker account
- Python 3.12 (system Python 3.13+ is not supported by the MT5 package)
- Enable API access in MT5:
Tools → Options → Expert Advisors → Allow Algo Trading- Also set
Api=1incommon.iniunder[Experts]section
- Also set
Quick Start
# 1. Install dependencies
pip install MetaTrader5 python-dotenv requests fastapi uvicorn pydantic
# 2. Configure .env
cp .env.example .env
# Edit .env with your MT5 credentials
# 3. Start both services
scripts/start_services.bat
Auto-Start on Login (Windows)
# Run as Administrator:
scripts\install_autostart.bat
This registers a Windows Task Scheduler task that starts the tradememory server and mt5_sync.py 30 seconds after login.
scripts/
├── start_services.bat # Start tradememory server + mt5_sync.py
├── stop_services.bat # Stop all services
├── install_autostart.bat # Register auto-start task (run as admin)
└── TradeMemory_AutoStart.xml # Task Scheduler config
Manual Start
# Terminal 1: Start API server
python -c "import sys; sys.path.insert(0, 'src'); from tradememory.server import main; main()"
# Runs on http://localhost:8000
# Terminal 2: Start MT5 sync (scans every 60s)
python mt5_sync.py
Daily Reflection
# Windows: Import start_daily_reflection.bat into Task Scheduler (23:55 daily)
# Linux/Mac: 55 23 * * * /path/to/daily_reflection.sh
See MT5 Setup Guide for detailed configuration.
Contributing
See CONTRIBUTING.md for guidelines.
- Star the repo to follow progress
- Report bugs via GitHub Issues
- Submit PRs for bug fixes or new features
- Join the discussion in Discussions
License
MIT — see LICENSE.
Disclaimer
This software is for educational and research purposes only. It does not constitute financial advice. Trading involves substantial risk of loss. You are solely responsible for your trading decisions. The authors accept no liability for losses incurred through use of this software.
Contact
Built by Mnemox
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tradememory_protocol-0.3.0.tar.gz.
File metadata
- Download URL: tradememory_protocol-0.3.0.tar.gz
- Upload date:
- Size: 70.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a14ca7fae455b28570dd041f125507b761e8aa92a32b60c9eaa12d3481c0ace
|
|
| MD5 |
711d324c54ba19ce73373d85f49a53c4
|
|
| BLAKE2b-256 |
72bba8593b68f71f528cf773475d19e415ddeaf6cd26375f5227798a162f7ad6
|
Provenance
The following attestation bundles were made for tradememory_protocol-0.3.0.tar.gz:
Publisher:
publish.yml on mnemox-ai/tradememory-protocol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tradememory_protocol-0.3.0.tar.gz -
Subject digest:
4a14ca7fae455b28570dd041f125507b761e8aa92a32b60c9eaa12d3481c0ace - Sigstore transparency entry: 1006282196
- Sigstore integration time:
-
Permalink:
mnemox-ai/tradememory-protocol@0376d1c7fb42399a197306def7fd62df0712ab1b -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/mnemox-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0376d1c7fb42399a197306def7fd62df0712ab1b -
Trigger Event:
release
-
Statement type:
File details
Details for the file tradememory_protocol-0.3.0-py3-none-any.whl.
File metadata
- Download URL: tradememory_protocol-0.3.0-py3-none-any.whl
- Upload date:
- Size: 47.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ae934204efadb0b00a87c13704c3a1c13526de2164020b9cb65d374be55eeb7
|
|
| MD5 |
8e5476d7aa4833493caaaacea8258fba
|
|
| BLAKE2b-256 |
ce8b395a5db92ddd59743403075097ce8cfd020c1358f56e2c9098bf5776c07b
|
Provenance
The following attestation bundles were made for tradememory_protocol-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on mnemox-ai/tradememory-protocol
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tradememory_protocol-0.3.0-py3-none-any.whl -
Subject digest:
6ae934204efadb0b00a87c13704c3a1c13526de2164020b9cb65d374be55eeb7 - Sigstore transparency entry: 1006282201
- Sigstore integration time:
-
Permalink:
mnemox-ai/tradememory-protocol@0376d1c7fb42399a197306def7fd62df0712ab1b -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/mnemox-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0376d1c7fb42399a197306def7fd62df0712ab1b -
Trigger Event:
release
-
Statement type: