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>
- 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
- 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
- Add final job that displays copy-paste registration commands
- Shows Claude Code, Windsurf, and VS Code/Cursor commands
- Includes release URLs and success banner
- 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
- Use ~/.local/bin/mt5-quant as single installation location
- Remove redundant project URL references
- Simplify MCP registration for all clients (Claude, Windsurf, VS Code)
- 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
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>
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>
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
- 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