Skip to main content
Glama
junaidshahid-dev

APEX Research MCP Server

README.md
# APEX Research — MCP Server (FastMCP)

A [Model Context Protocol](https://modelcontextprotocol.io) server that exposes a quantitative
trading-research toolkit as tools an LLM/agent can call. Built in Python with **FastMCP**.

Each tool is a plain typed Python function; FastMCP turns its type hints + docstring into the
JSON schema the model sees. Tools run real computation over real market datasets.

## Tools
| Tool | What it does |
|---|---|
| `list_datasets` | Report which market datasets + live forward-test logs are available |
| `run_orb_backtest(instrument, cost_bps)` | Backtest the opening-range-breakout rule on M15 data; returns expectancy (R), win rate, profit factor, max drawdown |
| `forward_test_report(market)` | Summarise a live forward-test log (n, expectancy, win rate) |
| `search_graveyard(query)` | Search already-rejected hypotheses so an agent doesn't re-test a dead idea |

## Run it
```bash
pip install fastmcp pandas numpy
python mcp_server/apex_mcp.py        # starts the MCP server (stdio transport)
```

## Test it (no external client needed)
```bash
python mcp_server/test_apex_mcp.py   # in-memory FastMCP Client calls every tool
```

## Connect it to an MCP client (e.g. Claude Desktop)
Add to the client's MCP config:
```json
{
  "mcpServers": {
    "apex-research": {
      "command": "python",
      "args": ["C:\\Users\\user\\Desktop\\Apex\\mcp_server\\apex_mcp.py"]
    }
  }
}
```
Then the model can call, e.g. *"backtest the ORB rule on DAX"* and it invokes `run_orb_backtest`.

## What this demonstrates
- Building **MCP servers in Python with FastMCP** (typed tools, auto-generated schemas)
- Clean tool design: clear contracts, input validation, graceful errors
- Local testing of an MCP server with an in-memory client
- Real backend/data work (pandas/numpy over multi-year market data)

*Built by M. Junaid Shahid.*