Commit Graph
100 Commits
Author SHA1 Message Date
Devid HW e954883189 chore: simplify docs for LLM automation, remove platform-specific install steps
- Rewrite README.md to focus on LLM-driven install setup
- Simplify QUICKSTART.md to minimal LLM instruction guide
- Rewrite CONFIG.md to remove platform-specific path examples
- Delete platform-specific IDE docs (CLAUDE.md, CURSOR.md, VSCODE.md, WINDSURF.md)
- Simplify REMOTE_AGENTS.md to remove Wine install details
- Clean up TROUBLESHOOTING.md to remove platform install sections
- Ignore .vscode/ and .codegraph/ directories
- Untrack server.json (should remain tracked - already restored)
2026-06-25 14:49:30 +07:00
Devid HW 50025968ff feat: add update tool definitions 2026-05-17 05:44:31 +07:00
Devid HWandClaude Sonnet 4.6 3ad67d4c57 docs: fix inaccuracies found during documentation accuracy review
- CHANGELOG: inactivity_kill_secs default is disabled (None), not 120
- TROUBLESHOOTING: clarify inactivity_kill_secs is opt-in (must be
  passed explicitly); correct "default 120" claim
- MCP_TOOLS: inactivity_kill_secs is disabled by default; add note
  that Wine/macOS may not exit naturally even with ShutdownTerminal=1
- handlers/backtest.rs: remove stale comment claiming inactivity
  watchdog is "intentionally skipped when shutdown=true" — replaced
  with accurate description of the new 30s HTML-wait + kill behavior

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 09:14:44 +07:00
Devid HWandClaude Sonnet 4.6 4c34ae236c docs: update CHANGELOG, TROUBLESHOOTING, MCP_TOOLS for v1.32.4
- CHANGELOG: add v1.32.4 entry with all fixes and verification results
- TROUBLESHOOTING: add Wine/macOS HTML report section (ShutdownTerminal=1
  does not exit terminal64.exe; inactivity kill + 30s HTML wait workaround)
- TROUBLESHOOTING: add list_deals 0 results section (binary restart required)
- MCP_TOOLS: add shutdown and inactivity_kill_secs params to launch_backtest
  schema (were implemented but undocumented)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 09:11:37 +07:00
Devid HWandClaude Sonnet 4.6 ecf5606b7a fix: HTML report extraction and backtest pipeline reliability
- fix: inactivity watchdog now waits 30s for HTML report then kills
  terminal64.exe unconditionally — ShutdownTerminal=1 does not cause
  MT5 to exit on Wine/macOS; relying on natural exit caused all runs
  to fall back to journal extraction
- fix: tester agent log deduplication — each deal is written twice in
  the log; use HashSet to skip already-seen deal numbers
- fix: position tracker for entry direction inference — infer "in"/"out"
  from per-symbol signed lot accumulation instead of guessing
- fix: is_closed_trade() no longer gates on profit!=0.0 — journal deals
  have profit=0.0 legitimately; the old gate hid all 140 deals from
  list_deals
- fix: log file selection priority — prefer Agent-127.0.0.1 over
  Agent-0.0.0.0 (startup-only log), tiebreak by file size
- feat: launch_backtest default shutdown=true; inactivity_kill_secs
  default 120s exposed as tool parameter
- feat: report DB stores deals in SQLite; analytics resolve by
  report_id / report_dir / latest

Verified: 1-month DPS21/XAUUSD.cent/M5 backtest produces full HTML
report with all metrics (win_rate=70%, profit_factor=0.77, sharpe=-3.61,
max_dd=6.93%) and all 17 analytics tools returning real data.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 08:53:17 +07:00
DevidandGitHub 6bfb330b5d Update funding sources in FUNDING.yml 2026-04-23 01:44:31 +07:00
DevidandGitHub 52a3d44b99 Add funding options for GitHub and PayPal
Updated funding options to include GitHub sponsor and custom PayPal link.
2026-04-23 01:42:55 +07:00
DevidandGitHub caabc2c03b Change Dependabot update interval to monthly 2026-04-23 01:39:27 +07:00
Devid HWandClaude Sonnet 4.6 62c1ca773e ci: publish to crates.io before GitHub release
Add cargo-publish job that runs in parallel with binary builds.
The release job now depends on [build-macos, build-linux, cargo-publish]
so the crate is always published to crates.io before the GitHub release
and binaries are attached.

Requires CARGO_REGISTRY_TOKEN secret in repo settings.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:30:23 +07:00
Devid HWandClaude Sonnet 4.6 12fba8ad4b bump version to 1.32.3
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:26:08 +07:00
Devid HWandClaude Sonnet 4.6 b6171d0c56 fix: INI newline injection in backtest config generation
Add ini_safe() helper that strips CR/LF from user-supplied string params
before they are written into terminal.ini and backtest_config.ini.
Applies to: expert path, symbol, timeframe, set_file — any value that
could carry an embedded newline and inject extra INI directives.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:24:59 +07:00
Devid HW 05214ff34b revert version to 1.32.1 2026-04-23 01:15:27 +07:00
Devid HW 147da213d6 bump version to 1.32.2 for crates.io republication 2026-04-23 01:11:14 +07:00
Devid HWandClaude Sonnet 4.6 804c1f8808 fix: security review fixes — SQL injection, panic, and race condition
database.rs:
- search_by_tags: replace string-interpolated LIKE with parameterized ?N bindings
- search_by_notes: replace format!() SQL with prepared statement + ?1/?2 params
- search_by_set_file: same — use ?1 for pattern and ?2 for limit

backtest.rs (extract_and_store / monitor_backtest_completion):
- extract_and_store now returns bool — callers only delete report file if true
- guard both success paths with conditional delete + warning on failure
- replace .parent().unwrap() panic with explicit match + error log + graceful return

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:09:46 +07:00
Devid HW f8b6a11bb8 update Cargo.lock for version 1.32.1 2026-04-23 01:06:08 +07:00
Devid HW e82bb5466b bump version to 1.32.1 for crates.io republication
Added package.metadata section with maintenance status.
2026-04-23 01:06:08 +07:00
Devid HWandClaude Sonnet 4.6 50ea45f8cd fix: suppress all compiler warnings
- mcp_server.rs: #[allow(dead_code)] on NotificationCallback type alias and get_notification_sender method
- handlers/mod.rs: #[allow(dead_code)] on past_complete_month helper
- Cargo.toml: move maintenance key into [package.metadata] (was invalid at package level)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:06:08 +07:00
Devid HWandClaude Sonnet 4.6 4bc5ca22e9 fix: remove stale deals.csv references, add extract+store to launch_backtest
- FilePaths struct: remove deals_csv/deals_json fields (deals go to DB only)
- save_metadata: stop writing stale CSV/JSON paths to pipeline_metadata.json
- get_backtest_status: remove deals.csv artifact check (was unused in logic)
- get_backtest_crash_info: check DB deal count and metrics.json instead of deals.csv
- export_report: remove unused _deals_path variable
- launch_backtest: monitor_backtest_completion now calls extract_and_store when
  report found — extracts metrics+deals, registers report in DB, deletes htm file

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:06:08 +07:00
Devid HWandClaude Sonnet 4.6 01514623c9 release: v1.32.0
Deals-in-DB architecture: per-deal data now stored in SQLite instead of
deals.csv/deals.json files.

- storage: add `deals` table with report_id FK; insert_deals/get_deals/get_by_report_dir methods
- extract: stop writing deals.csv and deals.json; only metrics.json written to disk
- pipeline: call db.insert_deals() after extraction; HTML report still deleted after parse
- analytics: all 19 tools now load deals from DB (report_id > report_dir > latest)
- analytics: resolve_report() helper replaces load_report_data/read_deals_from_csv
- analytics: calling any analytics tool with no args uses the latest report automatically
- tools: add export_deals_csv for on-demand CSV generation from DB
- tools: add get_by_report_dir for backward-compat lookup by filesystem path

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:54:27 +07:00
Devid HWandClaude Sonnet 4.6 bce0323469 docs: update README and MCP_TOOLS for deals-in-DB architecture
- README: update deal analytics count (19 dimensions, DB-backed)
- MCP_TOOLS: remove deals.csv/deals_json from backtest output schema
- MCP_TOOLS: add export_deals_csv tool documentation
- MCP_TOOLS: update analytics tools to show report_id/report_dir/latest pattern
- MCP_TOOLS: fix get_backtest_crash_info description

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 00:53:51 +07:00
Devid HW ccc9e7e4d8 Move test_mcp.py to tests directory 2026-04-22 12:26:37 +07:00
Devid HW e1adcad45c Add 10 new debugging and diagnostic tools for Wine and MT5 2026-04-22 12:24:43 +07:00
Devid HW b97011d5b6 Update documentation for new debugging and diagnostic tools 2026-04-22 12:24:12 +07:00
Devid HW 41344b14b8 docs: add all missing 48 tools to MCP_TOOLS.md
Added documentation for:
- System tools (4): list_symbols, check_update, update, healthcheck
- Experts tools (3): list_experts, list_indicators, list_scripts
- Search & Discovery (5): search_experts, search_indicators, search_scripts, copy_indicator_to_project, copy_script_to_project
- Debugging/Diagnostics (9): diagnose_wine, get_mt5_logs, search_mt5_errors, check_mt5_process, kill_mt5_process, check_system_resources, validate_mt5_config, get_wine_prefix_info, get_backtest_crash_info
- Reports query (10): get_latest_report, search_reports, get_report_by_id, get_reports_summary, get_best_reports, search_reports_by_tags, search_reports_by_date_range, search_reports_by_notes, get_reports_by_set_file, get_comparable_reports
- Granular analytics (8): analyze_monthly_pnl, analyze_drawdown_events, analyze_top_losses, analyze_loss_sequences, analyze_position_pairs, analyze_direction_bias, analyze_streaks, analyze_concurrent_peak
- Deal-level analytics (10): list_deals, search_deals_by_comment, search_deals_by_magic, analyze_profit_distribution, analyze_time_performance, analyze_hold_time_distribution, analyze_layer_performance, analyze_volume_vs_profit, analyze_costs, analyze_efficiency

MCP_TOOLS.md now documents all 89 tools with full input/output schemas.
2026-04-22 08:51:26 +07:00
Devid HW 436566e019 docs: add missing tools to README.md
- Added list_symbols to Core workflow
- Added list_jobs to Optimization section
- Added promote_to_baseline to Reports section
- Added read_set_file and write_set_file to .set files section
- Added diff_set_files to .set analysis section
- Added check_update and update to Debugging section
- Added get_backtest_history to History & Comparison section

Brings documented tools from 87 to 89 (matching actual count)
2026-04-22 08:47:37 +07:00
Devid HW 74c3fdb87e docs: fix binary paths and tarball names across all documentation
Updated files:
- README.md: Fix tarball filename mt5-quant -> mcp-mt5-quant
- QUICKSTART.md: Fix tarball names and all binary paths
- WINDSURF.md: Fix tarball names, binary paths, and install script paths
- CURSOR.md: Fix tarball names and all binary path references
- VSCODE.md: Fix tarball names and all binary path references

All paths now correctly point to:
- Prebuilt: /path/to/mt5-quant/mcp-server/bin/mt5-quant
- Dev build: /path/to/mt5-quant/target/release/mt5-quant
2026-04-22 08:45:06 +07:00
Devid HW 55e0822051 docs: fix prebuilt binary path in CLAUDE.md
- Correct path: /mcp-server/bin/mt5-quant (not project root)
- Verified by downloading and extracting actual release tarball
- Updated both Full Example and Environment Variables sections
2026-04-22 08:42:26 +07:00
Devid HW 5366b45c36 docs: fix incorrect binary paths in CLAUDE.md
- Changed /target/release/mt5-quant to /mt5-quant for prebuilt binary path
- Added path notes explaining prebuilt vs dev build locations
- Fixed both Full Example and Environment Variables sections
2026-04-22 08:40:36 +07:00
Devid HW 96ba882a95 docs: simplify ARCHITECTURE.md and remove Python legacy references
- Condense Design Philosophy to Design Principles
- Remove Legacy Python analytics/ section from component map
- Remove Python CLI entry points (mt5-analyze-* commands)
- Update analyze.py reference to analyze.rs
- Simplify Claude Code Integration section
- Remove outdated hook mechanism documentation

File reduced from 459 to ~410 lines
2026-04-22 08:38:25 +07:00
Devid HW b9729b7121 docs: fix tool count inconsistencies across documentation
- README: 87 → 89 tools (tagline and docs table)
- QUICKSTART.md: 43 → 89 tools
- ARCHITECTURE.md: 43 → 89 tools

Verified actual count: 89 tools via grep of definitions/mod.rs
2026-04-22 08:35:19 +07:00
Devid HW e7d2ec5a47 docs: clarify optimization differences
Others can run optimization via terminal but lack:
- Background execution with polling
- Results parsing into structured data
- Automatic .set file generation
- Optimization history and search
2026-04-22 08:30:18 +07:00
Devid HW 7620cb3c04 docs: clarify comparison with other MT5 MCPs
- Update 'Others' column to acknowledge Windows MT5 Python package
- Clarify MQL5 compilation: others via GUI/terminal, we do headless
- Add 'Report organization' as unique MT5-Quant feature
- Emphasize focus on backtest analytics and workflow management
2026-04-22 08:27:49 +07:00
Devid HW 9a8594426a docs: add crates.io metadata and cargo install instructions
- Add crates.io package metadata (license, keywords, categories)
- Expand 'Why Rust' section with clearer benefits
- Add cargo install option alongside binary download
- Add Acknowledgements and Disclaimer sections
2026-04-22 08:14:59 +07:00
Devid HW cc4b702176 release: v1.31.5
- Version bump 1.31.4 → 1.31.5
- server.json identifier URL updated (SHA256 set by CI after build)
- CHANGELOG.md updated
2026-04-22 07:34:25 +07:00
Devid HWandClaude Sonnet 4.6 e58316e70e feat: add check_update and update tools with background auto-check
On the first tool call of each session, a background task fires once
and fetches the latest release tag from the GitHub API (5 s timeout).
The result is cached in a static OnceLock for the lifetime of the
process — no repeated network calls.

check_update: returns cached result instantly, or fetches on demand
  if the background task hasn't completed yet.

update: downloads the latest tarball for the current platform, extracts
  the binary, and atomically replaces the running executable via a
  temp-file rename. Requires MCP reconnect to activate new version.

Platform support: macos-aarch64, macos-x86_64, linux-x86_64.
Unsupported platforms return a build-from-source hint.

Tool count: 87 → 89. README and MCP_TOOLS.md updated.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 07:34:25 +07:00
Devid HW 6f773d6f09 release: v1.31.4
- Version bump 1.31.3 → 1.31.4
- server.json identifier URL updated (SHA256 set by CI after build)
- CHANGELOG.md updated
2026-04-22 07:24:03 +07:00
Devid HWandClaude Sonnet 4.6 c895eb9b33 fix: update all scripts for correctness and consistency
release.sh:
- Add --yes/-y flag (and CI=true) for non-interactive execution
- Auto-resolve server.json conflict during rebase-before-push so CI's
  SHA256 commit no longer blocks the push
- Fix major version bump (was double-assigned, now single expression)

build-release.sh:
- Remove cp of /CLAUDE.md (gitignored personal file — caused build failure)
- Bundle all IDE setup docs (QUICKSTART, CLAUDE, CURSOR, VSCODE, WINDSURF)
- Use set -euo pipefail; chmod +x binary; clean up dist/ subdir after tar

build-rust.sh:
- Replace Windsurf-specific install hint with generic cargo install --path . --force
- Use set -euo pipefail

setup.sh:
- Replace "Antigravity" with "Claude Desktop" in comments and output

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 07:24:03 +07:00
Devid HW 23a0b7a375 release: v1.31.3
- Version bump 1.31.2 → 1.31.3
- server.json identifier URL updated (SHA256 set by CI after build)
- CHANGELOG.md updated
2026-04-22 07:20:25 +07:00
Devid HWandClaude Sonnet 4.6 ac5ec453d3 docs: clean up public repo — remove IDE files, fix stale refs
- Untrack .claude/commands/ and .windsurf/workflows/ (personal IDE config)
- Fix .gitignore: scope /CLAUDE.md to root only, add .claude/, remove
  incorrect .github/workflows/ exclusion (CI needs these tracked)
- Rename docs/ANTIGRAVITY.md → docs/CLAUDE.md (Claude Desktop setup;
  "Antigravity" was an internal codename, confusing to public users)
- Fix stale repo name: masdevid/mt5-mcp → masdevid/mt5-quant in
  README.md, docs/CLAUDE.md, CURSOR.md, QUICKSTART.md, VSCODE.md, WINDSURF.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 07:20:20 +07:00
Devid HW 262936a1d5 release: v1.31.2
- Version bump 1.31.1 → 1.31.2
- server.json identifier URL updated (SHA256 set by CI after build)
- CHANGELOG.md updated
2026-04-22 07:02:18 +07:00
Devid HWandClaude Sonnet 4.6 0ea1e779e0 refactor: reduce handler boilerplate in analysis and experts modules
analysis.rs: extract required_str, ok_response, err_response, prepare_analysis,
deal_to_json, is_closed_trade helpers — 15 granular handlers reduced from
~14 lines each to 4 lines each (-293 lines total).

experts.rs: extract scan_mql_dir (replaces 6 identical WalkDir loops),
BUILTIN_INDICATORS const (deduplicates list/search handlers), and
copy_mql_to_project (merges copy_indicator/copy_script into one impl,
public handlers delegate in 1 line each) (-256 lines total).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 07:01:58 +07:00
Devid HWandClaude Sonnet 4.6 c7e1a03e1f fix: registryType mcpbPackageType → mcpb
MCP registry API error: 'unsupported registry type: mcpbPackageType'
Schema examples show valid values: npm, pypi, oci, nuget, mcpb

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 06:31:16 +07:00
Devid HWandClaude Sonnet 4.6 5db3c7c822 ci: fix mcp-publisher install — resolve URL from release assets API
v1.6.0 dropped the version number from asset filenames
(mcp-publisher_linux_amd64.tar.gz, not mcp-publisher_1.6.0_linux_amd64.tar.gz).
Look up the linux/amd64 .tar.gz URL directly from the GitHub releases API
instead of constructing it, so future renames don't break the workflow.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 06:27:06 +07:00
Devid HW 7c9eeef1c4 release: v1.31.1
- Version bump 1.31.0 → 1.31.1
- server.json identifier URL updated (SHA256 set by CI after build)
- CHANGELOG.md updated
2026-04-22 06:15:56 +07:00
Devid HWandClaude Sonnet 4.6 20a2d3d6e4 ci: add release automation scripts and workflows
- scripts/release.sh: one-command local release (bump, changelog, tag, push)
- .github/workflows/release.yml: fix SHA256 auto-commit back to master,
  dynamic mcp-publisher version detection, cargo cache, security hardening
- .claude/commands/release.md: /release slash command
- .windsurf/workflows/release.md: streamlined to use release.sh

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 06:15:38 +07:00
Devid HW ec2a22ed30 ci: handle mcp-publisher registryType bug gracefully
- Don't fail workflow if MCP publish fails
- Add clear manual publish instructions
- Reference web UI as alternative
2026-04-22 05:58:09 +07:00
Devid HW 94a8c42e68 fix: update registryType to mcpbPackageType
- The registry expects mcpbPackageType not mcpb
2026-04-22 05:52:20 +07:00
Devid HW 7e97086909 ci: add checkout step to mcp-publish job
- server.json is needed for mcp-publisher to work
2026-04-22 05:44:43 +07:00
Devid HW 7a8a8daeca ci: use GitHub OIDC for MCP authentication
- Replace non-existent --token-stdin with github-oidc method
- Add id-token: write permission for OIDC
- Remove MCP_PUBLISH_TOKEN (not needed with OIDC)
2026-04-22 05:39:46 +07:00
Devid HW ba04405454 ci: fix mcp-publisher download URL
- Change from wrong repo (mcp-publisher) to correct repo (registry)
- Use proper tar.gz format with versioned release URL
- Add tar extraction step
- Update manual install instructions with correct URL
2026-04-22 05:32:55 +07:00
Devid HW e40dbf63cf ci: fix mcp-publisher download with error handling
- Add curl -fsSL to fail on HTTP errors
- Add graceful skip if download fails
- Add manual publish instructions as fallback
2026-04-22 05:28:01 +07:00
Devid HW 0a2e076ad6 ci: rename release artifacts to mcp-mt5-quant-* format
- Change mt5-quant-macos-arm64.tar.gz -> mcp-mt5-quant-macos-arm64.tar.gz
- Change mt5-quant-linux-x64.tar.gz -> mcp-mt5-quant-linux-x64.tar.gz
- Update build-mcp-package job extraction paths
2026-04-22 05:22:02 +07:00
Devid HW 8f71f1629d docs: unify all docs to use single installation path ~/.local/bin/mt5-quant
- Update WINDSURF.md: Use registry name io.github.masdevid/mt5-quant
- Update CURSOR.md: Use ~/.local/bin/mt5-quant path
- Update QUICKSTART.md: Use standard path for all clients
- Update VSCODE.md: Use standard path
- Update setup.sh: Prefer ~/.local/bin/mt5-quant over project path
- Add fallback warning in setup.sh if project path used

Single source of truth: ~/.local/bin/mt5-quant
2026-04-22 05:17:20 +07:00
Devid HW ad17f9dba6 ci: add release-info job with Claude/Windsurf/Cursor commands
- Add final job that displays copy-paste registration commands
- Shows Claude Code, Windsurf, and VS Code/Cursor commands
- Includes release URLs and success banner
2026-04-22 05:07:27 +07:00
Devid HW 33186d276a ci: add automated MCP publishing and client registration docs
- Update release workflow with MCP_PUBLISH_TOKEN for automated publishing
- Remove OIDC requirement (using classic token)
- Add MCP client registration commands for Windsurf, Claude, VS Code/Cursor
- Add verification steps for post-release checking
2026-04-22 05:04:18 +07:00
Devid HW 3927343999 ci: update release workflow for manual triggers and MCP publish
- Add workflow_dispatch with version input for manual releases
- Remove tag-only condition - now works with manual triggers
- Use github.event.inputs.version || github.ref_name for flexibility
- Add MCP package artifact upload
- Add mcp-publish job with OIDC support instructions
2026-04-22 04:57:23 +07:00
Devid HW 6a5253186b ci: add release workflow for automated builds
- Build macOS and Linux binaries
- Create MCP package with SHA256
- Upload to GitHub releases
2026-04-22 04:50:16 +07:00
Devid HW 76dac96583 docs: update release workflow to use single installation path
- Use ~/.local/bin/mt5-quant as single installation location
- Remove redundant project URL references
- Simplify MCP registration for all clients (Claude, Windsurf, VS Code)
2026-04-22 04:48:56 +07:00
Devid HW 0bc410f613 feat: add Wine/MT5 debugging tools and update release workflow
- Add 9 debugging/diagnostics tools for Wine/MT5 crash investigation
- Update server.json with v1.30.0 and MCP package config
- Update README.md with 85 tools count and debugging section
- Update docs/MCP_TOOLS.md documentation
- Enhance release workflow with MCP packaging job
- Clean up mcp-package directory (now built in CI)
2026-04-22 04:41:41 +07:00
Devid HW 9be1296916 fix: shorten server.json description for MCP registry
Description must be <=100 characters for registry validation.
Previous: 96 chars -> Current: 82 chars
2026-04-20 03:04:17 +07:00
Devid HW 63c0470c6b fix: update server.json with real SHA256 and shorten description
- Description: 96 chars (was >100)
- SHA256: calculated from local MCP package build
2026-04-20 02:54:28 +07:00
Devid HW a1434914e9 chore: update release workflow and server.json for v1.30.0
- Update server.json: version 1.30.0, new download URL, updated description
- Add MCP package build job to release workflow
- Add SHA256 calculation for server.json
- Update release workflow to upload mcp-* package
2026-04-20 02:51:36 +07:00
Devid HW 6ce8808948 v1.30.0: Add 10 Wine/MT5 debugging tools
New debugging/diagnostics tools for crash investigation:
- diagnose_wine: Check Wine installation and prefix health
- get_mt5_logs: Get terminal/tester/metaeditor logs
- search_mt5_errors: Search logs for error patterns
- check_mt5_process: Check MT5 process status
- kill_mt5_process: Kill stuck MT5 processes
- check_system_resources: Check disk/memory/CPU
- validate_mt5_config: Validate MT5 configuration
- get_wine_prefix_info: Wine prefix details
- get_backtest_crash_info: Investigate backtest failures

Total tools: 85
Documentation updated in README.md and MCP_TOOLS.md
2026-04-20 02:25:07 +07:00
Devid HW 896aa6111e feat: auto-detect and register MCP on multiple platforms
- Add multi-platform MCP detection (Claude, Windsurf, Cursor, VS Code)
- Auto-unregister previous installations before reinstall
- Create platform-specific docs (CURSOR.md, VSCODE.md, ANTIGRAVITY.md)
- Update Windsurf config to use correct JSON path (~/.codeium/windsurf/mcp_config.json)
- Fix VS Code config format (uses 'servers' not 'mcpServers')
- Remove MT5_MCP_HOME requirement from MCP configs (binary auto-detects)
- Slim down README installation section with platform table
- Update QUICKSTART.md with all platform instructions
2026-04-20 00:40:41 +07:00
DevidandGitHub aab34a1fde Add GitHub Actions workflow for Rust project 2026-04-19 10:16:03 +07:00
Devid HW 96c7e0a9c2 chore: update server.json for v1.29.1 release 2026-04-19 10:10:55 +07:00
Devid HW 0c82501e18 chore: bump version to 1.29.1 2026-04-19 10:10:02 +07:00
Devid HW 2fef0db3c4 fix: wrap tools/list response in {tools: [...]} per MCP spec 2026-04-19 10:07:59 +07:00
Devid HW 95ceef3e3f chore: update Cargo.lock for v1.29.0 2026-04-19 09:54:55 +07:00
Devid HW 662e9e324c chore: update server.json for v1.29.0 release 2026-04-19 09:53:18 +07:00
Devid HW 6d1f940887 chore: bump version to 1.29.0 2026-04-19 09:52:15 +07:00
Devid HW 41c8b36826 fix: handle MCP notifications properly (notifications/initialized)
- Add handle_notification() for notification messages (no id field)
- Use CARGO_PKG_VERSION for dynamic version in initialize response
- Skip serializing None fields in McpResponse and McpError
- Remove verified field from setup info
2026-04-19 09:51:46 +07:00
Devid HW 42318b040a docs: update README with Claude Code and Windsurf MCP installation instructions
- Separate download/setup and MCP registration steps
- Add detailed Claude Code registration with verification
- Add Windsurf config.yaml examples (manual and automated)
- Add absolute path requirement warning note
2026-04-19 09:45:47 +07:00
Devid HWandClaude Sonnet 4.6 fdb45b8eed fix: redirect tracing logs to stderr to keep stdout clean for MCP JSON
tracing_subscriber::fmt::init() defaults to stdout, contaminating the
MCP JSON-RPC stream and causing Claude Code and Windsurf to fail the
initialize handshake with "failed to reconnect".

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 09:21:00 +07:00
Devid HW b63bda64ab chore: Update server.json for v1.28.0 release 2026-04-19 08:49:18 +07:00
Devid HW cbed3d15af docs: update README and MCP_TOOLS.md for 57 tools
README.md:
- Update tool count: 43 → 57
- Add Pre-flight & Validation section with get_active_account, check_symbol_data_status, check_mt5_status, validate_ea_syntax
- Add Project Management section with init_project, create_set_template, export_report
- Add History & Comparison section with get_backtest_history, compare_backtests
- Add Search & Discovery section with search_experts, search_indicators, search_scripts, copy_indicator_to_project, copy_script_to_project

MCP_TOOLS.md:
- Update documentation status: 31 → 49 of 57 tools documented
- Add 8 new utility tool schemas:
  - get_active_account
  - check_symbol_data_status
  - check_mt5_status
  - get_backtest_history
  - compare_backtests
  - init_project
  - validate_ea_syntax
  - create_set_template
  - export_report
- Add workflow examples for pre-flight validation, project management, and history comparison
2026-04-19 08:28:07 +07:00
Devid HWandClaude Sonnet 4.6 8cce92c409 chore: update server.json to v1.28.0 with new release URL and SHA256
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 08:20:43 +07:00
Devid HWandClaude Sonnet 4.6 2b136b845b fix: patch path traversal in export_report and create_set_template (v1.28.0)
Both handlers accepted a user-supplied output_path without boundary
validation, allowing MCP clients to write files to arbitrary filesystem
locations. A new safe_output_path() helper canonicalizes the parent
directory and asserts the resolved path stays within the allowed base
directory before any fs::write() call.

Also fixes pre-existing unused-import/dead-code warnings that blocked
the -D warnings release build.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-19 08:19:45 +07:00
Devid HW d41c51bae4 feat: add get_active_account and 8 new utility tools
High Priority Tools:
- check_symbol_data_status: validate symbol history data availability
- get_backtest_history: list all backtest results for EA/symbol
- compare_backtests: side-by-side comparison of multiple backtests

Medium Priority Tools:
- init_project: scaffold new MQL5 project with templates (scalper/swing/grid)
- validate_ea_syntax: pre-compile syntax checking
- check_mt5_status: check MT5 terminal readiness

Low Priority Tools:
- create_set_template: generate .set files from EA inputs
- export_report: export reports to CSV/JSON/Markdown

Other Changes:
- Consolidate config into src/models/config.rs, delete src/config.rs
- Add CurrentAccount with UTF-16LE parsing for common.ini
- Add BacktestPreflight struct for pre-flight checks
- Update backtest handler with active account context
- Update list_symbols to filter by active server

Total tools: 57
2026-04-19 08:11:17 +07:00
Devid HW eae612df75 chore: update server.json to v1.27.0 with new release URL and SHA256 2026-04-19 06:13:22 +07:00
Devid HW 94eb8927fd fix: 0 warnings build and rename package to mcp-mt5-quant 2026-04-19 06:11:43 +07:00
Devid HW 2104fabe50 fix: correct WINDSURF.md path in build script 2026-04-19 06:09:35 +07:00
Devid HW 51f19640c3 fix: use official MCP schema URL and add VS Code settings for schema validation 2026-04-19 06:07:26 +07:00
Devid HW 1ec0adb6e6 perf: Make auto-verify non-blocking to prevent health check timeout 2026-04-19 06:06:05 +07:00
Devid HW 397f893bfc feat: Auto-verify setup on first initialization
- Add auto_verify_result field to McpServer
- Run verify_setup automatically during initialize
- Include setup status in serverInfo response:
  - verified: bool
  - hint: string message
- Users immediately see if environment is ready
2026-04-19 05:58:16 +07:00
Devid HW fea132e46e chore: Remove .github/workflows from git tracking and add to .gitignore 2026-04-19 04:56:46 +07:00
Devid HW a3705f2aca chore: Remove .windsurf from git tracking (already in .gitignore) 2026-04-19 04:55:21 +07:00
Devid HW 27261db5d0 chore: Add server.json for MCP Registry publishing 2026-04-19 04:53:23 +07:00
Devid HW 52ea278cab refactor: Simplify MQL compiler - stage to /tmp, fix spaces-in-path issue
Changes to src/compile/mql_compiler.rs:
- Stage compilation to /tmp/mt5_compile_{ea}/ to avoid spaces in paths
  (Wine /compile: chokes on spaces in paths like 'Application Support')
- Use bare /log flag - writes log adjacent to source instead of custom path
- Remove host_to_wine_path() conversion - use Unix paths directly
- Simplify MetaEditor invocation (no shell script on Linux)
- Clean up error handling logic

Fixes compilation failures when MT5 is installed in paths containing spaces.
2026-04-19 04:39:40 +07:00
Devid HW 61c5fd4dce docs: Move WINDSURF_SETUP.md to docs/WINDSURF.md
Consistent documentation structure - all docs now in docs/ directory.
- Moved: WINDSURF_SETUP.md → docs/WINDSURF.md
- Updated README.md link
2026-04-19 03:35:05 +07:00
Devid HW 1461d9cd37 docs: Reorganize documentation structure
**README.md** - Slimmed from 548 → 156 lines
- Removed duplicated content now in separate docs
- Links to new focused documentation files
- Quick install + quick start only

**New docs created:**
- docs/QUICKSTART.md - Complete setup guide (macOS/Linux)
- docs/CONFIG.md - Configuration reference with examples
- docs/TROUBLESHOOTING.md - Common issues and solutions

**Existing docs retained:**
- docs/MCP_TOOLS.md - Tool specifications (31/43 documented)
- docs/ARCHITECTURE.md - Design and internals
- docs/REMOTE_AGENTS.md - Linux optimization agents

**Documentation structure:**
2026-04-19 03:33:54 +07:00
Devid HW 5cd31ced90 docs: Add documentation status note to MCP_TOOLS.md
Note that MCP_TOOLS.md documents 31 of 43 total tools.
Missing tool schemas to be added in future update:
- list_experts, list_indicators, list_scripts
- healthcheck
- search_reports, get_latest_report
- 8 granular analytics tools
2026-04-19 03:28:51 +07:00
Devid HW 3f827fd168 docs: Update documentation for modular structure and 43 tools
**README.md:**
- Updated tool count: 28 → 43
- Added granular analytics tools section (8 tools)
- Added list_indicators, list_scripts, healthcheck to Core workflow
- Added get_latest_report, search_reports to Reports section

**docs/ARCHITECTURE.md:**
- Updated file structure from monolithic (definitions.rs, handlers.rs)
  to modular (definitions/, handlers/ with 9 domain submodules)
- Updated tool count: 27 → 43

**WINDSURF_SETUP.md:**
- Cleaned up mixed Indonesian/English text
- 'Deployment ke' → 'Deployment to', 'di' → 'at', 'atau' → 'or'

**CLAUDE.md:** (gitignored template, updated but not committed)
- Updated file structure documentation
- Updated tool count: 27 → 43
- Updated tool development workflow for modular architecture
2026-04-19 03:28:32 +07:00
Devid HW e7c1a33b0d Remove non-functional data export tools
MT5 binaries (MetaEditor64.exe, metatester64.exe, terminal64.exe) are all
GUI applications with no command-line data export capability.

Removed:
- export_ohlc - Cannot read proprietary .hst binary format
- export_ticks - Cannot read proprietary .ticks binary format
- list_available_data - Only scanned directories, didn't export

Total tools: 46 → 43

Alternative for data export:
1. Use MT5 History Center GUI → Export
2. Create MQL5 script using CopyRates()/CopyTicks() → FileWrite
3. Run the MQL5 script inside MT5 terminal
2026-04-19 03:02:02 +07:00
Devid HW 464374f045 Add data export tools for OHLC and tick data
**New Tools:**
- export_ohlc: Export OHLC bar data from MT5 history to CSV/JSON
- export_ticks: Export tick data from MT5 tick database to CSV/JSON
- list_available_data: List available OHLC and tick data in MT5

**Implementation:**
- definitions/data.rs: Tool schemas for data export
- handlers/data.rs: Handlers that scan MT5 directories:
  - history/*.hst files (OHLC)
  - Tester/cache/* (cached data)
  - Bases/* (tick data)
- Provides guidance on how to export since MT5 uses proprietary binary formats
- Includes MQL5 script template for programmatic export

**Note:** MT5 uses proprietary .hst and .ticks binary formats.
Direct export requires MQL5 script using CopyRates()/CopyTicks().
2026-04-19 02:41:49 +07:00
Devid HW bc5d0d7022 Reorganize tool definitions into granular domain modules
**New structure:**
src/tools/definitions/
├── mod.rs         # Aggregates all 43 tools
├── system.rs      # 3 tools: healthcheck, verify_setup, list_symbols
├── experts.rs     # 4 tools: compile_ea, list_experts, list_indicators, list_scripts
├── backtest.rs    # 4 tools: run_backtest, get_backtest_status, cache_status, clean_cache
├── optimization.rs # 4 tools: run_optimization, get_optimization_status, get_optimization_results, list_jobs
├── analytics.rs   # 9 tools: analyze_report + 8 granular analytics
├── reports.rs     # 11 tools: list_reports, search_reports, get_latest_report, etc.
├── setfiles.rs    # 8 tools: read/write/patch/clone/diff set files
└── baseline.rs    # 1 tool: compare_baseline

**Benefits:**
- Domain-based organization (21KB monolith -> 9 focused files)
- Each domain can evolve independently
- Easier to find and modify tool definitions
- Clear separation between system, experts, backtest, optimization, analytics, reports, setfiles
2026-04-19 02:25:25 +07:00
Devid HW 1f63505cb9 Make analytics granular - individual tools + selective analyze_report
**Granular Analytics Tools (8 new tools):**
- analyze_monthly_pnl - Monthly profit/loss breakdown
- analyze_drawdown_events - Drawdown events from balance curve
- analyze_top_losses - Top N worst losses with grid depth
- analyze_loss_sequences - Consecutive loss streaks analysis
- analyze_position_pairs - Entry/exit position pairs
- analyze_direction_bias - Long vs Short performance stats
- analyze_streaks - Win/loss streaks with dates
- analyze_concurrent_peak - Peak concurrent open positions

**Updated analyze_report:**
- Now supports selective analytics via 'analytics' array parameter
- Runs all analytics by default (backward compatible)
- Optional top_losses_limit parameter
- Returns list of analytics that were run

**Changes:**
- analytics/analyze.rs: Made all analysis methods public
- tools/definitions.rs: Added 8 new tool definitions + updated analyze_report schema
- tools/handlers/mod.rs: Added dispatch for new tools
- tools/handlers/analysis.rs: Added helper load_report_data() + 8 granular handlers + selective analyze_report logic
2026-04-19 02:13:33 +07:00
Devid HW e94ec8153d Add get_latest_report tool with equity chart support
**New Tool: get_latest_report**
- Returns the most recent backtest report from the database
- Includes full report details: metrics, paths, tags, notes, verdict
- Optional include_chart parameter (default: true)
- Returns equity chart as base64 PNG when available

**Implementation:**
- ReportDb.get_latest(): Query for most recent report by created_at DESC
- handle_get_latest_report(): Fetches report and reads equity.png from charts_dir
- Base64 encoding using base64 crate v0.22
- Graceful handling when chart not found (equity_chart_error field)

**Files Changed:**
- storage/database.rs: Added get_latest() method
- tools/definitions.rs: Added tool_get_latest_report() definition
- tools/handlers/mod.rs: Added dispatch for get_latest_report
- tools/handlers/reports.rs: Implemented handler with base64 chart encoding
- Cargo.toml: Added base64 = 0.22 dependency
2026-04-19 01:56:41 +07:00
Devid HW 13e821bc5d Add report database and improve compile_ea tool
**Report Database (src/storage/):**
- New SQLite-based report registry for tracking backtest history
- ReportDb with methods: init, list, count, annotate, list_purgeable, delete_entry
- Charts relocation to temp directory with automatic cleanup
- Set file snapshotting alongside extracted data
- Database registration integrated into backtest pipeline

**compile_ea Tool Improvements:**
- Support both 'expert' (EA name) and 'expert_path' (full path) parameters
- Auto-discovery: searches MT5 Experts dir and current directory for .mq5 files
- Better error messages when EA not found
- Added files_synced and warning_list to response
- Updated tool definition to reflect new parameters

**Pipeline Updates:**
- Backtest pipeline now registers results in database after completion
- Equity charts moved to OS temp dir with unique report ID
- HTML reports cleaned up after extraction
- Set file snapshots preserved for reproducibility

**Dependencies:**
- Added rusqlite for SQLite database support
2026-04-19 01:36:07 +07:00
Devid HW 78f287d603 Fix compile error message reporting
- Add fallback error message with log excerpt when .ex5 missing but no errors parsed
- Include raw log excerpt when few errors detected for better debugging
- Ensures users always see actionable error info when compilation fails
2026-04-19 01:18:08 +07:00